Hadoop源碼分析四遠程debug調試

1、 hadoop遠程debug

從文檔(3)中可以知道hadoop啟動服務的時候最終都是通過java命令來啟動的,其本質是一個java程序。在研究源碼的時候debug是一種很重要的工具,但是hadoop是編譯好瞭的代碼,直接在liunx中運行的,無法象普通的程序一樣可以直接在eclipse之類的工具中直接debug運行。
對於上述情況java提供瞭一種遠程debug的方式。

這種方式需要在java程序啟動的時候添加以下參數:

-agentlib:jdwp=transport=dt_socket,server=y,address=6603,suspend=y

其中transport是指定雙方的數據傳輸方式,server表示是否監聽debuger的調試請求,address是監聽端口,suspend是表示是否等待啟動。

所以為瞭能遠程debug hadoop,需要修改hadoop的啟動腳本。

推薦修改bin目錄下的hdfs文件進行修改

修改方式如下圖:

在這裡插入圖片描述

如上圖所示,被註釋掉的語句是包含遠程調試的參數,未被註釋的是其正常的啟動參數。在這裡修改還有一個好處是可以針對指定的服務進行遠程debug設置。上圖是針對namenode進行遠程debug設置。若要對其他的服務進行遠程debug,那麼隻需修改對應節點的hdfs文件中與該服務名稱對應的參數便可。
修改完成後,使用sbin目錄下的腳本啟動便可。

啟動成功後,便可以使用eclipse等工具進行遠程調試。

下面以eclipse為例

首先在eclipse的代碼框中點擊右鍵,在彈出的選項框中選擇debug as,在其彈出的選項框中選擇debug configurations。

打開debug的配置頁面

如下圖:

在這裡插入圖片描述

然後雙擊remote java application(或者點擊右鍵,然後選擇new configuration)

界面如下:

在這裡插入圖片描述

其中,name可以自定義,host需要寫啟動遠程debug服務器的地址,prot需要寫上述參數中的端口。若無誤便可點擊下方的debug按鈕,開始debug。

以上就是Hadoop遠程debug調試的詳細內容,本系列下一篇文章傳送門Hadoop源碼分析五hdfs架構原理剖析更多關於Hadoop的資料請持續關註WalkonNet其它相關文章!

推薦閱讀: