Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法
一 .前言
昨天晚上遇到一個(gè)奇葩的問(wèn)題, 搞好的環(huán)境DataNode啟動(dòng)報(bào)錯(cuò). 報(bào)錯(cuò)信息提示的模棱兩可,沒(méi)辦法定位原因.
辦法,開(kāi)啟遠(yuǎn)程調(diào)試…
注意 : 開(kāi)啟遠(yuǎn)程調(diào)試的代碼,必須與本地idea的代碼必須保持一致.
二 .服務(wù)器端配置
2.1. 設(shè)置啟動(dòng)遠(yuǎn)程debug端口
修改 服務(wù)器上的配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 增加 環(huán)境變量即可.
| 組件 | 環(huán)境變量設(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.編輯服務(wù)器上的配置文件[${HADOOP_HOME}/etc/hadoop/hadoop-env.sh`]
隨便加上一行[記住端口!!!]:
export HADOOP_DATANODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y"
啟動(dòng)服務(wù)即可 [啟動(dòng)完, JVM返現(xiàn)有jdwp的配置,會(huì)自動(dòng)阻塞, 等到idea調(diào)試連接.].
因?yàn)槲乙{(diào)試的是DataNode .
所以啟動(dòng)命令為:
cd ${HADOOP_HOME}/sbin
# 啟動(dòng)datanode
sh hadoop-daemon.sh start datanode
查看日志
為了便于觀察報(bào)錯(cuò)信息 . 打開(kāi)datanode相關(guān)的 日志, 使用命令進(jìn)行查看就可以了.
到這里,服務(wù)端配置就完成了.
三 .Idea配置
將與服務(wù)器同步的代碼導(dǎo)入到idea中, 導(dǎo)入完成, 不編譯,不管報(bào)錯(cuò)信息…
只要導(dǎo)入到idea , 等idea自己構(gòu)建完就可以了…
3.1. 根據(jù)報(bào)錯(cuò)信息定位到斷點(diǎn)所在的位置 報(bào)錯(cuò)信息如下:
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方法.
所以直接找到代碼, 加上斷點(diǎn)即可…

3.2. 配置遠(yuǎn)程連接
-點(diǎn)擊 Edit Configurations....

建立遠(yuǎn)程debug就可以了
主要是端口一定要跟服務(wù)端配置的端口要匹配.

第0步, 選擇Remote 的截圖.

3.3. 啟動(dòng)調(diào)試
-選擇剛才的配置,啟動(dòng)debug調(diào)試即可. 然后就可以等待連接到服務(wù)器,進(jìn)行DEBUG操作了…

參考文章:
https://www.jianshu.com/p/f33fe9bbca17
到此這篇關(guān)于Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法的文章就介紹到這了,更多相關(guān)IDEA 遠(yuǎn)程調(diào)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Web程序中利用Spring框架返回JSON格式的日期
這里我們來(lái)介紹一下Java Web程序中利用Spring框架返回JSON格式的日期的方法,前提注意使用@DatetimeFormat時(shí)要引入一個(gè)類庫(kù)joda-time-版本.jar,否則會(huì)無(wú)法訪問(wèn)相應(yīng)路徑2016-05-05
解決CentOS7中運(yùn)行jar包報(bào)錯(cuò):xxx(Permission?denied)
在實(shí)際工作我們經(jīng)常會(huì)在linux上運(yùn)行Spring boot編寫的微服務(wù)程序,下面這篇文章主要給大家介紹了關(guān)于如何解決CentOS7中運(yùn)行jar包報(bào)錯(cuò):xxx(Permission?denied)的相關(guān)資料,需要的朋友可以參考下2024-02-02
關(guān)于通過(guò)Java連接mysql對(duì)反斜杠”\“轉(zhuǎn)義的測(cè)試詳解
這篇文章主要給大家介紹了關(guān)于通過(guò)Java連接mysql對(duì)反斜杠”\“轉(zhuǎn)義的測(cè)試的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家理解反斜杠”\“轉(zhuǎn)義具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
Java switch 語(yǔ)句如何使用 String 參數(shù)
這篇文章主要介紹了Java switch 語(yǔ)句如何使用 String 參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
springboot集成mybatis-plus全過(guò)程
本文詳細(xì)介紹了如何在SpringBoot環(huán)境下集成MyBatis-Plus,包括配置maven依賴、application.yaml文件、創(chuàng)建數(shù)據(jù)庫(kù)和Java實(shí)體類、Mapper層、Service層和Controller層的設(shè)置,同時(shí),還涵蓋了時(shí)間自動(dòng)填充、分頁(yè)查詢、多對(duì)一和一對(duì)多的數(shù)據(jù)庫(kù)映射關(guān)系設(shè)置2024-09-09
解決MyBatis-Plus使用動(dòng)態(tài)表名selectPage不生效的問(wèn)題
這篇文章主要介紹了如惡化解決MyBatis-Plus使用動(dòng)態(tài)表名selectPage不生效的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
spring mvc實(shí)現(xiàn)文件上傳與下載功能
這篇文章主要為大家詳細(xì)介紹了spring mvc實(shí)現(xiàn)文件上傳與下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Java實(shí)現(xiàn)注冊(cè)登錄跳轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)注冊(cè)登錄跳轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06

