Hadoop集群管理


Hadoop集群管理

Hadoop是大數據通用處理平台,提供了分布式文件存儲以及分布式離線並行計算,由於Hadoop的高拓展性,在使用Hadoop時通常以集群的方式運行,集群中的節點可達上千個,能夠處理PB級的數據。

Hadoop各個模塊剖析:https://www.cnblogs.com/funyoung/p/9889719.html

 

1.搭建HDFS集群

一個HDFS集群由一個NameNode節點和多個DataNode節點組成。

 

 

 

 

 

 

 

 

 

 

1.1 修改配置

 

1.配置SSH以及hosts文件

由於在啟動HDFS時需要對用戶的身份進行驗證,且集群中的NameNode節點在啟動時會通過SSH的方式通知其他節點,使其啟動相應的進程,因此需要相互配置SSH設置免密碼登錄並且關閉防火牆。

//生成秘鑰
ssh-keygen -t rsa 
​
//復制秘鑰到本機和其他受信任的主機中,那么在本機可以直接通過SSH免密碼登錄到受信任的主機中.
ssh-copy-id 192.168.1.80
​
ssh-copy-id 192.168.1.81
​
ssh-copy-id 192.168.1.82 

編輯/etc/hosts文件,添加集群中主機名與IP的映射關系。

 

 

2.配置Hadoop公共屬性(core-site.xml)

<configuration> 
  <!-- Hadoop工作目錄,用於存放Hadoop運行時產生的臨時數據 -->
  <property> 
    <name>hadoop.tmp.dir</name>  
    <value>/usr/hadoop/hadoop-2.9.0/data</value> 
  </property>  
  <!-- NameNode的通信地址 -->  
  <property> 
    <name>fs.defaultFS</name>  
    <value>hdfs://192.168.1.80</value> 
  </property>  
  <!-- 開啟Hadoop的回收站機制,當刪除HDFS中的文件時,文件將會被移動到回收站(/usr/<username>/.Trash),在指定的時間過后再對其進行刪除,此機制可以防止文件被誤刪除 -->  
  <property> 
    <name>fs.trash.interval</name>  
    <!-- 單位是分鍾 -->  
    <value>1440</value> 
  </property> 
</configuration>

3.配置HDFS(hdfs-site.xml)

<configuration> 
  <!-- 文件在HDFS中的備份數(小於等於DataNode) -->  
  <property> 
    <name>dfs.replication</name>  
    <value>3</value> 
  </property>  
  <!-- 關閉HDFS的訪問權限 -->  
  <property> 
    <name>dfs.permissions.enabled</name>  
    <value>false</value> 
  </property>  
  <!-- 設置NameNode的可視化管理界面的地址(主機地址需要與core-site.xml中fs.defaultFS配置的一致) -->  
  <property> 
    <name>dfs.namenode.http-address</name>  
    <value>192.168.1.80:50070</value> 
  </property>  
  <!-- 設置SecondaryNameNode的HTTP訪問地址 -->  
  <property> 
    <name>dfs.namenode.secondary.http-address</name>  
    <value>192.168.1.80:50090</value> 
  </property> 
</configuration>

4.在NameNode節點中配置Slave文件

#配置要運行DataNode的節點,值可以是主機名或IP地址。
192.168.1.80
192.168.1.81
192.168.1.82 

 

1.2 啟動HDFS集群

1.分別格式化NameNode

bin/hdfs namenode -format

 

2.在任意一台Hadoop節點中啟動HDFS,那么整個HDFS集群將會一起啟動。

 

 

 

 

 

 

3.分別通過jps命令查看當前正在運行的JAVA進程。

 

 

  

 

  

 

 

 

 

4.當HDFS集群啟動完畢后,由於NameNode部署在hadoop1機器上,因此可以訪問http://192.168.1.80:50070進入HDFS的可視化管理界面,可以查看到當前HDFS集群中有3個存活的DataNode節點。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.搭建YARN集群

 

一個Yarn集群由一個ResourceManager節點和多個NodeManager節點組成。

 

 

2.1 修改配置

 

1.配置SSH以及hosts文件

由於在啟動YARN時需要對用戶的身份進行驗證,且集群中的ResourceManager節點在啟動時會通過SSH的方式通知其他節點,使其啟動相應的進程,因此需要相互配置SSH設置免密碼登錄並且關閉防火牆。

//生成秘鑰
ssh-keygen -t rsa 
​
//復制秘鑰到本機和其他受信任的主機中,那么在本機可以直接通過SSH免密碼登錄到受信任的主機中.
ssh-copy-id 192.168.1.80
​
ssh-copy-id 192.168.1.81
​
ssh-copy-id 192.168.1.82 

編輯/etc/hosts文件,添加集群中主機名與IP的映射關系。

 

 

2.配置YARN(yarn-site.xml)

<configuration> 
  <!-- 配置Reduce取數據的方式是shuffle(隨機) -->  
  <property> 
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value> 
  </property>  
  <!-- 設置ResourceManager的地址 -->  
  <property> 
    <name>yarn.resourcemanager.hostname</name>  
    <value>192.168.1.80</value> 
  </property>  
  <!-- Web Application Proxy安全任務 -->  
  <property> 
    <name>yarn.web-proxy.address</name>  
    <value>192.168.1.80:8089</value> 
  </property>  
  <!-- 開啟日志 -->  
  <property> 
    <name>yarn.log-aggregation-enable</name>  
    <value>true</value> 
  </property>  
  <!-- 設置日志的刪除時間 -1:禁用,單位為秒 -->  
  <property> 
    <name>yarn.log-aggregation。retain-seconds</name>  
    <value>864000</value> 
  </property>  
  <!-- 設置yarn的內存大小,單位是MB -->  
  <property> 
    <name>yarn.nodemanager.resource.memory-mb</name>  
    <value>8192</value> 
  </property>  
  <!-- 設置yarn的CPU核數 -->  
  <property> 
    <name>yarn.nodemanager.resource.cpu-vcores</name>  
    <value>8</value> 
  </property> 
</configuration>

3.配置MapReduce(mapred-site.xml)

<configuration> 
  <!-- 讓MapReduce任務使用YARN進行調度 -->  
  <property> 
    <name>mapreduce.framework.name</name>  
    <value>yarn</value> 
  </property>  
  <!-- 設置JobHistory的服務地址 -->  
  <property> 
    <name>mapreduce.jobhistory.address</name>  
    <value>192.168.1.80:10020</value> 
  </property>  
  <!-- 指定JobHistory的Web訪問地址 -->  
  <property> 
    <name>mapreduce.jobhistory.webapp.address</name>  
    <value>192.168.1.80:19888</value> 
  </property>  
  <!-- 開啟Uber運行模式 -->  
  <property> 
    <name>mapreduce.job.ubertask.enable</name>  
    <value>true</value> 
  </property> 
</configuration>

JobHistory記錄了已經完成的MapReduce任務信息並存放在HDFS指定的目錄下,默認未開啟。

Uber運行模式對小作業進行優化,不會給每個任務分別申請Container資源,這些小任務將統一在一個Container中按照先執行map任務后執行reduce任務的順序串行執行。 

4.在ResourceManager節點中配置Slave文件

#配置要運行NodeManager的節點,值可以是主機名或IP地址。
192.168.1.80
192.168.1.81
192.168.1.82

 

2.2啟動YARN集群

1.在ResourceManager節點中啟動YARN集群。

 

 

 

 

2.分別通過jps命令查看正在運行的JAVA進程。

 

 

 

 

 

 

 

 

 

3.當YARN集群啟動后,由於ResourceManager部署在hadoop1機器上,因此可以訪問http://192.168.1.80:8088進入YARN的可視化管理界面,可以查看到當前YARN集群中有3個存活的NodeManager節點。

 

 

4.在JosHistory節點中啟動JobHistory。

 

 

 

 

 

當啟動JobHistory后,可以訪問mapreduce.jobhistory.address配置項指定的地址進入JobHistory可視化管理界面,默認是http://192.168.1.80:19888

  

3.Hadoop集群管理

 

3.1 動態新增DataNode和NodeManager節點

 

1.准備一台新的機器(節點)

 

2.修改各個節點的hosts文件,添加新節點的主機名與IP的映射關系。

 

 

 

3.相互配置SSH,使可以通過SSH進行免密碼登錄。

 

4.修改NameNode和ResourceManager節點的Slave文件,添加新節點的主機名或IP地址。

img

 

5.單獨在新節點中啟動DataNode和NodeManager。

 

 

 

 

 

6.進入HDFS的可視化管理界面,可以查看到當前HDFS集群中有4個存活的DataNode節點。

img 

7.進入YARN的可視化管理界面,可以查看到當前YARN集群中有4個存活的NodeManager節點。

img

 

3.2 動態卸載DataNode和NodeMananger節點

 

1.修改NameNode節點上的hdfs-site.xml配置文件,添加過濾配置。

<!-- 指定一個配置文件,使NameNode過濾配置文件中指定的host -->
<property>
  <name>dfs.hosts.exclude</name>
  <value>/usr/hadoop/hadoop-2.9.0/etc/hadoop/hdfs.exclude</value>
</property>

  

2.修改ResourceManager節點上的yarn-site.xml配置文件,添加過濾配置。

<!-- 指定一個配置文件,使ResourceManager過濾配置文件中指定的host -->
<property>
  <name>yarn.resourcemanager.nodes.exclude-path</name>
  <value>/usr/hadoop/hadoop-2.9.0/etc/hadoop/yarn.exclude</value>
</property>

 

3.分別刷新HDFS和YARN集群

 

 

 

第一次使用該配置時需要重啟HDFS和YARN集群,使其重新讀取配置文件,往后一旦修改過exclude.host配置文件則直接刷新集群即可。

 

4.進入HDFS的可視化管理界面,可以查看到hadoop4的DataNode節點已經被動態的移除。

img

 

5.進入Yarn的可視化管理界面,可以看到hadoop4的NodeManager節點已被移除。

img

 

6.使用jps命令查看hadoop4正在運行的JAVA進程,可以發現該節點上的NodeManager進程已經被kill掉,而DataNode進程仍然在運行,因此YARN集群在通過exclude.hosts文件過濾節點時,會把節點上的NodeManager進程殺死,因此不能夠動態的進行恢復,而HDFS集群在通過exclude.hosts文件過濾節點時,並不會把節點上的DataNode進程給殺死,因此可以動態的進行恢復。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM