Hadoop 使用IntelliJ IDEA 進行遠程調試代碼的配置方法

一 .前言

昨天晚上遇到一個奇葩的問題, 搞好的環境DataNode啟動報錯. 報錯信息提示的模棱兩可,沒辦法定位原因.
辦法,開啟遠程調試…

註意 : 開啟遠程調試的代碼,必須與本地idea的代碼必須保持一致.

二 .服務器端配置

2.1. 設置啟動遠程debug端口

修改 服務器上的配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 增加 環境變量即可.

組件 環境變量設置
NameNode export HADOOP_NAMENODE_OPTS=”-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y”
DataNode export HADOOP_DATANODE_OPTS=”-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y”
ResourceManager export YARN_RESOURCEMANAGER_OPTS=”-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y”
NodeManager export YARN_NODEMANAGER_OPTS=”-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y”

2.2. 具體操作

1.編輯服務器上的配置文件[${HADOOP_HOME}/etc/hadoop/hadoop-env.sh`]
隨便加上一行[記住端口!!!]:

export HADOOP_DATANODE_OPTS=”-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y”

啟動服務即可 [啟動完, JVM返現有jdwp的配置,會自動阻塞, 等到idea調試連接.].

因為我要調試的是DataNode .
所以啟動命令為:

cd ${HADOOP_HOME}/sbin

# 啟動datanode
sh hadoop-daemon.sh start datanode

查看日志

為瞭便於觀察報錯信息 . 打開datanode相關的 日志, 使用命令進行查看就可以瞭.

到這裡,服務端配置就完成瞭.

三 .Idea配置

將與服務器同步的代碼導入到idea中, 導入完成, 不編譯,不管報錯信息…
隻要導入到idea , 等idea自己構建完就可以瞭…

3.1. 根據報錯信息定位到斷點所在的位置 報錯信息如下:

2021-03-27 22:47:51,949 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.RuntimeException: Cannot start secure DataNode due to incorrect config. See https://cwiki.apache.org/confluence/display/HADOOP/Secure+DataNode for details.
 at org.apache.hadoop.hdfs.server.datanode.DataNode.checkSecureConfig(DataNode.java:1523)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1376)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:501)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2806)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2714)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2756)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2900)
 at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2924)
2021-03-27 22:47:51,959 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1: java.lang.RuntimeException: Cannot start secure DataNode due to incorrect config. See https://cwiki.apache.org/confluence/display/HADOOP/Secure+DataNode for details.

可以看到是 org.apache.hadoop.hdfs.server.datanode.DataNode.checkSecureConfig方法.
所以直接找到代碼, 加上斷點即可…

在這裡插入圖片描述

3.2. 配置遠程連接

-點擊 Edit Configurations....

在這裡插入圖片描述

建立遠程debug就可以瞭
主要是端口一定要跟服務端配置的端口要匹配.

在這裡插入圖片描述

第0步, 選擇Remote 的截圖.

在這裡插入圖片描述

3.3. 啟動調試

-選擇剛才的配置,啟動debug調試即可. 然後就可以等待連接到服務器,進行DEBUG操作瞭…

在這裡插入圖片描述

參考文章:
https://www.jianshu.com/p/f33fe9bbca17

到此這篇關於Hadoop 使用IntelliJ IDEA 進行遠程調試代碼的配置方法的文章就介紹到這瞭,更多相關IDEA 遠程調試內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!