第四部分:完全分布式安裝
完全布式環(huán)境部署Hadoop
完全分部式是真正利用多臺(tái)Linux主機(jī)來進(jìn)行部署Hadoop坑鱼,對(duì)Linux機(jī)器集群進(jìn)行規(guī)劃寥裂,使得Hadoop各個(gè)模塊分別部署在不同的多臺(tái)機(jī)器上写烤。
一、環(huán)境準(zhǔn)備
1蹂随、 克隆虛擬機(jī)
Vmware左側(cè)選中要克隆的機(jī)器琉预,這里對(duì)原有的hadoop01機(jī)器進(jìn)行克隆,虛擬機(jī)菜單中姐直,選中管理菜單下的克隆命令倦淀。
選擇“創(chuàng)建完整克隆”,虛擬機(jī)名稱為hadoop03声畏,選擇虛擬機(jī)文件保存路徑撞叽,進(jìn)行克隆。
再次克隆一個(gè)名為hadoop04的虛擬機(jī)插龄。
2愿棋、 配置Hostname
BigData02配置hostname為 hadoop03
BigData03配置hostname為 hadoop03
3、 配置hosts
BigData01均牢、BigData02糠雨、BigData03三臺(tái)機(jī)器hosts都配置為:
[hadoop@hadoop01 hadoop]# vim /etc/hosts
192.168.100.10 hadoop01
192.168.100.12 hadoop03
192.168.100.13 hadoop04
4、 配置Windows上的SSH客戶端
在本地Windows中的SSH客戶端上添加對(duì)hadoop03徘跪、hadoop04機(jī)器的SSH鏈接甘邀。
二琅攘、服務(wù)器功能規(guī)劃
hadoop01 | hadoop03 | hadoop04 |
---|
三、在第一臺(tái)機(jī)器上安裝新的Hadoop
為了和之前hadoop01機(jī)器上安裝偽分布式Hadoop區(qū)分開來松邪,我們將hadoop01上的Hadoop服務(wù)都停止掉坞琴,然后在一個(gè)新的目錄/opt/modules/app下安裝另外一個(gè)Hadoop。
我們采用先在第一臺(tái)機(jī)器上解壓测摔、配置Hadoop置济,然后再分發(fā)到其他兩臺(tái)機(jī)器上的方式來安裝集群。
6锋八、 解壓Hadoop目錄:
[hadoop@hadoop01 modules]# tar -zvxf /opt/modules/hadoop-2.5.0.tar.gz
7浙于、 配置Hadoop JDK路徑修改hadoop-env.sh、mapred-env.sh挟纱、yarn-env.sh文件中的JDK路徑:
export JAVA_HOME="/opt/modules/app/jdk1.8"
8羞酗、 配置core-site.xml
[hadoop@hadoop01 hadoop]# vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-senior01.chybinmy.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/app/hadoop-2.5.0/data/tmp</value>
</property>
</configuration>
fs.defaultFS為NameNode的地址。
hadoop.tmp.dir為hadoop臨時(shí)目錄的地址紊服,默認(rèn)情況下檀轨,NameNode和DataNode的數(shù)據(jù)文件都會(huì)存在這個(gè)目錄下的對(duì)應(yīng)子目錄下。應(yīng)該保證此目錄是存在的欺嗤,如果不存在参萄,先創(chuàng)建。
9煎饼、 配置hdfs-site.xml
[hadoop@hadoop01 hadoop]# vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:50090</value>
</property>
</configuration>
dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問地址和端口號(hào)讹挎,因?yàn)樵谝?guī)劃中,我們將BigData03規(guī)劃為SecondaryNameNode服務(wù)器吆玖。
所以這里設(shè)置為:bigdata-senior03.chybinmy.com:50090
10筒溃、 配置slaves
[hadoop@hadoop01 hadoop]# vim etc/hadoop/slaves
hadoop01
hadoop03
hadoop04
slaves文件是指定HDFS上有哪些DataNode節(jié)點(diǎn)。
11沾乘、 配置yarn-site.xml
[hadoop@ hadoop01 hadoop]# vim etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-senior02.chybinmy.com</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
根據(jù)規(guī)劃yarn.resourcemanager.hostname這個(gè)指定resourcemanager服務(wù)器指向bigdata-senior02.chybinmy.com怜奖。
yarn.log-aggregation-enable是配置是否啟用日志聚集功能。
yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多長(zhǎng)時(shí)間翅阵。
12歪玲、 配置mapred-site.xml
從mapred-site.xml.template復(fù)制一個(gè)mapred-site.xml文件。
[hadoop@hadoop01 hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata-senior01.chybinmy.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata-senior01.chybinmy.com:19888</value>
</property>
</configuration>
mapreduce.framework.name設(shè)置mapreduce任務(wù)運(yùn)行在yarn上掷匠。
mapreduce.jobhistory.address是設(shè)置mapreduce的歷史服務(wù)器安裝在BigData01機(jī)器上滥崩。
mapreduce.jobhistory.webapp.address是設(shè)置歷史服務(wù)器的web頁面地址和端口號(hào)。
四槐雾、設(shè)置SSH無密碼登錄
Hadoop集群中的各個(gè)機(jī)器間會(huì)相互地通過SSH訪問夭委,每次訪問都輸入密碼是不現(xiàn)實(shí)的,所以要配置各個(gè)機(jī)器間的
SSH是無密碼登錄的。
1株灸、 在 hadoop01上生成公鑰
[hadoop@ hadoop01 hadoop]# ssh-keygen -t rsa
一路回車崇摄,都設(shè)置為默認(rèn)值,然后再當(dāng)前用戶的Home目錄下的.ssh目錄中會(huì)生成公鑰文件(id_rsa.pub)和私鑰文件(id_rsa)慌烧。
2逐抑、 分發(fā)公鑰
yum -y install openssh-server openssh-clients
[hadoop@ hadoop01 hadoop]# ssh-copy-id hadoop01
[hadoop@ hadoop01 hadoop]# ssh-copy-id hadoop03
[hadoop@ hadoop01 hadoop]# ssh-copy-id hadoop04
3、 設(shè)置hadoop03屹蚊、hadoop04到其他機(jī)器的無密鑰登錄
同樣的在hadoop03厕氨、hadoop04上生成公鑰和私鑰后,將公鑰分發(fā)到三臺(tái)機(jī)器上汹粤。
二十九命斧、分發(fā)Hadoop文件
1、 首先在其他兩臺(tái)機(jī)器上創(chuàng)建存放Hadoop的目錄
[hadoop@hadoop03 ~]# mkdir /opt/modules/app
[hadoop@hadoop04 ~]# mkdir /opt/modules/app
2嘱兼、 通過Scp分發(fā)
Hadoop根目錄下的share/doc目錄是存放的hadoop的文檔国葬,文件相當(dāng)大,建議在分發(fā)之前將這個(gè)目錄刪除掉芹壕,可以節(jié)省硬盤空間并能提高分發(fā)的速度汇四。
doc目錄大小有1.6G。
[hadoop@hadoop01 hadoop]# scp -r /opt/modules/app/hadoop/ hadoop03:/opt/modules/app
[hadoop@hadoop01 hadoop]# scp -r /opt/modules/app/hadoop/ hadoop04:/opt/modules/app
五踢涌、格式NameNode
在NameNode機(jī)器上執(zhí)行格式化:
[hadoop@hadoop01 hadoop]# /opt/modules/app/hadoop/bin/hdfs namenode –format
注意:
如果需要重新格式化NameNode,需要先將原來NameNode和DataNode下的文件全部刪除通孽,不然會(huì)報(bào)錯(cuò),NameNode和DataNode所在目錄是在core-site.xml中hadoop.tmp.dir睁壁、dfs.namenode.name.dir背苦、dfs.datanode.data.dir屬性配置的。
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
因?yàn)槊看胃袷交てВJ(rèn)是創(chuàng)建一個(gè)集群ID糠惫,并寫入NameNode和DataNode的VERSION文件中(VERSION文件所在目錄為dfs/name/current 和 dfs/data/current)疫剃,重新格式化時(shí)钉疫,默認(rèn)會(huì)生成一個(gè)新的集群ID,如果不刪除原來的目錄,會(huì)導(dǎo)致namenode中的VERSION文件中是新的集群ID,而DataNode中是舊的集群ID巢价,不一致時(shí)會(huì)報(bào)錯(cuò)牲阁。
另一種方法是格式化時(shí)指定集群ID參數(shù),指定為舊的集群ID壤躲。
六城菊、啟動(dòng)集群
1、 啟動(dòng)HDFS
[hadoop@hadoop hadoop]# /opt/modules/app/hadoop/sbin/start-dfs.sh
enter image description here
2碉克、 啟動(dòng)YARN
[hadoop@hadoop hadoop]# /opt/modules/app/hadoop/sbin/start-yarn.sh
在hadoop04上啟動(dòng)ResourceManager:
[hadoop@hadoop04 hadoop]# sbin/yarn-daemon.sh start resourcemanager
enter image description here
3凌唬、 啟動(dòng)日志服務(wù)器
因?yàn)槲覀円?guī)劃的是在hadoop04服務(wù)器上運(yùn)行MapReduce日志服務(wù),所以要在hadoop04上啟動(dòng)漏麦。
[hadoop@hadoop04 ~]# /opt/modules/app/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
[hadoop@hadoop04 ~]# jps
3570 Jps
3537 JobHistoryServer
3310 SecondaryNameNode
3213 DataNode
3392 NodeManager
4客税、 查看HDFS Web頁面
http://hadoop01.chybinmy.com:50070/
5况褪、 查看YARN Web 頁面
http://hadoop03:8088/cluster
七、測(cè)試Job
我們這里用hadoop自帶的wordcount例子來在本地模式下測(cè)試跑mapreduce更耻。
1测垛、 準(zhǔn)備mapreduce輸入文件wc.input
[hadoop@hadoop01 modules]# cat /opt/data/wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
2、 在HDFS創(chuàng)建輸入目錄input
[hadoop@hadoop01 hadoop]# bin/hdfs dfs -mkdir /input
3秧均、 將wc.input上傳到HDFS
[hadoop@hadoop01 hadoop]# bin/hdfs dfs -put /opt/data/wc.input /input/wc.input
4食侮、 運(yùn)行hadoop自帶的mapreduce Demo
[hadoop@hadoop01 hadoop]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/wc.input /output
5、 查看輸出文件
[hadoop@hadoop01 hadoop]# bin/hdfs dfs -ls /output
Found 2 items
-rw-r--r-- 3 hadoop supergroup 0 2016-07-14 16:36 /output/_SUCCESS
-rw-r--r-- 3 hadoop supergroup 60 2016-07-14 16:36 /output/part-r-00000