1.大致流程
datanode.main() // 入口函式
|——securemain(args, null);
|——createdatanode(args, null, resources); // 建立datanode
|——instantiatedatanode(args, conf, resources);
|——getstoragelocations(conf); // 根據配置拿到hdfs的block實際儲存的本地路徑,即hdfs-site.xml檔案中的dfs.datanode.data.dir屬性
|——usergroupinformation.setconfiguration(conf); // 設定配置
|——makeinstance(datalocations, conf, resources); // 例項化datanode
|——dn.rundatanodedaemon(); // 執行datanode的後台守護執行緒
|——datanode.join(); // 將此datanode放入乙個執行緒等待池
2.詳解makeinstance(datalocations, conf, resources)方法
1. listlocations = checkstoragelocations(datadirs, localfs, datanodediskchecker);
許可權檢查,拿到可用儲存路徑
2.new datanode(conf, locations, resources);
先給成員變數進行一系列賦值
gethostname(conf); // 獲取datanode所在機器的主機名
startdatanode(conf, datadirs, resources); // 啟動datanode
|——new datastorage(); // 管理磁碟目錄、
|——registermxbean(); // 註冊乙個datanode的bean
|——initdataxceiver(conf); // 重點方法
|——startinfoserver(conf); // 啟動datanode的http服務,不對外提供服務
|——pausemonitor.start(); // 構造乙個jvmpausemonitor,然後初始化,再啟動,檢查jvm是否停頓
|——initipcserver(conf); // 初始化rpc服務
|——blockpoolmanager.refreshnamenodes(conf); // 主要是向namenode註冊,匯報心跳、磁碟塊、記憶體塊等資訊
3.重點方法initdataxceiver(conf)
new tcppeerserver(secureresources); // 提供serversocket的功能
new dataxceiverserver(tcppeerserver, conf, this);
|——利用建立好的tcppeerserver建立dataxceiverserver
|——this.maxxceivercount =
conf.getint(dfsconfigkeys.dfs_datanode_max_receiver_threads_key,
dfsconfigkeys.dfs_datanode_max_receiver_threads_default);
表示datanode上負責進行檔案操作的執行緒數,預設4096
|——this.estimateblocksize = conf.getlongbytes(dfsconfigkeys.dfs_block_size_key,
dfsconfigkeys.dfs_block_size_default); // block的大小,預設128m
|——new blockbalancethrottler(); // 構建乙個平衡節流器
兩個引數:第乙個引數bandwidth:每個datanode用來移動資料時,占用頻寬的上限,預設10m
第二個引數maxthreads:每台datanode的並行拷貝數,預設50
hdfs中datanode和namenode的坑
在聊心酸史之前,先鋪墊一下問題的由來 本來就是簡單的使用簡單操作檔案到hdfs中,同樣的 別的同學都好使,而我的不行,如下 謹記 c windows system32 drivers etc hosts做ip對映,否則連線不上 from hdfs.client import client 關於pyt...
HDFS中DataNode工作機制
1 datanode工作機制 1 乙個資料塊在 datanode 上以檔案形式儲存在磁碟上,包括兩個檔案,乙個是資料本身,乙個是元資料報括資料塊的長度 塊資料的校驗和以及時間戳。2 datanode 啟動後向 namenode 註冊,通過後,週期性 1小時 的向 namenode 上報所有的塊資訊。...
HDFS中DataNode工作機制
1.datanode工作機制 1 乙個資料塊在datanode上以檔案形式儲存在磁碟上,包括兩個檔案,乙個是資料本身,乙個是元資料 包括資料塊的長度,塊資料的校驗和,以及時間戳 2 datanode啟動後向namenode註冊,通過後,週期性 1小時 的向namenode上報所有的塊資訊。3 心跳是...