hadoop大数据--深入讲解hdfs源码
hdfs 讀數據的流程
1、跟namenode通信查詢元數據,找到文件塊所在的datanode服務器。
2、挑選一臺datanode(就近原則,然后隨機)服務器,請求建立socket流。
3、datanode開始發送數據(從磁盤里面讀取數據放入流,以packet為單位來做校驗)。
4、客戶端以packet為單位接收,現在本地緩存,然后寫入目標文件。
hdfs 寫數據的流程
1、根namenode通信請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在。
2、namenode返回是否可以上傳。
3、client請求第一個 block該傳輸到哪些datanode服務器上。
4、namenode返回3個datanode服務器A/B/C。
5、client請求3臺dn中的一臺A上傳數據(本質上是一個RPC調用,建立pipeline),A收到請求會繼續調用B,然后B調用C,將真個pipeline建立完成,逐級返回客戶端。
6、client開始往A上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答隊列等待應答。
7、當一個block傳輸完成之后,client再次請求namenode上傳第二個block的服務器。
hadoop的RPC框架
Hadoop中各節點之間存在大量的遠程過程調用,hadoop為此封裝了一個RPC基礎框架
使用方法:
- (1)定義一個接口,實例如下:
- (2)編寫接口的業務實現類
- (3)使用RPC框架API將業務實現發布為RPC服務
- (4)客戶端通過RPC框架API獲取跟RPC服務端通信的socket代理,調用遠端服務
遠程debug跟蹤Hadoop服務端代碼
- (1)需要在$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件的最后添加你想debug的進程
- (2)在本地的eclipse中打開NameNode或者DataNode類,點擊右鍵,添加遠程debug配置,如圖:
- (3)添加一個遠程debug調試配置
- (4)填寫遠程服務端的debug地址和端口號
- (5)接著在namenode類中添加斷點,如圖:
- (6)回到集群服務器上啟動hdfs.
- (7)回到eclipse之前配置的遠程debug配置上,點擊debug開始調試
- (8)成功進入斷點
總結
以上是生活随笔為你收集整理的hadoop大数据--深入讲解hdfs源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop大数据分布式文件系统hdfs
- 下一篇: springboot+mybatis整合