在eclipse下遠程調試hadoop2.0

在《在eclipse下編譯hadoop2.0源碼》一文中,我詳細介紹瞭如何在eclipse環境和命令行環境下編譯hadoop2.0源代碼,並簡單介紹瞭如何構建hadoop環境,這篇文章將着重介紹如何在eclipse下調試源代碼。

在hadoop2.0中,常用的模塊有NameNode,DataNode, ResourceManager, NodeManager, FsShell等。這裏我們以調試FsShell和NameNode模塊爲例。

FsShell命令調試:

FsShell命令是hadoop的Client端(任何hadoop集羣上的節點都可以作爲Client端)訪問hadoop集羣的最基本方式。比如 bin/hadoop fs 命令就是客戶端訪問hadoop文件系統的命令集。我們以bin/hadoop fs -ls / (顯示hadoop文件系統根目錄下的文件)爲例。

  • 在Client節點上的hadoop目錄下找到文件bin/hadoop。打開這個腳本,找到如下圖所在位置

  • 改成如下圖所示:

  • 注意suspent設置爲y表示暫停等待,知道調試器(這裏是用eclipse中的調試)連接上才繼續執行, address=8000表示在8000端口監聽請求,也可以換成其他不衝突的端口。

因爲調試的FsShell需要hadoop運行時環境,所以首先應當啓動hadoop集羣。啓動過程這裏不做介紹,啓動成功以後,我們在Client端輸入命令, 會顯示如下圖所示的信息:

這就表示調試環境已經建好並在8000端口開始監聽調試請求。下面是在eclipse開始調試的步驟

  • 打開eclipse並找到hadoop-common(上一篇博客介紹瞭如何將hadoop導入到eclipse中)
  • 在hadoop-common找到文件FsShell.java文件並打開
  • 找到FsShell中的main函數,並在main函數第一行處設置斷點。
  • 右鍵改文件,選擇Debug As -> Debug Configurations... 彈出配置對話框
  • 在左側找到並雙擊Remote Application,這時會新建一個配置頁,主機填Client端對應的IP地址,端口爲8000,如下圖

  • 點擊Debug,現在,你就可以調試剛剛輸入的命令了,跟蹤該條命令的執行過程。

NameNode調試:

NameNode調試和上面的調試步驟基本類似,下面只做簡單的介紹。

  • 調試NameNode需要修改NameNode所在節點的bin/hdfs文件,修改如下:

 

  改爲

  其中,suspend=n,如果設置爲y,則可以調試NameNode的啓動過程。

  • 啓動NameNode
  • 調試NameNode的入口在hadoop-hdfs項目的NameNode.java文件中,找到main函數,並設置斷點
  • 同FsShell一樣,新建一個Remote Application,填入的主機爲NameNode節點所在的IP,端口爲8000
  • 點擊Debug,調試就可以開始了。

關於eclipse調試hadoop2.0的內容就介紹到這裏。現在我們就可以利用調試跟蹤hadoop的執行流程,更深入的分析hadoop源代碼。 最後甚至可以修改hadoop源代碼,加入自己需要的功能。

本文來自博客園,如果查看原文請點擊 http://www.cnblogs.com/meibenjin/p/3175679.html


發佈了52 篇原創文章 · 獲贊 3 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章