Hadoop 集群搭建
Hadoop 集群搭建
目標(biāo)
在3臺服務(wù)器上搭建 Hadoop2.7.3 集群,然后測試驗證,要能夠向 HDFS 上傳文件,并成功運行 mapreduce 示例程序
?
?
搭建思路
(1)準(zhǔn)備基礎(chǔ)設(shè)施
準(zhǔn)備3臺服務(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è)置對應(yīng)的配置文件?yarn-site.xml
還需要在?slaves?中添加從節(jié)點的IP
配置完成后,把 master 上的 hadoop 目錄復(fù)制到 slave1 slave2
(3)啟動 hadoop
在 master 中進(jìn)行 hdfs 初始化,執(zhí)行啟動命令,打開相應(yīng)網(wǎng)頁查看狀態(tài)信息
搭建過程
?
-
準(zhǔn)備基礎(chǔ)設(shè)施
(1)為3臺服務(wù)器設(shè)置名稱
修改每臺服務(wù)器的 /etc/hosts,添加
192.168.31.164 master
192.168.31.242 slave1
192.168.31.140 slave2
(改為自己服務(wù)器的IP)
(2)SSH無密碼登陸
在每臺服務(wù)器上都執(zhí)行以下命令
$ ssh-keygen
(執(zhí)行后會有多個輸入提示,不用輸入任何內(nèi)容,全部直接回車即可)
$ 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)境的安裝配置沒做介紹,請自己準(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
這個文件默認(rèn)不存在,需要從 mapred-site.xml.template 復(fù)制過來
$ 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的絕對路徑
?
(3)復(fù)制 hadoop 到 slave1,slave2
在 master 上執(zhí)行
$ scp -r /home/hadoop slave1:/home
$ scp -r /home/hadoop slave2:/home
注意:如果各臺服務(wù)器中JAVA_HOME位置不同,記得對 hadoop-env.sh 進(jìn)行相應(yīng)修改
(4)設(shè)置 hadoop 環(huán)境變量
在每臺服務(wù)器上都執(zhí)行:
$ vim ~/.bashrc
添加:
export PATH=$PATH:/home/hadoop/bin:/home/hadoop/sbin
保存退出
$ source ~/.bashrc
?
-
啟動 hadoop
在master啟動hadoop,從節(jié)點會自動啟動
初始化
$ hdfs namenode -format
啟動
$ 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臺服務(wù)器上分別執(zhí)行
$ jps
?
?
瀏覽器中訪問:
http://master ip:50070/
http://master ip:8088/
可以正常訪問的話,可以說明集群啟動成功了,但不一定可以正常運行,還需要下面的實際驗證
?
測試驗證
(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
如果沒有返回錯誤信息,說明操作成功
訪問 http://master ip:50070/,在文件瀏覽頁面查看
(2)mapreduce 操作
hadoop 安裝包中提供了一個示例程序,我們可以使用它對剛剛上傳的文件進(jìn)行測試
$ 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í)行過程中,如果長時間處于 running 狀態(tài)不動,雖然沒有報錯,但實際上是出錯了,后臺在不斷重試,需要到 logs 目錄下查看日志文件中的錯誤信息
?
?
環(huán)境搭建完成,內(nèi)容較長,感謝閱讀,希望對想要搭建hadoop環(huán)境的朋友有點幫助
轉(zhuǎn)載于:https://www.cnblogs.com/jun1019/p/6260540.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop 集群搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序、进程、线程和任务之间关系
- 下一篇: 基本图的算法