一、在僞分佈式基礎上搭建,僞分佈式搭建參見VM上Hadoop3.1僞分佈式模式搭建html
二、虛擬機準備,本次集羣採用2.8.3版本與3.X版本差異不大,端口號全部差異java
192.168.44.10 vmhome10.com 192.168.44.11 vmhome11.com 192.168.44.12 vmhome12.com
三、關閉防火牆,由於須要打開的端口太多,測試的環境,爲了不干擾先關閉防火牆node
systemctl stop firewalld
四、三臺虛機之間打開ssh免密登陸,帳戶hadoopweb
ssh-keygen -t rsa 生產密鑰 ssh-copy-id 192.168.44.10 發佈密鑰
五、配置JAVA_HOME後端
在${HADOOP_HOME}/etc/hadoop目錄下的三個腳本 hadoop-env.sh yarn-env.sh mapred-env.sh 都須要配置JAVA_HOME變量,全路徑: export JAVA_HOME=/home/java/jdk1.8.0_201
六、三個節點分配職能瀏覽器
vmhome10.com:NameNode,DataNode,NodeManager #NameNode與SecondaryNameNode不能在一個節點上 vmhome11.com:DataNode,ResourceManager,NodeManager #ResourceManager須要單獨一個節點 vmhome12.com:SecondaryNameNode,DataNode,NodeManager #DataNode能夠每一個節點都放一個
七、集羣配置服務器
7.1 core-site.xmlapp
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://vmhome10.com:9000</value> <description>HDFS的URI,文件系統://namenode標識:端口號</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/data-2.8.3/tmp</value> <description>namenode上本地的hadoop臨時文件夾</description> </property> </configuration>
7.2 hdfs-site.xmlssh
<configuration> <property> <name>dfs.replication</name> <value>3</value> <description>副本個數,配置默認是3,應小於datanode機器數量</description> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/data-2.8.3/dfs/name</value> <description>namenode在本地存儲hdfs名字空間元數據 </description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/data-2.8.3/dfs/data</value> <description>datanode上數據塊的物理存儲位置</description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>vmhome12.com:50090</value> <description>指定Hadoop輔助名稱節點主機配置,注意3.x後端口已經改變</description> </property> </configuration>
7.3 yarn-site.xmlwebapp
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>vmhome11.com</value>
<description>yarn的主機,運行resoucemanager</description> </property> </configuration>
7.4 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
7.5 歷史服務配置
mapred-site.xml
<!-- 歷史服務器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>vmhome12.com:10020</value> </property> <!-- 歷史服務器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>vmhome12.com:19888</value> </property>
7.6 日誌彙集
yarn-site.xml
<!-- 日誌彙集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日誌保留時間設置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
八、slaves
#集羣,羣起方式須要配置全部的節點在這個文件 vmhome10.com vmhome11.com vmhome12.com
九、複製配置到其餘節點
scp -r hadoop-2.8.3/ hadoop@vmhome11.com:/opt/hadoop/ scp -r hadoop-2.8.3/ hadoop@vmhome12.com:/opt/hadoop/
十、羣起集羣
在NameNode的主機節點上執行(首次啓動集羣前,不要忘記先格式化namenode) start-dfs.sh 在ResourceManager的主機節點上執行 start-yarn.sh 注意:NameNode和ResourceManger若是不是同一臺機器,不能在NameNode上啓動 YARN,應該在ResouceManager所在的機器上啓動YARN。
10.2 啓動日誌服務
在vmhome12.com節點上啓動服務 mr-jobhistory-daemon.sh start historyserver
十一、啓停命令
各個服務組件逐一啓動/中止 (1)分別啓動/中止HDFS組件 hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode (2)啓動/中止YARN yarn-daemon.sh start / stop resourcemanager / nodemanager 各個模塊分開啓動/中止(ssh免密) (1)總體啓動/中止HDFS start-dfs.sh / stop-dfs.sh (2)總體啓動/中止YARN start-yarn.sh / stop-yarn.sh
十二、web頁面
用yarn的主機節點看yarn資源分配狀況 http://192.168.44.11:8088/ 用Namnode的主機節點看hdfs的狀況 http://192.168.44.10:50070/
1三、中止強制檢查虛擬內存
在etc/hadoop/yarn-site.xml文件中,修改檢查虛擬內存的屬性爲false,以下: <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> 目的是在開發環境用的虛擬機通常虛擬內存都不夠hadoop的缺省配置,解除強制檢查,免得測試程序的時候容器被kill。
1四、NameNode的本地目錄能夠配置成多個,且每一個目錄存放內容相同,增長可靠性,若是配置在NFS上,可做爲一份元數據備份。即配置的多個目錄裏都有相同的內容(元數據信息)。
在hdfs-site.xml裏配置name的多個dir,之間用逗號分隔 <property> <name>dfs.namenode.name.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value> </property>
1五、DataNode也能夠配置成多個目錄,每一個目錄存儲的數據不同。即:數據不是副本。
在hdfs-site.xml中: <property> <name>dfs.datanode.data.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value> </property>
1六、退役節點
16.1 白名單方式,添加到白名單的主機節點,都容許訪問NameNode,不在白名單的主機節點,都會被退出。
在etc/hadoop/下新增一個dfs.hosts文件,文件名可本身定義,在裏面添加datanode節點 vi dfs.hosts vmhome10.com vmhome11.com vmhome12.com
在hdfs-site.xml配置文件裏新增: <property> <name>dfs.hosts</name> <value>/opt/hadoop/etc/hadoop/dfs.hosts</value> </property> 而後分發到其餘節點
刷新NameNode和ResourceManager hdfs dfsadmin -refreshNodes yarn rmadmin -refreshNodes
節點退役後,若是數據不均衡,能夠用命令實現集羣的再平衡數據。 start-balancer.sh
16.2 黑名單方式
在hadoop的etc/hadoop/下新增dfs.hosts.exclude文件 裏面配置須要退役的節點: vi dfs.hosts.exclude vmhome9.com
在NameNode的hdfs-site.xml配置文件中增長dfs.hosts.exclude屬性 <property> <name>dfs.hosts.exclude</name> <value>/opt/hadoop/etc/hadoop/dfs.hosts.exclude</value> </property>
刷新NameNode和ResourceManager hdfs dfsadmin -refreshNodes yarn rmadmin -refreshNodes
在Web瀏覽器,退役節點的狀態爲decommission in progress(退役中),說明數據節點正在複製塊到其餘節點 等待退役節點狀態爲decommissioned(全部塊已經複製完成),中止該節點及節點資源管理器。 注意:若是副本數是3,服役的節點小於等於3,是不能退役成功的,須要修改副本數後才能退役。
注意:不容許白名單和黑名單中同時出現同一個主機名稱