Hadoop学习九:hdfs源代码调试
Posted forrestxingyunfei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop学习九:hdfs源代码调试相关的知识,希望对你有一定的参考价值。
Hadoop学习九:hdfs源代码调试
标签(空格分隔): hadoop
一,利用log4j调试
1,在eclipse工程里面创建source folder
2,拷贝log4j.properties文件
[hadoop002@hadoop002 hadoop]$ cp log4j.properties /home/hadoop002/workspace5/hadoopstudy/res
3,刷新eclipse工程
日志级别:DEBUG
[hadoop002@hadoop002 hadoop-2.5.0]$ ps -ef|grep namenode
2,查看并设置日志级别
[hadoop002@hadoop002 hadoop-2.5.0]$ bin/hadoop daemonlog -getlevel hadoop002.com.cn:50070 org.apache.hadoop.hdfs.server.namenode.NameNode
a:通过网页设置日志级别【临时生效】
b:通过shell命令设置日志级别【临时生效】
[hadoop002@hadoop002 hadoop-2.5.0]$ bin/hadoop daemonlog -setlevel hadoop002.com.cn:50070 org.apache.hadoop.hdfs.server.namenode.NameNode INFO
c:修改log4j文件【永久生效】
hadoop.root.logger=INFO,console
hadoop.log.dir=.
hadoop.log.file=hadoop.log
方式二:eclipse远程调试代码
步骤 1 调试模式下启动 Hadoop。
在 Hadoop 安装目录下运行如下的 Shell 脚本:
export YARN_NODEMANAGER_OPTS=”-Xdebug -Xrunjdwp:transport=dt_socket,address=8788,
server=y,suspend=y”
sbin/start-all.sh
运行了脚本后会看到 Shell 命令行终端显示如下信息:
Listening for transport dt_socket at address: 8788
此时表明 ResourceManager 处于监听状态,直到收到 debug 确认信息。
#远程调试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"
#远程调试RM
export YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"
#远程调试NM
export YARN_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"
步骤 2 设置断点。
在前面新建的 Java 工程“hadoop-2.0”中,找到 ResourceManager 相关代码,并在感
兴趣的地方设置一些断点。
步骤 3 在 Eclipse 中调试 Hadoop 程序。
在 Eclipse 的菜单栏中,依次选择 “Run”→“Debug Configurations”→“Remote Java
Applications” ,并按照要求填写远程调试器名称(自己定义一个即可) ,ResourceManager
所在 host 以及监听端口号等信息,并选择 Hadoop 源代码工程,便可进入调试模式。
调试过程中,ResourceManager 输出的信息被存储到日志文件夹下的 yarn-XXX-
resourcemanager-localhost.log 文件(XXX 为当前用户名)中,可通过以下命令查看调试过
程中打印的日志:
tail -f logs/yarn-XXX-resourcemanager-localhost.log
以上是关于Hadoop学习九:hdfs源代码调试的主要内容,如果未能解决你的问题,请参考以下文章
2021年 全网最细大数据学习笔记:Hadoop 之 HDFS 进程详解