HADOOP集群搭建環境准備
3台雲主機centos6.9 64位
hadoop-2.6.0-cdh5.7.0.tar.gz
jdk-8u45-linux-x64.gz
zookeeper-3.4.6.tar.gz
本地搭建虛擬機;我們采用.net內網模式
hadoop01 172.16.202.238
hadoop02 172.16.202.239
hadoop03 172.16.202.239
(沒有特別說明就是三台機器同時執行)
第一步:SSH相互信任配置和host文件配置
1.創建hadoop用戶
2.在hadoop的家目錄下創建app目錄存放安裝包,並把
hadoop-2.6.0-cdh5.7.0.tar.gz
jdk-8u45-linux-x64.gz
zookeeper-3.4.6.tar.gz
這三個包上傳,使用rz命令,如果是新機器,可能會找不到rz命令,這時候需要下載
在任意目錄下執行yum -y install lrzsz
然后cd切到app目錄下rz上傳hadoop,jdk和zookeeper
3.先刪除hadoop用戶家目錄下原來的.ssh目錄(如果是剛剛創建的用戶,可以不用操作這一步。)
4.執行命令ssh-keygen,然后連續回車3次
5.這時候我們剛剛刪除的.ssh目錄就又出現了,切到.ssh目錄 並且查看目錄下的文件ll
6.單台機器操作將公鑰文件(id_rsa.pub)追加到authorized_keys(自建,就在.ssh目錄下)中
[hadoop@hadoop01 .ssh]$ cat id_rsa.pub >> authorized_keys --
[hadoop@hadoop02 .ssh]$ scp id_rsa.pub root@192.168.232.5:/home/hadoop/.ssh/id_rsa2 --過程中會讓輸入密碼,你輸入雲主機的密碼即可,下同理
[hadoop@hadoop03 .ssh]$ scp id_rsa.pub root@192.168.232.5:/home/hadoop/.ssh/id_rsa3
經過以上操作,hadoop001,hadoop002,hadoop003的公鑰都被放到了hadoop001的.ssh目錄一下。
7.在hadoop001機器上,將新傳入的id_rsa2和id_rsa3都追加到authoeized_keys文件中
[hadoop@hadoop01 .ssh]$ cat id_rsa2 >> authorized_keys
[hadoop@hadoop01 .ssh]$ cat id_rsa3 >> authorized_keys
8.配置/etc/hosts文件 ,把hadoop001,hadoop002,hadoop003的內網配置到hosts中
9.將第7部在hadoop001配置好的authorized_keys文件復制到hadoop002和hadoop003的.ssh目錄下
先在hadoop001機器上。切入到~/.ssh目錄
[hadoop@hadoop001 ~]$ cd ~/.ssh
[hadoop@hadoop01 .ssh]$ scp authorized_keys hadoop@hadoop02:/home/hadoop/.ssh/
[hadoop@hadoop01 .ssh]$ scp authorized_keys hadoop@hadoop03:/home/hadoop/.ssh/
到這里免密配置基本上就完畢了,但是這里可能會有【坑】,不管怎么樣,我們先來驗證一下
果然有坑,這里顯示讓我們輸入密碼,但是我們並沒有設置密碼,所以這里是有問題的,那該怎么解決呢?
老師帶我們看了hadoop官網的單節點的部署文檔,其中在免密配置中就有提到,authorized_keys文件的權限必須改為600
[hadoop@hadoop01 .ssh]$ chmod 600 authorized_keys
[hadoop@hadoop02 .ssh]$ chmod 600 authorized_keys
[hadoop@hadoop03 .ssh]$ chmod 600 authorized_keys
然后再次進行嘗試
OK啦!!!!
配置完成以后這里一定要注意,每台機器都要跟自己跟其他兩台機器鏈接一下,因為第一次鏈接要輸入yes,如果沒有操作這一步,后邊的部署會有麻煩。
ssh hadoop001 date
ssh hadoop002 date
ssh hadoop003 date
再次提醒每台機器上都要執行以上三個命令
拓展:若果秘鑰變更,千萬不要把整個known_hosts文件清空,會造成整個分布式系統的癱瘓,而是在known_hosts文件中找到要變更的秘鑰,把它刪掉,否則,在讀取known_hosts文件的時候會從上往下讀,原來的記錄還在,就會一直讀錯的那一個,所以需要把老記錄給刪掉
第一步:JDK的配置(因為JDK的部署是給整個環境用的,所以要用root用戶部署)
1.創建目錄 /usr/java/【一定要把jdk放到這個目錄下,為了避免以后踩坑,這個是硬性要求,因為CDH shell腳本默認java安裝目錄是/usr/java/ 】
2解壓jdk到/usr/java/目錄
解壓完成后,這里又有一個【坑】:jdk解壓后的用戶和用戶組會發生改變,我們需要把解壓后的jdk的用戶和用戶組給糾正成root:root
第3部:【防火牆】
在hadoop集群部署中防火牆是一個很重要的需要考慮的問題,它不重要,但是你不關掉就會壞事。
虛擬機關閉防火牆的操作:
CentOS7使用firewalld打開關閉防火牆與端口
1、firewalld的基本使用
啟動: systemctl start firewalld
查看狀態: systemctl status firewalld
停止: systemctl stop firewalld
禁用: systemctl disable firewalld
2.systemctl是CentOS6 service iptables
service iptables stop
service iptables status
service iptables disable
雲主機防火牆操作:
如果你使用的是雲主機,那么你只需要把端口號給加到安全組內即可
第四步:【Zookeeper的部署及定位】
1.解壓ZK
2.建立軟連接
3.在hadoop001配置zk的zoo.cfg文件:
[hadoop@hadoop001 data]$ mkdir -p /home/hadoop/app/zookeeper/data
[hadoop@hadoop001~]$cd /home/hadoop/app/zookeeper/conf
[hadoop@hadoop001 conf]$ cp zoo_sample.cfg zoo.cfg ---把模板文件 zoo_sample.cfg重名為zoo.cfg
[hadoop@hadoop001 conf]$ vi zoo.cfg ##添加以下內容
dataDir=/home/hadoop/app/zookeeper/data
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
[hadoop@hadoop001 data]$ pwd
/home/hadoop/app/zookeeper/data
[hadoop@hadoop001 data]$ touch myid
[hadoop@hadoop001 data]$ echo 1 > myid
【坑】myid的大小是兩個字節【也就是只有一個數字;不要有空格】{查看方法就是vi進去以后光標閃爍是在1上,並且移動光標移動不了}
【復制zoo.cfg到hadoop002和hadoop003】
[hadoop@hadoop01 zookeeper]$ scp conf/zoo.cfg hadoop02:/home/hadoop/app/zookeeper/conf/
zoo.cfg 100% 1023 130.5KB/s 00:00
[hadoop@hadoop01 zookeeper]$ scp conf/zoo.cfg hadoop03:/home/hadoop/app/zookeeper/conf/
zoo.cfg 100% 1023 613.4KB/s 00:00
【復制data文件夾到hadoop002和hadoop003】
[hadoop@hadoop01 zookeeper]$ scp -r data hadoop03:/home/hadoop/app/zookeeper/
myid 100% 2 1.6KB/s 00:00
[hadoop@hadoop01 zookeeper]$ scp -r data hadoop02:/home/hadoop/app/zookeeper/
myid 100% 2 0.9KB/s 00:00
【修改hadoop002和hadoop003的myid文件】
[hadoop@hadoop002 zookeeper]$ echo 2 > data/myid ## 一個>代表覆蓋原來的內容,兩個>>代表追加到原來內容的后邊
[hadoop@hadoop003 zookeeper]$ echo 3 > data/myid
第四步【配置環境變量】
[hadoop@hadoop001 ~]$ vi .bash_profile
[hadoop@hadoop002 ~]$ vi .bash_profile
[hadoop@hadoop003 ~]$ vi .bash_profile
[hadoop@hadoop003 ~]$ source ~/.bash_profile ###【一定不要忘記】
第五步【啟動ZK,並查看狀態是否正常】
1.啟動ZK
2.查看狀態 【一定是有一個leader,其余的都是follower】
【錯誤積累,我在配置文件zoo.cfg 的時候,把
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
配置中中的hadoop全都寫成了hadoop001,導致了leader和follower那一直出不來報錯內容忘記了好像是not running】
【注意:如有出錯以debug模式檢查;shell腳本啟動打開debug模式的方法在第一行加入(-x)即可如下:
#!/usr/bin/env bash -x
運行這個腳本即可看到運行debug模式來定位問題】
第五步【hadoop的部署】
1.解壓hadoop壓縮包,並建立軟連接
2.配置環境變量
[hadoop@hadoop001 ~]$ vi .bash_profile
[hadoop@hadoop002 ~]$ vi .bash_profile
[hadoop@hadoop003 ~]$ vi .bash_profile
[hadoop@hadoop003 ~]$ source ~/.bash_profile ###【一定不要忘記】
3.創建文件夾【hadoop001,hadoop002和hadoop003三台都要創建】##這一步是根據我們的配置文件來創建的
mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp
mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/name
mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/data
mkdir -p /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/jn
4.把原來的配置文件都刪掉
5.【上傳三個文件,單獨vi slaves】把我們預先准備好的yarn-site.xml,core-site.xml,hdfs-site.xml上傳到以下目錄
[hadoop@hadoop002 hadoop]$ pwd
/home/hadoop/app/hadoop/etc/hadoop
但是slaves需要自己vi填寫否則有大坑:【Name or service not knownstname hadoop01;這是識別不了slaves里配置的服務】
【core-site.xml】
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--Yarn 需要使用 fs.defaultFS 指定NameNode URI -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ruozeclusterg6</value>
</property>
<!--==============================Trash機制======================================= -->
<property>
<!--多長時間創建CheckPoint NameNode截點上運行的CheckPointer 從Current文件夾創建CheckPoint;默認:0 由fs.trash.interval項指定 -->
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
</property>
<property>
<!--多少分鍾.Trash下的CheckPoint目錄會被刪除,該配置服務器設置優先級大於客戶端,默認:0 不刪除 -->
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<!--指定hadoop臨時目錄, hadoop.tmp.dir 是hadoop文件系統依賴的基礎配置,很多路徑都依賴它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默認就放在這>個路徑中 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
</property>
<!--指定ZooKeeper超時間隔,單位毫秒 -->
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>2000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>
</configuration>
【hdfs-site.xml】
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--HDFS超級用戶 -->
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
<!--開啟web hdfs -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/name</value>
<description> namenode 存放name table(fsimage)本地目錄(需要修改)</description>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>${dfs.namenode.name.dir}</value>
<description>namenode粗放 transaction file(edits)本地目錄(需要修改)</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/data</value>
<description>datanode存放block本地目錄(需要修改)</description>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 塊大小256M (默認128M) -->
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<!--======================================================================= -->
<!--HDFS高可用配置 -->
<!--指定hdfs的nameservice為ruozeclusterg6,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ruozeclusterg6</value>
</property>
<property>
<!--設置NameNode IDs 此版本最大只支持兩個NameNode -->
<name>dfs.ha.namenodes.ruozeclusterg6</name>
<value>nn1,nn2</value>
</property>
<!-- Hdfs HA: dfs.namenode.rpc-address.[nameservice ID] rpc 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ruozeclusterg6.nn1</name>
<value>hadoop001:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ruozeclusterg6.nn2</name>
<value>hadoop002:8020</value>
</property>
<!-- Hdfs HA: dfs.namenode.http-address.[nameservice ID] http 通信地址 -->
<property>
<name>dfs.namenode.http-address.ruozeclusterg6.nn1</name>
<value>hadoop001:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ruozeclusterg6.nn2</name>
<value>hadoop002:50070</value>
</property>
<!--==================Namenode editlog同步 ============================================ -->
<!--保證數據恢復 -->
<property>
<name>dfs.journalnode.http-address</name>
<value>0.0.0.0:8480</value>
</property>
<property>
<name>dfs.journalnode.rpc-address</name>
<value>0.0.0.0:8485</value>
</property>
<property>
<!--設置JournalNode服務器地址,QuorumJournalManager 用於存儲editlog -->
<!--格式:qjournal://<host1:port1>;<host2:port2>;<host3:port3>/<journalId> 端口同journalnode.rpc-address -->
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/ruozeclusterg6</value>
</property>
<property>
<!--JournalNode存放數據地址 -->
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/jn</value>
</property>
<!--==================DataNode editlog同步 ============================================ -->
<property>
<!--DataNode,Client連接Namenode識別選擇Active NameNode策略 -->
<!-- 配置失敗自動切換實現方式 -->
<name>dfs.client.failover.proxy.provider.ruozeclusterg6</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--==================Namenode fencing:=============================================== -->
<!--Failover后防止停掉的Namenode啟動,造成兩個服務 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<!--多少milliseconds 認為fencing失敗 -->
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!--==================NameNode auto failover base ZKFC and Zookeeper====================== -->
<!--開啟基於Zookeeper -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--指定hadoop臨時目錄, hadoop.tmp.dir 是hadoop文件系統>依賴的基礎配置,很多路徑都依賴它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默認就放在這>個路徑中 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp</value>
</property>
<!--動態許可datanode連接namenode列表 -->
<property>
<name>dfs.hosts</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/slaves</value>
</property>
</configuration>
【yarn-site.xml】
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nodemanager 配置 ================================================= -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.localizer.address</name>
<value>0.0.0.0:23344</value>
<description>Address where the localizer IPC is.</description>
</property>
<property>
<name>yarn.nodemanager.webapp.address</name>
<value>0.0.0.0:23999</value>
<description>NM Webapp address.</description>
</property>
<!-- HA 配置 =============================================================== -->
<!-- Resource Manager Configs -->
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>2000</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 使嵌入式自動故障轉移。HA環境啟動,與 ZKRMStateStore 配合 處理fencing -->
<property>
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
<value>true</value>
</property>
<!-- 集群名稱,確保HA選舉時對應的集群 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--這里RM主備結點需要單獨指定,(可選)
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm2</value>
</property>
-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
<value>5000</value>
</property>
<!-- ZKRMStateStore 配置 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
</property>
<property>
<name>yarn.resourcemanager.zk.state-store.address</name>
<value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
</property>
<!-- Client訪問RM的RPC地址 (applications manager interface) -->
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>hadoop001:23140</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>hadoop002:23140</value>
</property>
<!-- AM訪問RM的RPC地址(scheduler interface) -->
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>hadoop001:23130</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>hadoop002:23130</value>
</property>
<!-- RM admin interface -->
<property>
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>hadoop001:23141</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>hadoop002:23141</value>
</property>
<!--NM訪問RM的RPC端口 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>hadoop001:23125</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>hadoop002:23125</value>
</property>
<!-- RM web application 地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop001:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop002:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm1</name>
<value>hadoop001:23189</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm2</name>
<value>hadoop002:23189</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop001:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
<discription>單個任務可申請最少內存,默認1024MB</discription>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<discription>單個任務可申請最大內存,默認8192MB</discription>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
</configuration>
6.配置hadoop-env.sh的java家目錄(三台都要配置)
7.【第一次啟動集群的步驟】
1.啟動jn
2.格式化hadoop【hadoop001進行,並將hadoop001的data傳入hadoop002】
[hadoop@hadoop001 hadoop]$ pwd
/home/hadoop/app/hadoop
[hadoop@hadoop001 hadoop]$ hadoop namenode -format
[hadoop@hadoop001 hadoop]$ scp -r data/ hadoop02:/home/hadoop/app/hadoop
3.【初始化zkfc】
[hadoop@hadoop001 hadoop]$ hdfs zkfc -formatZK
[hadoop@hadoop001 hadoop]$ start-dfs.sh
4.【在hadoop001啟動dfs集群】
[hadoop@hadoop001 hadoop]$ start-dfs.sh
dn,zkfc,jn,zk有三台
nn有兩台分別在hadoop001和hadoop002
5【啟動yarn集群,並在hadoop002手動啟動rm】
[hadoop@hadoop001 hadoop]$ start-yarn.sh
[hadoop@hadoop002 hadoop]$ yarn-daemon.sh start resourcemanager
6.【啟動日志管理】
[hadoop@hadoop01 hadoop]$ mr-jobhistory-daemon.sh start historyserver
停止集群 並進行第二次啟動
[hadoop@hadoop01 hadoop]$ stop-all.sh
[hadoop@hadoop01 hadoop]$ zkServer.sh stop
[hadoop@hadoop02 hadoop]$ zkServer.sh stop
[hadoop@hadoop03 hadoop]$ zkServer.sh stop
啟動集群
[hadoop@hadoop01 hadoop]$ zkServer.sh start
[hadoop@hadoop02 hadoop]$ zkServer.sh start
[hadoop@hadoop03 hadoop]$ zkServer.sh start
[hadoop@hadoop01 hadoop]$ start-dfs.sh
[hadoop@hadoop01 hadoop]$ start-yarn.sh
[hadoop@hadoop02 hadoop]$ yarn-daemon.sh start resourcemanager
[hadoop@hadoop01 hadoop]$ mr-jobhistory-daemon.sh start historyserver
7、集群監控
HDFS: http://hadoop01:50070/
HDFS: http://hadoop02:50070/
ResourceManger (Active ):http://hadoop01:8088
ResourceManger (Standby ):http://hadoop02:8088/cluster/cluster
JobHistory: http://hadoop01:19888/jobhistory