上文鏈接
13. apache hadoop 4臺分布式集群搭建-part1
下載程序并解壓:
cd /app/zpy
wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.6.2/hadoop-2.6.2.tar.gz
tar zxvf hadoop-2.6.2.tar.gz
mv hadoop-2.6.2 hadoop
chown -R hadoop:hadoop /app/zpy/hadoop
配置環(huán)境變量
vim /etc/profile.d/hadoop.sh
添加
export HADOOP_PRIFIX=/app/zpy/hadoop
export PATH=$PATH:${HADOOP_PRIFIX}/bin:${HADOOP_PRIFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PRIFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PRIFIX}
export HADOOP_COMMON_HOME=${HADOOP_PRIFIX}
export HADOOP_HDFS_HOME=${HADOOP_PRIFIX}
master 節(jié)點的配置
core-site.xml 文件配置
cd /app/zpy/hadoop/etc/hadoop
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://test001.zipeiyi.corp:8020</value>
<final>true</final>
</property>
</configuration>
hdfs-site.xml配置
把數(shù)值的1改為3
使用三份副本會有一個問題,你的磁盤空間只會有三分之一使用率
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/dn</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
配置:mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml配置
vim 全局替換: :%s/源字符串/目的字符串/g
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>test001.zipeiyi.corp:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>test001.zipeiyi.corp:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>test001.zipeiyi.corp:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>test001.zipeiyi.corp:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>test001.zipeiyi.corp:8088</value>
</property>
<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.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<description>Amount of physical memory, in MB, that can be allocated
for containers.</description>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>31920</value>
</property>
<property>
<description>vcores for nodemanager</description>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>15</value>
</property>
</configuration>
yarn.nodemanager.resource.memory-mb參數(shù)的作用:

圖片.png
yarn.nodemanager.resource.cpu-vcores參數(shù)的作用:

圖片.png
編輯slave文件:
vim slaves 添加如下:
test002.zipeiyi.corp
test003.zipeiyi.corp
test004.zipeiyi.corp
slave節(jié)點的配置
197 與 198 199 的配置與master 196一樣:
在主節(jié)點上使用hadoop用戶復(fù)制
su hadoop
scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.197:/app/zpy/hadoop/etc/hadoop/
scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.198:/app/zpy/hadoop/etc/hadoop/
scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.199:/app/zpy/hadoop/etc/hadoop/
格式化HDFS
與偽分布式模式相同,在HDFS集群的NN啟動之前需要先初始化其用于存儲數(shù)據(jù)的目錄
如果hdfs-site.xml中的dfs.namenode.name.dir 屬性指定的目錄不存在,格式化命令會自動創(chuàng)建;
如果事先存在,請確保其權(quán)限設(shè)置正確,此時格式化操作會清除其內(nèi)部所有數(shù)據(jù)并重新建立一個新的文件系統(tǒng)。
在所有機器上執(zhí)行:
chown -R hadoop:hadoop /data/hadoop
chown -R hadoop:hadoop /app/zpy/hadoop
只在主節(jié)點執(zhí)行:
以hadoop用戶執(zhí)行:hdfs namenode -format
看格式化是否成功,應(yīng)該找到這樣一句話
17/04/17 10:07:17INFO common.Storage: Storage directory /data/hadoop/hdfs/nn has beensuccessfully formatted.
對比主節(jié)點與從節(jié)點的目錄:
/data/hadoop/hdfs/nn/
發(fā)現(xiàn)主節(jié)點的才有數(shù)據(jù)
啟動hadoop進程的兩種方式(現(xiàn)在不做這個操作,后面做)
啟動hadoop集群的方法有兩種:
一是在各節(jié)點分別啟動需要啟動的服務(wù)
二是在master節(jié)點啟動整個集群
第一種方式分別啟動
master節(jié)點需要啟動
Namenode與snn服務(wù)以及Resourcemanager服務(wù)
hadoop-daemon.sh(start|stop)namenode
hadoop-daemon.sh(start|stop)secondarynamenode
yarn-daemon.sh(start|stop)resourcemanager
各slave節(jié)點需要分別啟動HDFS的DataNode服務(wù),以及YARN的NodeManager服務(wù)
hadoop-daemon.sh(start|stop)datanode
yarn-daemon.sh(start|stop)nodemanager
第二種方式:在master節(jié)點啟動整個集群(現(xiàn)在不做這個操作,后面做)
cd /app/zpy/hadoop/sbin
su hadoop
start-dfs.sh
start-yarn.sh
ps: 較早的版本會提供start-all.sh 和stop-all.sh 腳本來統(tǒng)一控制hdfs與mapreduce,但hadoop2.0及之后的方式不再建議使用此方式
JAVA的配置
如果你的java并非按照標準路徑配置,強烈建議你啟動前修改
vim /app/zpy/hadoop/etc/hadoop/hadoop-env.sh
關(guān)于java的路徑修改為絕對路徑,不然啟動會有錯誤
如下:
export JAVA_HOME=/app/zpy/java/jdk1.8.0_51
其他小細節(jié)
vim /etc/ssh/ssh_config
修改
# StrictHostKeyChecking ask
去掉#號,然后修改如下:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
一條命令修改:
sed -i "s?# StrictHostKeyChecking ask?StrictHostKeyChecking no \n UserKnownHostsFile /dev/null ?g" /etc/ssh/ssh_config
chown -R hadoop:hadoop /data/hadoop
chown -R hadoop:hadoop /app/zpy/hadoop
chmod -R 700 /app/zpy/hadoop/logs/
啟動hadoop集群之HDFS(只在主節(jié)點啟動)
su hadoop
cd /app/zpy/hadoop/sbin/
start-dfs.sh
關(guān)閉:stop-dfs.sh
[hadoop@hadoop-nn01hadoop]$ start-dfs.sh
啟動完畢后使用jps命令檢查其余機器看是否已經(jīng)啟動相關(guān)角色
上傳一個大于64M的文件
1)hdfs dfs -mkdir /test
2)hdfs dfs -put /opt/mysql-bin.001477 /test
3)hdfs dfs -ls -R /test
-rw-r--r-- 3 hadoop supergroup 295394121 2017-04-19 10:13 /test/mysql-bin.001477
4)我們?nèi)ト_datanode服務(wù)器上去找一下我們真正的數(shù)據(jù)
第一臺:
/data/hadoop/hdfs/dn/current/BP-1509373726-10.0.140.78-1492505099380/current/finalized/subdir0/subdir0
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741825_1001.meta
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741826_1002.meta
-rw-rw-r-- 1 hadoop hadoop 26958665 Apr 19 10:13 blk_1073741827
-rw-rw-r-- 1 hadoop hadoop 210623 Apr 19 10:13 blk_1073741827_1003.meta
more blk_1073741825_1001.meta 可以明顯看出就是log-bin的數(shù)據(jù)
第二臺:
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741825_1001.meta
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741826_1002.meta
-rw-rw-r-- 1 hadoop hadoop 26958665 Apr 19 10:13 blk_1073741827
-rw-rw-r-- 1 hadoop hadoop 210623 Apr 19 10:13 blk_1073741827_1003.meta
第三臺:
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741825_1001.meta
-rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
-rw-rw-r-- 1 hadoop hadoop 1048583 Apr 19 10:13 blk_1073741826_1002.meta
-rw-rw-r-- 1 hadoop hadoop 26958665 Apr 19 10:13 blk_1073741827
-rw-rw-r-- 1 hadoop hadoop 210623 Apr 19 10:13 blk_1073741827_1003.meta
因為我們在配置文件hdfs-site.xml中做了如下定義:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
啟動hadoop集群之yarn(主節(jié)點啟動)
su hadoop
cd /app/zpy/hadoop/sbin/
start-yarn.sh
使用jps命令觀察角色
主節(jié)點增加ResourceManager
從節(jié)點增加NodeManager
WEBUI監(jiān)控
HDFS和YARN ResourceManager 各自提供了一個web接口,通過這些接口可以檢查HDFS集群以及YARN集群的相關(guān)狀態(tài)信息。
他們的訪問接口分別為如下所示,具體使用中,需要將Namenode和RresourceManagerHost分別修改其相應(yīng)的主機地址
HDFS-NameNode:http://10.0.140.78:50070
ResourceManager的web界面:http://10.0.140.78:8088

HDFS WEBUI

YARN WEBUI
如何向hadoop提交程序并運行?
ok,現(xiàn)在我們HDFS搭建完畢了,YARN也搭建完畢了,現(xiàn)在我們想在YARN上跑一個mapreduce程序。
我又不會寫map和reduce程序,hadoop為我們提供了測試包
hadoop-YARN 自帶了很多樣例程序,他們位于hadoop安裝路徑下的
share/hadoop/mapreduce/目錄里,其中hadoop-mapreduce-examples-2.6.2.jar
就可以作為mapreduce的程序測試!
yarn jar hadoop-mapreduce-examples-2.6.2.jar ,可以看出好多選項
[hadoop@localhostmapreduce]$ yarn jar hadoop-mapreduce-examples-2.6.2.jar wordcount
Usage: wordcount<in> [<in>...] <out>
備注:out是目錄,in 和 out都是HDFS文件
ok,那我們再修改一下:
yarn jar hadoop-mapreduce-examples-2.6.2.jar wordcount /test/mysql-bin.001477 /test/2
運行的時候 查看web界面application項
http://10.0.140.78:8088,可以看到正在運行的application
看下結(jié)果:
hdfs dfs -lsr/test
hdfs dfs -cat /test/2/part-r-00000
至此我們APACHE HADOOP 4臺服務(wù)器集群已經(jīng)搭建完畢了。
博主正在做一個500臺 CDH HADOOP集群的項目,關(guān)于更多spark、HIVE、YARN 的更多用法會在下面CDH相關(guān)文章內(nèi)進行詳細介紹