- Hadoop 3實戰(zhàn)指南
- 孫志偉
- 626字
- 2021-06-15 16:02:47
1.3.2 斷點調(diào)試代碼
本節(jié)主要介紹遠程斷點調(diào)試代碼。進行遠程斷點調(diào)試時,首先需要部署一套Hadoop環(huán)境,偽分布式和分布式都可以。當然,也可以遠程斷點調(diào)試線上環(huán)境。其次,要保證1.3節(jié)開頭所講的源碼閱讀環(huán)境正常。
遠程斷點調(diào)試代碼分為三步:第一步是在遠程代碼端設(shè)置一些Java啟動參數(shù),第二步是在IDEA中設(shè)置遠程服務的IP地址與端口,第三步是在遠程代碼服務器上啟動相關(guān)進程,然后在IDEA中進行斷點調(diào)試。
假如要調(diào)試Hadoop命令,需先在HADOOP_HOME/bin/hadoop文件中添加如下代碼:
HADOOP_OPTS="$HADOOP_OPTS -Xdebug -
Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"
添加之后的結(jié)果如下:
HADOOP_OPTS="$HADOOP_OPTS -
Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,NullAppender}"
# 將代碼添加在下面
HADOOP_OPTS="$HADOOP_OPTS -Xdebug -
Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"
export CLASSPATH=$CLASSPATH
# 執(zhí)行Hadoop相關(guān)命令
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
然后執(zhí)行Hadoop命令,例如hadoop fs -ls /tmp
,此時ls
的執(zhí)行過程會被卡住,提示Listening for transport dt_socket at address: 8888
,這表明端口8888處于監(jiān)聽狀態(tài),可以接收來自IDEA的斷點調(diào)試請求。
接著在IDEA中找到要進行斷點調(diào)試的主類,如果執(zhí)行Hadoop命令時輸入的參數(shù)是fs
,則在HADOOP_HOME/bin/hadoop文件中找fs
對應的主類FsShell
,代碼如下:
if [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell
在IDEA中找到FsShell
主類(可以通過快捷鍵Command+O或者Ctrl+N)之后,配置其遠程斷點調(diào)試。具體步驟為選擇Run
→Edit Configurations
,在彈出的頁面左上角處單擊加號+,然后添加Remote選項,如圖1-8所示。

圖1-8 添加Remote選項
添加Remote選項之后,對其進行簡單修改就行,這里主要修改Host、Port和module's classpath。將Name改為FsShell,這是為了與其他任務進行區(qū)分,因為Name的默認值為Unnamed。將Host改為遠程服務器的IP地址或者主機名,Port改為遠程服務設(shè)置的端口,這兩個值是在HADOOP_HOME/bin/hadoop文件中配置的IP地址和端口。將module's classpath改為FsShell所在的模塊包,如圖1-9所示。

圖1-9 修改Remote選項
修改好之后,就可以設(shè)置斷點進行遠程斷點調(diào)試了。
- 數(shù)據(jù)庫基礎(chǔ)教程(SQL Server平臺)
- 同步:秩序如何從混沌中涌現(xiàn)
- Python數(shù)據(jù)挖掘:入門、進階與實用案例分析
- 劍破冰山:Oracle開發(fā)藝術(shù)
- 從0到1:數(shù)據(jù)分析師養(yǎng)成寶典
- Live Longer with AI
- Python數(shù)據(jù)分析:基于Plotly的動態(tài)可視化繪圖
- Dependency Injection with AngularJS
- Learning Proxmox VE
- Python數(shù)據(jù)分析從小白到專家
- 算力經(jīng)濟:從超級計算到云計算
- 從Lucene到Elasticsearch:全文檢索實戰(zhàn)
- Google Cloud Platform for Architects
- AI Crash Course
- 一類智能優(yōu)化算法的改進及應用研究