hadoop三大組件 mapreduce 分布式運算框架 yarn 任務調度平臺 hdfs 分布式文件系統
1.HDFS數據存放策略:分塊存儲+副本存放。
2.數據拓撲結構(即數據備份):默認存放3份,可以通過修改配置文件hdfs-site.xml修改備份數量,如果本機在集群中,第一份就會存放到本節點即本機上,如果不在集群中,就通過負載均衡存放到一個相應的隨機節點上,第二份存放在同機柜的不同節點上,第三份存放在不同機柜的某個節點上。
3.數據查找:就近原則,現在本節點上查找,再從本機柜上查找,最后再去不同機柜上查找。
4.單點故障:Hadoop1中,一個集群只有NameNode,一旦NameNode宕機,整個集群就無法使用。
5.RPC:(Remote-Procedure-Call遠程過程調用)RPC是hadoop構建的基礎,一種協議,通過網絡從遠程計算機程序上請求服務,采用client/sever客戶機/服務機模式,客戶端發動請求結果返回給客戶端而不是服務端。
6.安裝模式:NameNode啟動時會進入該模式進行檢測,檢查數據塊的完整性,處于該模式下的集群無法對HDFS進行操作,可以手動離開安全模式
hadoop dfsadmin -saftmode leave 推出安全模式(enter進入安全模式)
7.負載均衡:讓DataNode處于均很狀態,調整數據塊,DataNode的工作任務等,例如:現有一個任務要分配給從節點運行,但是有些slave內存比較小,有些內存比較大,又有些slave正在執行別的任務,有些事空閑的,為了讓各個slave既要飽和狀態又要性能最好,就需要調整;再例如:原本有8個子節點,現在擴充了2個子節點,原先的8個子節點都要數據存儲,也有相應的任務需要執行,而后加的2個子節點是空的,此時也需要負載均衡進行重新分配數據的存儲和任務的執行。手動啟動該機制運行:
$HADOOP_HOME/sbin/start-balancer.sh
8.機架感知:機架之間的交互用機架感知來進行。機架之間的通信是通過一些交換機,路由器,光纖等進行通信的,需要通過機架感知來交互。不同機架之間相互訪問網絡耗費較大且延遲也較高,所以理想狀態下要查找數據剛剛好就在本機上,就不用耗費資源查找了,就需要通過機架感知。大型hadoop集群通過機架形式組織,而且同一機架上不同節點間的網絡狀況比不同機架之間的更為理想。
9.心跳機制:Hadoop是主從結構,即master/slave結構,master有NameNode,ResourceManager,SecondaryManager;slave有DataNode,NodeManager。master啟動時會啟動一個ipc服務(Inner-Process-Communication,通信間進程),等待slave連接。slave啟動時,會主動連接ipc服務,并且每隔3秒連接一次master,這就是“心跳”。slave通過心跳機制匯報自己的狀態,job完成情況等給master,同事master也通過心跳機制向slave下達命令,分配任務。同樣的,ResourceManager和NodeManager之間也通過心跳機制進行交互。如果master長時間沒有收到slave的心跳,那么master就認為該slave宕機了,如果slave宕機了,master就會把slave的數據通過負載均衡機制分配給其他slave上,正在執行的任務也會被作廢,重新分配,重新執行。
10.HA機制:High Availablity高可用性,H2中用于結局NameNode的單點故障問題。通過配置Active/Standby兩個NameNode解決熱備份問題。active NN對外提供服務,standby NN只做備份,active NN將數據寫入共享存儲系統(NFS-NetWorkSystem,QJM,BooKeeper等)中而standby NN監聽,一旦有新數據寫入standby NN會讀取這些數據寫入自己的內存,保證和active NN保持同步,當active NN發生故障,standby NN可以立即頂替。每個節點上都有一個zookeeper。DN不斷向active NN 和standby NN發送心跳,zookeeper會檢測2個NN,active NN和standby NN通過共享存儲系統保持一致,當zookeeper監測到active NN出現故障時,會立即通過故障轉移控制器切換standby NN為激活狀態。
注意:SecondaryNameNode不是HA,只是階段性合并edits和fsimage,用以縮短NN啟動的時間,NN失效時SecondaryNN不能立即提供服務,而且也不能保證數據和NN的一致性。