当前位置 博文首页 > 文章内容

    Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法

    作者:shunshunshun18 栏目:未分类 时间:2021-04-03 14:44:47

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一 .前言

    昨天晚上遇到一个奇葩的问题, 搞好的环境DataNode启动报错. 报错信息提示的模棱两可,没办法定位原因.
    办法,开启远程调试…

    注意 : 开启远程调试的代码,必须与本地idea的代码必须保持一致.

    二 .服务器端配置

    2.1. 设置启动远程debug端口

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

    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