hadoop 徹底分佈式集羣搭建

一、在僞分佈式基礎上搭建,僞分佈式搭建參見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,是不能退役成功的,須要修改副本數後才能退役。
注意:不容許白名單和黑名單中同時出現同一個主機名稱
相關文章
相關標籤/搜索