HA(High Available), 高可用,是保證業(yè)務(wù)連續(xù)性的有效解決方案,一般有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn),分為活動(dòng)節(jié)點(diǎn)(Active)及備用節(jié)點(diǎn)(Standby)。通常把正在執(zhí)行業(yè)務(wù)的稱為活動(dòng)節(jié)點(diǎn),而作為活動(dòng)節(jié)點(diǎn)的一個(gè)備份的則稱為備用節(jié)點(diǎn)。當(dāng)活動(dòng)節(jié)點(diǎn)出現(xiàn)問(wèn)題,導(dǎo)致正在運(yùn)行的業(yè)務(wù)(任務(wù))不能正常運(yùn)行時(shí),備用節(jié)點(diǎn)此時(shí)就會(huì)偵測(cè)到,并立即接續(xù)活動(dòng)節(jié)點(diǎn)來(lái)執(zhí)行業(yè)務(wù)。從而實(shí)現(xiàn)業(yè)務(wù)的不中斷或短暫中斷。
Hadoop1.X版本,NN是HDFS集群的單點(diǎn)故障點(diǎn),每一個(gè)集群只有一個(gè)NN,如果這個(gè)機(jī)器或進(jìn)程不可用,整個(gè)集群就無(wú)法使用。為了解決這個(gè)問(wèn)題,出現(xiàn)了一堆針對(duì)HDFS HA的解決方案(如:Linux HA, VMware FT, shared NAS+NFS, BookKeeper, QJM/Quorum Journal Manager, BackupNode等)。
在HA具體實(shí)現(xiàn)方法不同情況下,HA框架的流程是一致的, 不一致的就是如何存儲(chǔ)、管理、同步edits編輯日志文件。
在Active NN和Standby NN之間要有個(gè)共享的存儲(chǔ)日志的地方,Active NN把edit Log寫到這個(gè)共享的存儲(chǔ)日志的地方,Standby NN去讀取日志然后執(zhí)行,這樣Active和Standby NN內(nèi)存中的HDFS元數(shù)據(jù)保持著同步。一旦發(fā)生主從切換Standby NN可以盡快接管Active NN的工作。
1、Namenode HA介紹
Namenode HA詳解
hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,這是一個(gè)基于Paxos算法(分布式一致性算法)實(shí)現(xiàn)的HDFS HA方案,它給出了一種較好的解決思路和方案,QJM主要優(yōu)勢(shì)如下:
不需要配置額外的高共享存儲(chǔ),降低了復(fù)雜度和維護(hù)成本。
消除spof(單點(diǎn)故障)。
系統(tǒng)魯棒性(Robust)的程度可配置、可擴(kuò)展。
[圖片上傳失敗...(image-7d2bde-1585388196420)]
基本原理就是用2N+1臺(tái) JournalNode 存儲(chǔ)EditLog,每次寫數(shù)據(jù)操作有>=N+1返回成功時(shí)即認(rèn)為該次寫成功,數(shù)據(jù)不會(huì)丟失了。當(dāng)然這個(gè)算法所能容忍的是最多有N臺(tái)機(jī)器掛掉,如果多于N臺(tái)掛掉,這個(gè)算法就失效了。這個(gè)原理是基于Paxos算法。
在HA架構(gòu)里面SecondaryNameNode已經(jīng)不存在了,為了保持standby NN時(shí)時(shí)的與Active NN的元數(shù)據(jù)保持一致,他們之間交互通過(guò)JournalNode進(jìn)行操作同步。
任何修改操作在 Active NN上執(zhí)行時(shí),JournalNode進(jìn)程同時(shí)也會(huì)記錄修改log到至少半數(shù)以上的JN中,這時(shí) Standby NN 監(jiān)測(cè)到JN 里面的同步log發(fā)生變化了會(huì)讀取 JN 里面的修改log,然后同步到自己的目錄鏡像樹里面,如下圖:
[圖片上傳失敗...(image-a06339-1585388196420)]
當(dāng)發(fā)生故障時(shí),Active的 NN 掛掉后,Standby NN 會(huì)在它成為Active NN 前,讀取所有的JN里面的修改日志,這樣就能高可靠的保證與掛掉的NN的目錄鏡像樹一致,然后無(wú)縫的接替它的職責(zé),維護(hù)來(lái)自客戶端請(qǐng)求,從而達(dá)到一個(gè)高可用的目的。
在HA模式下,datanode需要確保同一時(shí)間有且只有一個(gè)NN能命令DN。為此:
每個(gè)NN改變狀態(tài)的時(shí)候,向DN發(fā)送自己的狀態(tài)和一個(gè)序列號(hào)。
DN在運(yùn)行過(guò)程中維護(hù)此序列號(hào),當(dāng)failover時(shí),新的NN在返回DN心跳時(shí)會(huì)返回自己的active狀態(tài)和一個(gè)更大的序列號(hào)。DN接收到這個(gè)返回則認(rèn)為該NN為新的active。
如果這時(shí)原來(lái)的active NN恢復(fù),返回給DN的心跳信息包含active狀態(tài)和原來(lái)的序列號(hào),這時(shí)DN就會(huì)拒絕這個(gè)NN的命令。
Failover Controller
HA模式下,會(huì)將FailoverController部署在每個(gè)NameNode的節(jié)點(diǎn)上,作為一個(gè)單獨(dú)的進(jìn)程用來(lái)監(jiān)視NN的健康狀態(tài)。FailoverController主要包括三個(gè)組件:
HealthMonitor: 監(jiān)控NameNode是否處于unavailable或unhealthy狀態(tài)。當(dāng)前通過(guò)RPC調(diào)用NN相應(yīng)的方法完成。
ActiveStandbyElector: 監(jiān)控NN在ZK中的狀態(tài)。
ZKFailoverController: 訂閱HealthMonitor 和ActiveStandbyElector 的事件,并管理NN的狀態(tài),另外zkfc還負(fù)責(zé)解決fencing(也就是腦裂問(wèn)題)。
上述三個(gè)組件都在跑在一個(gè)JVM中,這個(gè)JVM與NN的JVM在同一個(gè)機(jī)器上。但是兩個(gè)獨(dú)立的進(jìn)程。一個(gè)典型的HA集群,有兩個(gè)NN組成,每個(gè)NN都有自己的ZKFC進(jìn)程。
[圖片上傳失敗...(image-369670-1585388196420)]
ZKFailoverController****主要職責(zé):
l 健康監(jiān)測(cè):周期性的向它監(jiān)控的NN發(fā)送健康探測(cè)命令,從而來(lái)確定某個(gè)NameNode是否處于健康狀態(tài),如果機(jī)器宕機(jī),心跳失敗,那么zkfc就會(huì)標(biāo)記它處于一個(gè)不健康的狀態(tài)
l 會(huì)話管理:如果NN是健康的,zkfc就會(huì)在zookeeper中保持一個(gè)打開的會(huì)話,如果NameNode同時(shí)還是Active狀態(tài)的,那么zkfc還會(huì)在Zookeeper中占有一個(gè)類型為短暫類型的znode,當(dāng)這個(gè)NN掛掉時(shí),這個(gè)znode將會(huì)被刪除,然后備用的NN將會(huì)得到這把鎖,升級(jí)為主NN,同時(shí)標(biāo)記狀態(tài)為Active
l 當(dāng)宕機(jī)的NN新啟動(dòng)時(shí),它會(huì)再次注冊(cè)zookeper,發(fā)現(xiàn)已經(jīng)有znode鎖了,便會(huì)自動(dòng)變?yōu)镾tandby狀態(tài),如此往復(fù)循環(huán),保證高可靠,需要注意,目前僅僅支持最多配置2個(gè)NN
l master****選舉:通過(guò)在zookeeper中維持一個(gè)短暫類型的znode,來(lái)實(shí)現(xiàn)搶占式的鎖機(jī)制,從而判斷那個(gè)NameNode為Active狀態(tài)
2、Yarn HA介紹
Yarn作為資源管理系統(tǒng),是上層計(jì)算框架(如MapReduce,Spark)的基礎(chǔ)。在Hadoop 2.4.0版本之前,Yarn存在單點(diǎn)故障(即ResourceManager存在單點(diǎn)故障),一旦發(fā)生故障,恢復(fù)時(shí)間較長(zhǎng),且會(huì)導(dǎo)致正在運(yùn)行的Application丟失,影響范圍較大。從Hadoop 2.4.0版本開始,Yarn實(shí)現(xiàn)了ResourceManager HA,在發(fā)生故障時(shí)自動(dòng)failover,大大提高了服務(wù)的可靠性。
ResourceManager(簡(jiǎn)寫為RM)作為Yarn系統(tǒng)中的主控節(jié)點(diǎn),負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和調(diào)度,內(nèi)部維護(hù)了各個(gè)應(yīng)用程序的ApplictionMaster信息、NodeManager(簡(jiǎn)寫為NM)信息、資源使用等。由于資源使用情況和NodeManager信息都可以通過(guò)NodeManager的心跳機(jī)制重新構(gòu)建出來(lái),因此只需要對(duì)ApplicationMaster相關(guān)的信息進(jìn)行持久化存儲(chǔ)即可。
在一個(gè)典型的HA集群中,兩臺(tái)獨(dú)立的機(jī)器被配置成ResourceManger。在任意時(shí)間,有且只允許一個(gè)活動(dòng)的ResourceManger,另外一個(gè)備用。切換分為兩種方式:
手動(dòng)切換:在自動(dòng)恢復(fù)不可用時(shí),管理員可用手動(dòng)切換狀態(tài),或是從Active到Standby,或是從Standby到Active。
自動(dòng)切換:基于Zookeeper,但是區(qū)別于HDFS的HA,2個(gè)節(jié)點(diǎn)間無(wú)需配置額外的ZFKC守護(hù)進(jìn)程來(lái)同步數(shù)據(jù)。
[圖片上傳失敗...(image-a7cb33-1585388196419)]
3、基于已有的偽分布式環(huán)境構(gòu)建HA環(huán)境
如何在已有的偽分布式的基礎(chǔ)上面搭建HA高可用集群
集群服務(wù)規(guī)劃:
|
機(jī)器ip
|
192.168.52.100
|
192.168.52.110
|
192.168.52.120
|
|
主機(jī)名稱
|
node01.hadoop.com
|
node02.hadoop.com
|
node03.hadoop.com
|
|
NameNode
|
是(active)
|
是(standBy)
|
否
|
|
DataNode
|
是
|
是
|
是
|
|
journalNode
|
是
|
是
|
是
|
|
ZKFC
|
是
|
是
|
否
|
|
ResourceManager
|
否
|
是(standBy)
|
是(active)
|
|
NodeManager
|
是
|
是
|
是
|
|
zookeeper
|
是
|
是
|
是
|
|
jobHistory
| | |
是
|
第一步:停止服務(wù)
停止hadoop集群的所有服務(wù),包括HDFS的服務(wù),以及yarn集群的服務(wù)
停止hadoop服務(wù)
node01機(jī)器執(zhí)行以下命令停止hadoop服務(wù)
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh stop historyserver
第二步:?jiǎn)?dòng)所有節(jié)點(diǎn)的zookeeper服務(wù)
cd /export/servers/zookeeper-3.4.5-cdh5.14.0
bin/zkServer.sh start
第三步:三臺(tái)機(jī)器更改配置文件
所有節(jié)點(diǎn)修改配置文件,注意yarn-site.xml當(dāng)中的
yarn.resourcemanager.ha.id 這個(gè)屬性值,node03機(jī)器與node02機(jī)器的配置值不太一樣
修改core-site.xml
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hann</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
修改hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>hann</value>
</property>
<property>
<name>dfs.ha.namenodes.hann</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hann.nn1</name>
<value>node01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hann.nn2</name>
<value>node02:8020</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.hann.nn1</name>
<value>node01:8022</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.hann.nn2</name>
<value>node02:8022</value>
</property>
<property>
<name>dfs.namenode.http-address.hann.nn1</name>
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.hann.nn2</name>
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/hann</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.hann</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<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>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/namenodeDatas</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/nn/edits</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/datanodeDatas</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/run/hdfs-sockets/dn</value>
</property>
<property>
<name>dfs.client.file-block-storage-locations.timeout.millis</name>
<value>10000</value>
</property>
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
修改mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node03:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node03:19888</value>
</property>
<property>
<name>mapreduce.jobtracker.system.dir</name>
<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/jobtracker</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/mapreduce/local</value>
</property>
修改yarn-site.xml
注意:yarn.resourcemanager.ha.id 這個(gè)屬性的配置,node03的這個(gè)屬性值與node02的這個(gè)屬性值內(nèi)容不同
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>mycluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node03</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node02</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>node03:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>node03:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>node03:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>node03:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>node03:8088</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>node02:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>node02:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>node02:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>node02:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node02:8088</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
<description>If we want to launch more than one RM in single node, we need this configuration</description>
</property>
<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>node01:2181,node02:2181,node03:2181</value>
<description>For multiple zk services, separate them with comma</description>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
<description>Enable automatic failover; By default, it is enabled only when HA is enabled.</description>
</property>
<property>
<name>yarn.client.failover-proxy-provider</name>
<value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>2592000</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.log-aggregation.compression-type</name>
<value>gz</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/yarn/local</value>
</property>
<property>
<name>yarn.resourcemanager.max-completed-applications</name>
<value>1000</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>2000</value>
</property>
改完之后,將配置文件分發(fā)到其他的各個(gè)節(jié)點(diǎn)
還要記得改node02機(jī)器的yarn-site.xml
第四步:三臺(tái)機(jī)器啟動(dòng)前準(zhǔn)備
更改yarn-site.xml當(dāng)中的配置,第三臺(tái)機(jī)器的這個(gè)配置項(xiàng)值改為rm1,第二臺(tái)機(jī)器這個(gè)配置項(xiàng)值改為rm2
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
<description>If we want to launch more than one RM in single node, we need this configuration</description>
</property>
三臺(tái)機(jī)器創(chuàng)建以下這個(gè)配置路徑
執(zhí)行以下命令進(jìn)行創(chuàng)建路徑,并改變所屬用戶所屬組
sudo mkdir -p /var/run/hdfs-sockets
sudo chown -R hadoop:hadoop /var/run/hdfs-sockets
<property>
<name>dfs.domain.socket.path</name>
<value>/var/run/hdfs-sockets/dn</value>
</property>
第五步:服務(wù)的啟動(dòng)
第一步:初始化zookeeper
在node01機(jī)器上進(jìn)行zookeeper的初始化,其本質(zhì)工作是創(chuàng)建對(duì)應(yīng)的zookeeper節(jié)點(diǎn)
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/hdfs zkfc -formatZK
第二步:?jiǎn)?dòng)journalNode
三臺(tái)機(jī)器執(zhí)行以下命令啟動(dòng)journalNode,用于我們的元數(shù)據(jù)管理
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/hadoop-daemon.sh start journalnode
第三步:初始化journalNode
node01機(jī)器上準(zhǔn)備初始化journalNode
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/hdfs namenode -initializeSharedEdits -force
第四步:?jiǎn)?dòng)namenode
node01機(jī)器上啟動(dòng)namenode
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/hadoop-daemon.sh start namenode
node02機(jī)器上啟動(dòng)namenode
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode
第五步:?jiǎn)?dòng)所有節(jié)點(diǎn)的datanode進(jìn)程
在node01機(jī)器上啟動(dòng)所有節(jié)點(diǎn)的datanode進(jìn)程
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/hadoop-daemons.sh start datanode
第六步:?jiǎn)?dòng)zkfc
在node01機(jī)器上面啟動(dòng)zkfc進(jìn)程
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/hadoop-daemon.sh start zkfc
在node02機(jī)器上面啟動(dòng)zkfc進(jìn)程
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/hadoop-daemon.sh start zkfc
第七步:?jiǎn)?dòng)yarn進(jìn)程
node03機(jī)器上啟動(dòng)yarn集群
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/start-yarn.sh
node02機(jī)器上啟動(dòng)yarn集群
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/start-yarn.sh
查看resourceManager的狀態(tài)
node03上面執(zhí)行
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/yarn rmadmin -getServiceState rm1
node02上面執(zhí)行
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
bin/yarn rmadmin -getServiceState rm2
第八步:?jiǎn)?dòng)jobhsitory
node03節(jié)點(diǎn)啟動(dòng)jobhistoryserver
cd /kkb/install/hadoop-2.6.0-cdh5.14.2
sbin/mr-jobhistory-daemon.sh start historyserver
第九步:瀏覽器界面訪問(wèn)
node01機(jī)器查看hdfs狀態(tài)
http://192.168.52.100:50070/dfshealth.html#tab-overview
node02機(jī)器查看hdfs狀態(tài)
http://192.168.52.110:50070/dfshealth.html#tab-overview
yarn集群訪問(wèn)查看
歷史任務(wù)瀏覽界面
頁(yè)面訪問(wèn):