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.1 動態新增DataNode和NodeManager節點
1.准備一台新的機器(節點)
2.修改各個節點的hosts文件,添加新節點的主機名與IP的映射關系。
3.相互配置SSH,使可以通過SSH進行免密碼登錄。
4.修改NameNode和ResourceManager節點的Slave文件,添加新節點的主機名或IP地址。
5.單獨在新節點中啟動DataNode和NodeManager。
6.進入HDFS的可視化管理界面,可以查看到當前HDFS集群中有4個存活的DataNode節點。
7.進入YARN的可視化管理界面,可以查看到當前YARN集群中有4個存活的NodeManager節點。
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節點已經被動態的移除。
5.進入Yarn的可視化管理界面,可以看到hadoop4的NodeManager節點已被移除。
6.使用jps命令查看hadoop4正在運行的JAVA進程,可以發現該節點上的NodeManager進程已經被kill掉,而DataNode進程仍然在運行,因此YARN集群在通過exclude.hosts文件過濾節點時,會把節點上的NodeManager進程殺死,因此不能夠動態的進行恢復,而HDFS集群在通過exclude.hosts文件過濾節點時,並不會把節點上的DataNode進程給殺死,因此可以動態的進行恢復。