HDFS的原理

HDFS(Hadoop Distributed File System )Hadoop分佈式文件系統。

HDFS上的角色:

NameNode:是Master節點,管理數據塊的映射,數據信息包括fsimage和edits。

SecondaryNameNode:分擔NameNode的工作,是NameNode的冷備份,合併fsimage和edits然後發給namenode

DataNode:Slave節點,負責存儲客戶端提交上來的數據塊

fsimage:hdfs的元數據鏡像文件,文件系統的目錄樹

edits:元數據的操作日誌,主要是文件系統的修改的操作日誌

HDFS中用到的基礎知識:

Java動態代理:在程序運行時動態的對一些東西做代理,代理在原來的方法之上做其他的事情

JavaNIO:(Java non-blocking IO)非阻塞IO,NIO是面向緩衝區的,JavaIO是面向流的,是阻塞的;JavaNIO是面向緩衝區的,需要將IO緩存到一個緩衝區;有三個核心組件Channel(通道)、Buffer(緩衝區)、Selector(運行單線程處理多個Channel);

Protobuf框架:結構數據序列化方法,用於通信協議、數據存儲等;

org.apache.hadoop.hdfs.protobuf

org.apache.hadoop.hdfs.server.protobuf

兩個類主要定義了Hadoop RPC的接口;

ClientProtocol:定義了由客戶端發起的,由namenode相應的操作;

ClientDataNodeProtocol:定義了Client與DataNode之間的接口

DataNodeProtocol:有客戶端發起調用的接口

HadoopRPC:
    基於IPC(進程間通信)模型實現一套高效的輕量級的RPC框架;
        採用的技術點有:java動態代理,javaNIO,protocol等基礎技術
    RPC:是一種通過網絡調用遠程計算機的服務的協議
        包括:通信模塊:(基於TCP/UDP可以是同步的也可以是異步的)
              客戶端Stub程序:
              服務端Stub程序:
              請求程序:
              服務程序:
    org.apache.hadoop.ipc.Client
    org.apache.hadoop.ipc.Server

寫操作:

讀操作:

DataNode啓動、心跳以及執行名字節點指令流程

DataNode啓動後與NameNode的交互主要包括三個部分:1:握手,2:註冊,3:塊彙報以及緩存彙報

HA切換流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章