Hadoop2.7.3+Spark2.1.0 完全分布式環(huán)境 搭建全過(guò)程
www.cnblogs.com/purstar/p/6293605.html
一、修改hosts文件
在主節(jié)點(diǎn)搓蚪,就是第一臺(tái)主機(jī)的命令行下;
vim /etc/profile
我的是三臺(tái)云主機(jī):
在原文件的基礎(chǔ)上加上;
ip1 master worker0 namenode
ip2 worker1 datanode1
ip3 worker2 datanode2
其中的ipN代表一個(gè)可用的集群IP服球,ip1為master的主節(jié)點(diǎn)行疏,ip2和iip3為從節(jié)點(diǎn)役耕。
二贸铜、ssh互信(免密碼登錄)
注意我這里配置的是root用戶秽五,所以以下的家目錄是/root
如果你配置的是用戶是xxxx孽查,那么家目錄應(yīng)該是/home/xxxxx/
#在主節(jié)點(diǎn)執(zhí)行下面的命令:
ssh-keygen-t rsa -P''#一路回車直到生成公鑰
scp/root/.ssh/id_rsa.pub root@worker1:/root/.ssh/id_rsa.pub.master #從master節(jié)點(diǎn)拷貝id_rsa.pub到worker主機(jī)上,并且改名為id_rsa.pub.masterscp/root/.ssh/id_rsa.pub root@worker1:/root/.ssh/id_rsa.pub.master #同上,以后使用workerN代表worker1和worker2.
scp/etc/hosts root@workerN:/etc/hosts? #統(tǒng)一hosts文件坦喘,讓幾個(gè)主機(jī)能通過(guò)host名字來(lái)識(shí)別彼此
#在對(duì)應(yīng)的主機(jī)下執(zhí)行如下命令:cat/root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #master主機(jī)cat/root/.ssh/id_rsa.pub.master >> /root/.ssh/authorized_keys #workerN主機(jī)
這樣master主機(jī)就可以無(wú)密碼登錄到其他主機(jī)盲再,這樣子在運(yùn)行master上的啟動(dòng)腳本時(shí)和使用scp命令時(shí)候西设,就可以不用輸入密碼了。
三答朋、安裝基礎(chǔ)環(huán)境(JAVA和SCALA環(huán)境)
1.Java1.8環(huán)境搭建:
配置master的java環(huán)境
#下載jdk1.8的rpm包
wget--no-check-certificate --no-cookies --header"Cookie: oraclelicense=accept-securebackup-cookie"http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpmrpm -ivh jdk-8u112-linux-x64.rpm
#增加JAVA_HOME
vim etc/profile
#增加如下行:#Java homeexport JAVA_HOME=/usr/java/jdk1.8.0_112/
#刷新配置:
source /etc/profile #當(dāng)然reboot也是可以的
配置workerN主機(jī)的java環(huán)境
#使用scp命令進(jìn)行拷貝scpjdk-8u112-linux-x64.rpm root@workerN:/root
#其他的步驟如master節(jié)點(diǎn)配置一樣
2.Scala2.12.1環(huán)境搭建:
Master節(jié)點(diǎn):
#下載scala安裝包:wget-O"scala-2.12.1.rpm""http://159.226.251.229/videoplayer/scala-2.12.1.rpm?ich_u_r_i=e43f9cc87710b8bba72b4c32577f60ea&ich_s_t_a_r_t=0&ich_e_n_d=0&ich_k_e_y=1745018917750263442428&ich_t_y_p_e=1&ich_d_i_s_k_i_d=1&ich_u_n_i_t=1"
#安裝rpm包:rpm-ivh scala-2.12.1.rpm
#增加SCALA_HOMEvim/etc/profile
#增加如下內(nèi)容;#Scala Homeexport SCALA_HOME=/usr/share/scala
#刷新配置
source/etc/profile
WorkerN節(jié)點(diǎn);
#使用scp命令進(jìn)行拷貝scpscala-2.12.1.rpm root@workerN:/root
#其他的步驟如master節(jié)點(diǎn)配置一樣
四贷揽、Hadoop2.7.3完全分布式搭建
MASTER節(jié)點(diǎn):
1.下載二進(jìn)制包:
wgethttp://www-eu.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
2.解壓并移動(dòng)至相應(yīng)目錄
我的習(xí)慣是將軟件放置/opt目錄下:
tar-xvf hadoop-2.7.3.tar.gzmvhadoop-2.7.3/opt
3.修改相應(yīng)的配置文件:
(1)/etc/profile:
增加如下內(nèi)容:
#hadoop enviroment
export HADOOP_HOME=/opt/hadoop-2.7.3/export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
(2)$HADOOP_HOME/etc/hadoop/hadoop-env.sh
修改JAVA_HOME 如下:
export JAVA_HOME=/usr/java/jdk1.8.0_112/
(3)$HADOOP_HOME/etc/hadoop/slaves
worker1
worker2
(4)$HADOOP_HOME/etc/hadoop/core-site.xml
? ? ? ? ? ? ? ? ? ? ? ? fs.defaultFS? ? ? ? ? ? ? ? hdfs://master:9000? ? ? ? ? ? ? ? io.file.buffer.size? ? ? ? 131072? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hadoop.tmp.dir? ? ? ? ? ? ? ? /opt/hadoop-2.7.3/tmp? ? ? ?
(5)$HADOOP_HOME/etc/hadoop/hdfs-site.xml
? ? ? ? ? dfs.namenode.secondary.http-address? ? ? master:50090? ? ? ? ? ? ? dfs.replication? ? ? 2? ? ? ? ? ? ? dfs.namenode.name.dir? ? ? file:/opt/hadoop-2.7.3/hdfs/name? ? ? ? ? ? ? dfs.datanode.data.dir? ? ? file:/opt/hadoop-2.7.3/hdfs/data? ?
(6)$HADOOP_HOME/etc/hadoop/mapred-site.xml
復(fù)制template,生成xml:
cpmapred-site.xml.template mapred-site.xml
內(nèi)容:
? ? mapreduce.framework.name? ? yarn? ? ? ? ? ? ? mapreduce.jobhistory.address? ? ? ? ? master:10020? ? ? ? ? ? ? mapreduce.jobhistory.address? ? ? ? ? master:19888?
(7)$HADOOP_HOME/etc/hadoop/yarn-site.xml
? ? ? ? ? ? ? ? ? yarn.nodemanager.aux-services? ? ? ? ? mapreduce_shuffle? ? ? ? ? ? ? ? ? yarn.resourcemanager.address? ? ? ? ? master:8032? ? ? ? ? ? ? ? ? yarn.resourcemanager.scheduler.address? ? ? ? ? master:8030? ? ? ? ? ? ? ? ? yarn.resourcemanager.resource-tracker.address? ? ? ? master:8031? ? ? ? ? ? ? ? yarn.resourcemanager.admin.address? ? ? ? master:8033? ? ? ? ? ? ? ? yarn.resourcemanager.webapp.address? ? ? ? master:8088? ?
至此master節(jié)點(diǎn)的hadoop搭建完畢
再啟動(dòng)之前我們需要
格式化一下namenode
hadoop namenode -format
WorkerN節(jié)點(diǎn):
(1)復(fù)制master節(jié)點(diǎn)的hadoop文件夾到worker上:
scp-r /opt/hadoop-2.7.3root@wokerN:/opt #注意這里的N要改為1或者2
(2)修改/etc/profile:
過(guò)程如master一樣
五梦碗、Spark2.1.0完全分布式環(huán)境搭建:
MASTER節(jié)點(diǎn):
1.下載文件:
wget-O"spark-2.1.0-bin-hadoop2.7.tgz""http://159.226.251.230/videoplayer/spark-2.1.0-bin-hadoop2.7.tgz?ich_u_r_i=8d258cfd6421af60c998d108eae1ca4d&ich_s_t_a_r_t=0&ich_e_n_d=0&ich_k_e_y=1745018916751063032407&ich_t_y_p_e=1&ich_d_i_s_k_i_d=7&ich_u_n_i_t=1"
2.解壓并移動(dòng)至相應(yīng)的文件夾;
tar-xvf spark-2.1.0-bin-hadoop2.7.tgzmvspark-2.1.0-bin-hadoop2.7/opt
3.修改相應(yīng)的配置文件:
(1)/etc/profie
#Spark enviroment
export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7/export PATH="$SPARK_HOME/bin:$PATH"
(2)$SPARK_HOME/conf/spark-env.sh
cpspark-env.sh.template spark-env.sh
#配置內(nèi)容如下:
export SCALA_HOME=/usr/share/scala
export JAVA_HOME=/usr/java/jdk1.8.0_112/export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
(3)$SPARK_HOME/conf/slaves
cpslaves.template slaves
配置內(nèi)容如下
master
worker1
worker2
WorkerN節(jié)點(diǎn):
將配置好的spark文件復(fù)制到workerN節(jié)點(diǎn)
scpspark-2.1.0-bin-hadoop2.7root@workerN:/opt
修改/etc/profile禽绪,增加spark相關(guān)的配置,如MASTER節(jié)點(diǎn)一樣
六洪规、啟動(dòng)集群的腳本
啟動(dòng)集群腳本start-cluster.sh如下:
#!/bin/bashecho-e"\033[31m ========Start The Cluster======== \033[0m"echo-e"\033[31m Starting Hadoop Now !!! \033[0m"/opt/hadoop-2.7.3/sbin/start-all.shecho-e"\033[31m Starting Spark Now !!! \033[0m"/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.shecho-e"\033[31m The Result Of The Command \"jps\" :? \033[0m"jpsecho-e"\033[31m ========END======== \033[0m"
截圖如下:
關(guān)閉集群腳本stop-cluser.sh如下:
#!/bin/bashecho-e"\033[31m ===== Stoping The Cluster ====== \033[0m"echo-e"\033[31m Stoping Spark Now !!! \033[0m"/opt/spark-2.1.0-bin-hadoop2.7/sbin/stop-all.shecho-e"\033[31m Stopting Hadoop Now !!! \033[0m"/opt/hadoop-2.7.3/sbin/stop-all.shecho-e"\033[31m The Result Of The Command \"jps\" :? \033[0m"jpsecho-e"\033[31m ======END======== \033[0m"
截圖如下:
七印屁、測(cè)試一下集群:
這里我都用最簡(jiǎn)單最常用的Wordcount來(lái)測(cè)試好了!
1.測(cè)試hadoop
測(cè)試的源文件的內(nèi)容為:
Hello hadoop
hello spark
hello bigdata
然后執(zhí)行下列命令:
hadoop fs -mkdir-p /Hadoop/Input
hadoop fs-put wordcount.txt /Hadoop/Input
hadoop jar/opt/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /Hadoop/Input /Hadoop/Output
等待mapreduce執(zhí)行完畢后斩例,查看結(jié)果;
hadoop fs -cat/Hadoop/Output/*
hadoop集群搭建成功雄人!
2.測(cè)試spark
為了避免麻煩這里我們使用spark-shell,做一個(gè)簡(jiǎn)單的worcount的測(cè)試
用于在測(cè)試hadoop的時(shí)候我們已經(jīng)在hdfs上存儲(chǔ)了測(cè)試的源文件念赶,下面就是直接拿來(lái)用就好了础钠!
spark-shell
valfile=sc.textFile("hdfs://master:9000/Hadoop/Input/wordcount.txt")
val rdd=file.flatMap(line => line.split("")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
退出的話使用如下命令:
:quit