【深入淺出 Yarn 架構與實現】1-2 搭建 Hadoop 源碼閱讀環境
- 2022 年 11 月 8 日
- 筆記
- hadoop, yarn, 大數據, 深入淺出 Yarn 架構與實現
本文將介紹如何使用 idea 搭建 Hadoop 源碼閱讀環境。(默認已安裝好 Java、Maven 環境)
一、搭建源碼閱讀環境
一)idea 導入 hadoop 工程
從 github 上拉取程式碼。
//github.com/apache/hadoop
可以選擇對應的分支
# 如拉取 2.8.5 分支
git clone -b branch-2.8.5 [email protected]:apache/hadoop.git
在 idea 中點擊 File - Open
選擇對應的文件夾目錄,進行導入。之後會進入漫長的程式載入過程(看機器配置和網速,可能幾十分鐘到幾小時不等)。
二)配置注釋環境
為了更方便的在閱讀源碼過程中記筆記,可在源碼基礎上創建新的分支用於記錄。
1、創建新分支
# 如在 branch-2.8.5 基礎上創建
git checkout -b branch-2.8.5-comment
2、在 github 上創建個新的項目
3、將本地分支 branch-2.8.5-comment
推送到遠端。之後可以在自己 github 上看到這個項目分支了。
# 刪除原來的遠端項目
git remote remove origin
# 添加新的項目地址
git remote add origin <你的項目地址>
# 推送新的分支
git push -u origin branch-2.8.5-comment
二、源碼組織架構
一)根目錄結構
導入工程後,可以看到如下圖的目錄結構。其中,比較重要的目錄有:hadoop-common-project
、hadoop-mapreduce- project
、hadoop-hdfs-project
和 hadoop-yarn-project
等。
- hadoop-common-project:Hadoop 基礎庫所在目錄,該目錄中包含了其他所有模組可能會用到的基礎庫,包括 RPC、Metrics、Counter 等;
- hadoop-mapreduce-project:MapReduce 框架的實現;
- hadoop-hdfs-project:Hadoop 分散式文件系統實現;
- hadoop-yarn-project:Hadoop 資源管理系統 YARN 實現,是我們需要重點關注的部分。
二)yarn 目錄結構
Hadoop YARN 主要關注五個部分:API、Common、Applications、Client 和 Server。
- YARN API:給出了 YARN 內部涉及 RPC 協議的 Java 聲明和 Protocol Buffers 定義;
- YARN Common:包含了 YARN 底層庫實現, 包括事件庫、服務庫、狀態機庫、Web 介面庫等;
- YARN Applications:包含了兩個 Application 編程實例,分別是 distributedshell 和 Unmanaged AM;
- YARN Client:該部分封裝了幾個與 YARN RPC 協議交互相關的庫,方便用戶開發應用程式;
- YARN Server:該部分給出了 YARN 的核心實現,包括 ResourceManager、NodeManager、資源管理器等核心組件的實現。
三、遠程調試
配置與遠程部署的 hadoop 服務連接。
1、idea 中選擇 Run -> Edit Configurations
# 在 yarn-env.sh 中添加
export YARN_NODEMANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006"
export YARN_RESOURCEMANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
# 如果想要啟動時先連接 debug,則設置 suspend=y
4、可以用 idea 進行遠程連接調試了