上次我們介紹完了Hadoop最基礎的知識,本篇將介紹關於Hadoop HA相關的知識。當然文末放出大福利。
1. Hadoop 2.0之前,在HDFS集群中NameNode存在單點故障(SPOF),對於只有一個NameNode的集群,若NameNode機器出現故障,則整個集群將無法使用,直到NameNode重啟;
2. Namenode主要在以下2個方面影響集群:
3. HDFS HA功能通過配置active/standby兩個NameNodes實現在集群中對NameNode的熱備來解決上述問題。如果出現故障,如機器崩潰或機器需要升級維護,這是可通過真箇方式將namenode很快的切換到另外一台機器。
4. 配置HA要點:
配置JournalNode,要求至少3台機器;
NameNode需要2台作為NameNode,一台為active,一台為standby;
客戶端方面需要配置proxy,用來代理髮送請求;
active和standby需要隔離,保證同一時刻僅有一個NameNode對外提供服務;
隔離後,如果使用sshfence進行互相感知的話,需要保證兩台NameNode伺服器必須能都通過主機名能夠互相訪問,否則一旦有一台崩潰,另外一台無法連接standby的NameNode伺服器自動提供服務。下圖為整體的架構圖:


HDFS HA配置中,ZooKeeper是一個必用的集群配置服務,下面我們來看下ZK的相關知識點。
二、ZooKeeper
1. 什麼是ZooKeeper
一個開源分散式的,為分散式應用提供協調服務的Apache項目;
提供一個簡單的原語集合,以便於分散式應用可以在它之上構建更高層次的同步服務;
設計非常易於編程,它使用的是類似於文件系統那樣的樹形數據結構;
目的就是將分散式服務不再需要由於協作衝突而另外實現協作服務。
ZK的數據結構
1)數據結構和分等級的命名空間
ZK的命名空間的結構和文件系統很像,一個名字和文件一樣使用 / 的路徑表現,ZK的每個節點都是被路徑唯一標識;
ZK的集成式命名空間,在 / 下存在 /app1,在/app1下有/app1/p_1等,就是一個樹形結構。
2)ZK的角色:
領導者(leader):領導者負責進行投票的發起和決議,更新系統狀態;
學習者(learner);
跟隨者(follower): 用於接收客戶請求並向客戶端返回結果,在選主過程中參與投票;
觀察者(observer):可以接收客戶端連接,將寫請求轉發給leader節點,但觀察者不參與投票過程,只同步leader的狀態。觀察者的目的是為了擴展系統,提高讀取速度;
客戶端(client)請求發起方;
2. ZK的典型應用場景
ZK從設計模式角度看,是一個基於觀察者模式設計的分散式服務管理框架,一旦這些數據的狀態發生變化,ZK就將負責通知已經在ZK上註冊的那些觀察者做出相應的反應,從而實現集群中類似Master/Slave管理模式。應用場景:
1)統一命名服務(NameService);
2)配置管理(ConfigurationManagement);
3)集群管理(GroupMembership);
4)共享鎖(Lock)/同步鎖;
ZK的配置參數詳解:
1)tickTime:這個時間是作為ZK伺服器之間或客戶端於伺服器之間維持心跳的時間間隔,也就是每個ticktime時間就發送一個心跳;
2)dataDir:顧名思義是ZK保存數據到 目錄,默認情況下,ZK將寫數據的日誌文件也保存在這個目錄下;
3)clientPort:這個埠是客戶端連接ZK伺服器的埠,ZK會監聽這個埠,接受客戶端的請訪問請求;
3. zkclient命令講解
命令: bin/zkCli.sh–server localhost:2181:啟動ZK;
詳解:ls(查看文件)、get(獲取文件)、delete、set;
initLimit:這個配置項是用來配置zk接受客戶端(這裡所說的客戶端不是用戶連接ZK伺服器的客戶端,而是ZK伺服器集群中連接到leader的follower伺服器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間(也就是tickime)長度後ZK伺服器還沒收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是5*2000=10秒;
syscLimit:這個配置項表識leader與follwer之間發送消息,請求和應答時間長度,最長不能超過多少個ticktime的時間長度,總的時間長度就是2*2000=4秒;
server.A=B.C.D:
其中A是一個數字,表示這個是第幾號伺服器;
B是這個伺服器的ip地址或主機名;
C表示的是這個伺服器與集群中的leader伺服器交換信息的埠;
D表示的是萬一集群中的leader伺服器掛了,需要一個埠來重新進行選舉,選出一個新的leader,而這個埠就是來執行選舉時伺服器互相通信的埠。如果是偽集群的配置方式,由於B都是一樣,所以不同的zk實例通信埠號不能一樣,所以要給它們分配不同的埠號;
集群模式下配置一個文件myid,這個文件在dataDir目錄下,這個文件裡面就有一個數據就是A的值,zk啟動時讀取此文件,拿到裡面的數據與zoo.cfg裡面的配置信息進行比較從而判斷到底哪個是server。
三、Hadoop三大版本
1)apache
在企業實際使用中,直接使用apache並不多,但是apche的版本是最原始和最基礎的版本,很多版本都是從這個基礎版本擴展和優化而來;
2)Cloudera
2008年成立的Cloudera是最早將Hadoop商用的公司,他們為合作夥伴提供Hadoop的商用解決方案,主要包括支持、諮詢服務和培訓;
2009年Hadoop的創始人Doug Cutting也加盟Cloudera公司。他們主要 的產品是CDH、Cloudera Manager、Cloudera Support;
CDH是Cloudera的Hadoop發行版,完全開源,比Apache Hadoop在兼容性、安全性和穩定性上都有所增強;
Cloudera Manager是集群的軟體分發及管理監控平台,可以在幾個小時內部署好一個Hadoop集群,並且對集群的節點以及服務進行實時監控。Cloudera Manager也就是對Hadoop的技術支持;
Cloudera的標價為每年每個節點4000美元,Cloudera開發並貢獻來可實時處理大數據的Impala項目。
3)Hortonworks
2011年成立的Hortonworks是雅虎與矽谷風投公司合資組建的;
公司成立之初吸納了大約25到30名研究Hadoop的雅虎工程師,上述工程師均在2005年開始協助雅虎開發Hadoop,貢獻了源碼的80%;
Hortonworks的主打產品是HDP(Hortonworks Data Platform),也同樣是100%開源的產品,HDP除常見的項目外還包含了Ambari,一款開源安裝和管理系統;
HCatalog:一個元數據管理系統,HCatalog現已集成到Facebook開源的Hive中,Hortonworks的Stinger開創性極大地優化了Hive項目,Hortonworks為入門提供了一個非常好的,易於使用的沙盒;
Hortonworks開發了很多增強特性並且提交至核心主幹,這使得Apache Hadoop能夠在包括windows server和windows azurze在內的Microsoft Windows平台上本地運行,定價以集群為基礎,每10個節點每年12500美元。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!
本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!
請您繼續閱讀更多來自 思考的犀牛 的精彩文章:
TAG:思考的犀牛 |