Hadoop集羣管理

1.簡介html

Hadoop是大數據通用處理平臺,提供了分佈式文件存儲以及分佈式離線並行計算,因爲Hadoop的高拓展性,在使用Hadoop時一般以集羣的方式運行,集羣中的節點可達上千個,可以處理PB級的數據。node

Hadoop各個模塊剖析:https://×××w.cnblogs.com/funyoung/p/9889719.htmlweb

2.Hadoop集羣架構圖sql

3.Hadoop集羣搭建安全

3.1 修改配置服務器

1.配置SSH以及hosts文件架構

因爲在啓動hdfs、yarn時都須要對用戶的身份進行驗證,且集羣中NameNode、ResourceManager在啓動時會經過SSH的形式通知其餘節點,使其啓動相應的進程,所以須要相互配置SSH設置免密碼登陸而且關閉防火牆或開啓白名單。併發

複製代碼
//生成祕鑰
ssh-keygen -t rsa app

//複製祕鑰到本機和其餘受信任的主機中,那麼在本機能夠直接經過SSH免密碼登陸到受信任的主機中.
ssh-copy-id 192.168.1.80ssh

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運行時NameNode、DataNode產生的數據 -->
<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>
複製代碼
*fs.defaultFS配置項用於指定HDFS集羣中默認使用的NameNode。

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

複製代碼
<configuration>
<!-- 文件在HDFS中的備份數(小於等於NameNode) -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 關閉HDFS的訪問權限 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!-- 設置NameNode的Web監控頁面地址(主機地址須要與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.配置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>
複製代碼
*yarn.resourcemanager.hostname配置項用於指定YARN集羣中默認使用的ResourceManager。

5.配置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>
複製代碼
*Hadoop的JobHistory記錄了已運行完的MapReduce任務信息並存放在指定的HDFS目錄下,默認未開啓。

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

6.配置Slave文件

#配置要運行DataNode、NodeManager的節點,值能夠是主機名或IP地址。
192.168.1.80
192.168.1.81
192.168.1.82
*slave文件能夠只在NameNode以及ResourceManager所在的節點中配置。

*在服務器中各類配置儘可能使用主機名來代替IP。

3.2 啓動集羣

啓動HDFS集羣

1.分別格式化NameNode

2.在任意一臺Hadoop節點中啓動HDFS,那麼整個HDFS集羣將會一塊兒啓動。

分別經過jps命令查看當前啓動的進程

*當HDFS集羣啓動完畢後,因爲NameNode部署在hadoop1機器上,所以能夠訪問http://192.168.1.80:50070進入HDFS的可視化管理界面,能夠查看到當前HDFS集羣中有3個存活的DataNode節點。

啓動YARN集羣

1.在yarn.resourcemanager.hostname配置項指定的節點中啓動YARN集羣。

分別經過jps命令查看當前啓動的進程

*當YARN集羣啓動完畢後,因爲ResourceManager部署在hadoop1機器上,所以能夠訪問http://192.168.1.80:50070進入YARN的可視化管理界面,能夠查看到當前YARN集羣中有3個存活的NodeManager節點。

2.在mapreduce.jobhistory.address配置項指定的節點中啓動JobHistory。

*當啓動JobHistory後,能夠訪問mapreduce.jobhistory.address配置項指定的地址進入JobHistory,默認是http://192.168.1.80:19888。

4.Hadoop集羣管理

4.1 動態添加節點

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

2.相互配置SSH,使能夠經過SSH進行免密碼登陸。

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

4.單獨在新節點中啓動DataNode和NodeManager。

*進入HDFS管理頁面,能夠查看到當前HDFS集羣中有4個存活的DataNode節點。

*進入YARN管理頁面,能夠查看到當前YARN集羣中有4個存活的NodeManager節點。

4.2 動態卸載節點

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管理頁面,可見hadoop4的DataNode已被動態的剔除。

查看YARN管理頁面,可見hadoop4的NodeManager已被動態的剔除。

使用jps命令查看hadoop4中Hadoop進程,能夠發現NodeManager進程已經被kill掉,只剩下DataNode進程,所以YARN集羣在經過配置文件的形式動態過濾節點時,一旦節點被過濾,則NodeManager進程直接被殺死,不能動態的進行恢復,必須重啓進程並在exclude.host文件中剔除,而HDFS集羣在經過配置文件的形式動態過濾節點時能夠動態的進行卸載和恢復。

歡迎工做一到五年的Java工程師朋友們加入Java羣: 891219277
羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!

*若第一次使用該配置則須要重啓HDFS和YARN集羣,使其從新讀取配置文件,日後一旦修改過exclude.host配置

相關文章
相關標籤/搜索