Hadoop 集群搭建
Hadoop 集群搭建
目標(biāo)
在3臺(tái)服務(wù)器上搭建 Hadoop2.7.3 集群,然后測(cè)試驗(yàn)證,要能夠向 HDFS 上傳文件,并成功運(yùn)行 mapreduce 示例程序
?
?
搭建思路
(1)準(zhǔn)備基礎(chǔ)設(shè)施
準(zhǔn)備3臺(tái)服務(wù)器,分別命名為 master、slave1、slave2
互相配置為 SSH 免密碼登錄,并都安裝好 JAVA 環(huán)境
(2)安裝配置 hadoop
在 master 上下載解壓 hadoop,修改相應(yīng)配置文件,包括:
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves
配置文件比較多,但也比較好理解
core-site.xml?是核心配置,需要為 hadoop 指定基本配置信息
hdfs 和 mapreduce 是核心構(gòu)成,自然要配置相應(yīng)的?hdfs-site.xml?和?mapred-site.xml
mapreduce 用到了?yarn?框架,所以也要設(shè)置對(duì)應(yīng)的配置文件?yarn-site.xml
還需要在?slaves?中添加從節(jié)點(diǎn)的IP
配置完成后,把 master 上的 hadoop 目錄復(fù)制到 slave1 slave2
(3)啟動(dòng) hadoop
在 master 中進(jìn)行 hdfs 初始化,執(zhí)行啟動(dòng)命令,打開(kāi)相應(yīng)網(wǎng)頁(yè)查看狀態(tài)信息
搭建過(guò)程
?
-
準(zhǔn)備基礎(chǔ)設(shè)施
(1)為3臺(tái)服務(wù)器設(shè)置名稱(chēng)
修改每臺(tái)服務(wù)器的 /etc/hosts,添加
192.168.31.164 master
192.168.31.242 slave1
192.168.31.140 slave2
(改為自己服務(wù)器的IP)
(2)SSH無(wú)密碼登陸
在每臺(tái)服務(wù)器上都執(zhí)行以下命令
$ ssh-keygen
(執(zhí)行后會(huì)有多個(gè)輸入提示,不用輸入任何內(nèi)容,全部直接回車(chē)即可)
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@master
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@slave1
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@slave2
?
注:JAVA環(huán)境的安裝配置沒(méi)做介紹,請(qǐng)自己準(zhǔn)備好
?
?
-
安裝配置 hadoop
(1)安裝
在 master 中執(zhí)行
$ cd /home
$ wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
$ tar -xzf hadoop-2.7.3.tar.gz
$ mv hadoop-2.7.3 hadoop
$ cd hadoop
$ mkdir tmp hdfs
$ mkdir hdfs/data hdfs/name
(2)配置
在 master 中執(zhí)行
修改 /home/hadoop/etc/hadoop/core-site.xml
在 <configuration> 塊兒中添加:
??? <property>
??????? <name>fs.defaultFS</name>
??????? <value>hdfs://master:9000</value>
??? </property>
??? <property>
??????? <name>hadoop.tmp.dir</name>
??????? <value>file:/home/hadoop/tmp</value>
??? </property>
??? <property>
??????? <name>io.file.buffer.size</name>
??????? <value>131702</value>
??? </property>
修改 /home/hadoop/etc/hadoop/hdfs-site.xml
在 <configuration> 塊兒中添加:
??? <property>
??????? <name>dfs.namenode.name.dir</name>
??????? <value>file:/home/hadoop/hdfs/name</value>
??? </property>
??? <property>
??????? <name>dfs.datanode.data.dir</name>
??????? <value>file:/home/hadoop/hdfs/data</value>
??? </property>
??? <property>
??????? <name>dfs.replication</name>
??????? <value>2</value>
??? </property>
??? <property>
??????? <name>dfs.namenode.secondary.http-address</name>
??????? <value>master:9001</value>
??? </property>
??? <property>
?? ??? ?<name>dfs.webhdfs.enabled</name>
?? ??? ?<value>true</value>
??? </property>
修改 /home/hadoop/etc/hadoop/mapred-site.xml
這個(gè)文件默認(rèn)不存在,需要從 mapred-site.xml.template 復(fù)制過(guò)來(lái)
$ cp mapred-site.xml.template mapred-site.xml
在 <configuration> 塊兒中添加:
??? <property>
??????? <name>mapreduce.framework.name</name>
??????? <value>yarn</value>
??? </property>
??? <property>
??????? <name>mapreduce.jobhistory.address</name>
??????? <value>master:10020</value>
??? </property>
??? <property>
??????? <name>mapreduce.jobhistory.webapp.address</name>
??????? <value>master:19888</value>
??? </property>
修改 /home/hadoop/etc/hadoop/yarn-site.xml
在 <configuration> 塊兒中添加:
??? <property>
??????? <name>yarn.nodemanager.aux-services</name>
??????? <value>mapreduce_shuffle</value>
??? </property>
??? <property>
??????? <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
??????? <value>org.apache.hadoop.mapred.ShuffleHandler</value>
??? </property>
??? <property>
??????? <name>yarn.resourcemanager.address</name>
??????? <value>master:8032</value>
??? </property>
??? <property>
??????? <name>yarn.resourcemanager.scheduler.address</name>
??????? <value>master:8030</value>
??? </property>
??? <property>
??????? <name>yarn.resourcemanager.resource-tracker.address</name>
??????? <value>master:8031</value>
??? </property>
??? <property>
??????? <name>yarn.resourcemanager.admin.address</name>
??????? <value>master:8033</value>
??? </property>
??? <property>
??????? <name>yarn.resourcemanager.webapp.address</name>
??????? <value>master:8088</value>
??? </property>
修改 /home/hadoop/etc/hadoop/slaves
刪除已有內(nèi)容,添加:
slave1
slave2
修改 /home/hadoop/etc/hadoop/hadoop-env.sh
找到 export JAVA_HOME=${JAVA_HOME},改為自己JAVA_HOME的絕對(duì)路徑
?
(3)復(fù)制 hadoop 到 slave1,slave2
在 master 上執(zhí)行
$ scp -r /home/hadoop slave1:/home
$ scp -r /home/hadoop slave2:/home
注意:如果各臺(tái)服務(wù)器中JAVA_HOME位置不同,記得對(duì) hadoop-env.sh 進(jìn)行相應(yīng)修改
(4)設(shè)置 hadoop 環(huán)境變量
在每臺(tái)服務(wù)器上都執(zhí)行:
$ vim ~/.bashrc
添加:
export PATH=$PATH:/home/hadoop/bin:/home/hadoop/sbin
保存退出
$ source ~/.bashrc
?
-
啟動(dòng) hadoop
在master啟動(dòng)hadoop,從節(jié)點(diǎn)會(huì)自動(dòng)啟動(dòng)
初始化
$ hdfs namenode -format
啟動(dòng)
$ hadoop-daemon.sh start namenode
$ hadoop-daemon.sh start datanode
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
檢查
查看狀態(tài),在3臺(tái)服務(wù)器上分別執(zhí)行
$ jps
?
?
瀏覽器中訪(fǎng)問(wèn):
http://master ip:50070/
http://master ip:8088/
可以正常訪(fǎng)問(wèn)的話(huà),可以說(shuō)明集群?jiǎn)?dòng)成功了,但不一定可以正常運(yùn)行,還需要下面的實(shí)際驗(yàn)證
?
測(cè)試驗(yàn)證
(1)hdfs 操作
創(chuàng)建目錄
$ hdfs dfs -mkdir -p /user/hadoop/input
上傳文件,把現(xiàn)有的一些配置文件上傳到剛剛創(chuàng)建的目錄中
$ hdfs dfs -put /home/hadoop/etc/hadoop/kms*.xml /user/hadoop/input
如果沒(méi)有返回錯(cuò)誤信息,說(shuō)明操作成功
訪(fǎng)問(wèn) http://master ip:50070/,在文件瀏覽頁(yè)面查看
(2)mapreduce 操作
hadoop 安裝包中提供了一個(gè)示例程序,我們可以使用它對(duì)剛剛上傳的文件進(jìn)行測(cè)試
$ hadoop jar /home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'
?
注:在執(zhí)行過(guò)程中,如果長(zhǎng)時(shí)間處于 running 狀態(tài)不動(dòng),雖然沒(méi)有報(bào)錯(cuò),但實(shí)際上是出錯(cuò)了,后臺(tái)在不斷重試,需要到 logs 目錄下查看日志文件中的錯(cuò)誤信息
?
?
環(huán)境搭建完成,內(nèi)容較長(zhǎng),感謝閱讀,希望對(duì)想要搭建hadoop環(huán)境的朋友有點(diǎn)幫助
轉(zhuǎn)載于:https://www.cnblogs.com/jun1019/p/6260540.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop 集群搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序、进程、线程和任务之间关系
- 下一篇: 基本图的算法