Hadoop是大數據通用處理平臺,提供了分佈式文件存儲以及分佈式離線並行計算,因爲Hadoop的高拓展性,在使用Hadoop時一般以集羣的方式運行,集羣中的節點可達上千個,可以處理PB級的數據。html
Hadoop各個模塊剖析:http://www.javashuo.com/article/p-sjrfnywc-hc.htmlnode
因爲在啓動hdfs、yarn時都須要對用戶的身份進行驗證,且集羣中NameNode、ResourceManager在啓動時會經過SSH的形式通知其餘節點,使其啓動相應的進程,所以須要相互配置SSH設置免密碼登陸而且關閉防火牆或開啓白名單。web
//生成祕鑰
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的映射關係。安全
<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。服務器
<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>
<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。架構
<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目錄下,默認未開啓。app
*Uber運行模式對小做業進行優化,不會給每一個任務分別申請分配Container資源,這些小任務將統一在一個Container中按照先執行map任務後執行reduce任務的順序串行執行。ssh
#配置要運行DataNode、NodeManager的節點,值能夠是主機名或IP地址。 192.168.1.80
192.168.1.81
192.168.1.82
*slave文件能夠只在NameNode以及ResourceManager所在的節點中配置。webapp
*在服務器中各類配置儘可能使用主機名來代替IP。分佈式
1.分別格式化NameNode
2.在任意一臺Hadoop節點中啓動HDFS,那麼整個HDFS集羣將會一塊兒啓動。
分別經過jps命令查看當前啓動的進程
*當HDFS集羣啓動完畢後,因爲NameNode部署在hadoop1機器上,所以能夠訪問http://192.168.1.80:50070進入HDFS的可視化管理界面,能夠查看到當前HDFS集羣中有3個存活的DataNode節點。
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。
1.修改各個節點的hosts文件,添加新節點的主機名與IP映射關係。
2.相互配置SSH,使能夠經過SSH進行免密碼登陸。
3.修改NameNode和ResourceManager所在節點的Slave文件,添加新節點的主機名或IP地址。
4.單獨在新節點中啓動DataNode和NodeManager。
*進入HDFS管理頁面,能夠查看到當前HDFS集羣中有4個存活的DataNode節點。
*進入YARN管理頁面,能夠查看到當前YARN集羣中有4個存活的NodeManager節點。
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集羣在經過配置文件的形式動態過濾節點時能夠動態的進行卸載和恢復。
*若第一次使用該配置則須要重啓HDFS和YARN集羣,使其從新讀取配置文件,日後一旦修改過exclude.host配置文件則直接刷新集羣便可。