IDEA如何远程debug Hadoop/HIVE/SPARK
对于大数据开发人员来说,学会Debug大数据的基本组件非常重要,不仅可以让你可以更熟悉这些组件,而且可以让你更好的学习源码:
- IDEA远程debug Hadoop
- IDEA远程debug Hive
- IDEA远程debug Spark
IDEA远程debug Hadoop
1,需要配置要debug的命令参数,比如我准备要debug datanode
在bin目录下 复制一个脚本 cp hdfs hdfs_debug
编辑hdfs_debug脚本,在脚本最后修改:
#exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"'
exec "$JAVA" -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
2.在服务器上执行命令:
hdfs_debug datanode
Listening for transport dt_socket at address: 8000
3.在本地IDEA配置远程debug
配置对应的ip 和 端口,如下图:
4.配置好后,点击debug运行,console会打印,已连接上,此时已经debug上服务端,具体如下:
5.此时就可以开始debug具体代码了,比如我想跟踪getVolumeUsage 在本地在相关代码出打上断点,具体如下:
IDEA远程debug Hive
debug metastore
1.在metastore server机器上,开始debug模式,命令如下
# 可通过 --debug:port=8001 修改调试端口
hive --debug --service metastore
Starting Hive Metastore Server
Listening for transport dt_socket at address: 8000
2.在本地IDEA配置远程debug
配置对应的ip 和 端口,大致如 hadoop上的截图
3.配置好后,点击debug运行,console会打印,已连接上,此时已经debug上服务端,具体如下:
4.此时就可以在hive客户端上开始debug了,比如我执行一个建表操作,在本地在相关代码出打上断点,具体如下:
hive> create external table IF NOT EXISTS test_debug
> (
> uid string
> )
> partitioned by (dt string)
> row format delimited fields terminated by '\t'
> stored as textfile;
5,此时就会在调到本地的断点位置,可以开始debug代码了 O(∩_∩)O哈哈~ :
IDEA远程debug Spark
1.在spark客户端输入下面命令
export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000
spark-shell
2.在本地IDEA配置远程debug
配置对应的ip 和 端口,大致如 hadoop上的截图
3.配置好后,点击debug运行,console会打印,已连接上,此时已经debug上服务端,具体如下:
4.点击Intellij菜单下的Debug按钮,就会运行你的spark进程了。之后设置你要调试代码的断点,然后就可以和平常一样使用调试器了