【深入淺出 Yarn 架構與實現】1-2 搭建 Hadoop 源碼閱讀環境

本文將介紹如何使用 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 選擇對應的文件夾目錄,進行導入。之後會進入漫長的程式載入過程(看機器配置和網速,可能幾十分鐘到幾小時不等)。
image.png

二)配置注釋環境

為了更方便的在閱讀源碼過程中記筆記,可在源碼基礎上創建新的分支用於記錄。
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-projecthadoop-mapreduce- projecthadoop-hdfs-projecthadoop-yarn-project 等。

  • hadoop-common-project:Hadoop 基礎庫所在目錄,該目錄中包含了其他所有模組可能會用到的基礎庫,包括 RPC、Metrics、Counter 等;
  • hadoop-mapreduce-project:MapReduce 框架的實現;
  • hadoop-hdfs-project:Hadoop 分散式文件系統實現;
  • hadoop-yarn-project:Hadoop 資源管理系統 YARN 實現,是我們需要重點關注的部分。

image.png

二)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、資源管理器等核心組件的實現。

image.png

三、遠程調試

配置與遠程部署的 hadoop 服務連接。
1、idea 中選擇 Run -> Edit Configurations
image.png

# 在 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 進行遠程連接調試了