Hadoop学习九:hdfs源代码调试

来源:互联网 发布:生命起源知乎 编辑:程序博客网 时间:2024/04/30 19:53

Hadoop学习九:hdfs源代码调试

标签(空格分隔): hadoop


  • Hadoop学习九hdfs源代码调试
    • 一利用log4j调试

一,利用log4j调试

1,在eclipse工程里面创建source folder
001.jpg-90.8kB

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

001.PNG-76.4kB

2,查看并设置日志级别

[hadoop002@hadoop002 hadoop-2.5.0]$ bin/hadoop daemonlog -getlevel hadoop002.com.cn:50070 org.apache.hadoop.hdfs.server.namenode.NameNode 

001.PNG-15.2kB

001.PNG-25.9kB

a:通过网页设置日志级别【临时生效】
001.PNG-30.3kB

b:通过shell命令设置日志级别【临时生效】

[hadoop002@hadoop002 hadoop-2.5.0]$ bin/hadoop daemonlog -setlevel hadoop002.com.cn:50070 org.apache.hadoop.hdfs.server.namenode.NameNode INFO

001.PNG-18.7kB

c:修改log4j文件【永久生效】

hadoop.root.logger=INFO,consolehadoop.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 确认信息。

#远程调试namenodeexport HADOOP_NAMENODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y"#远程调试datanodeexport HADOOP_DATANODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y"#远程调试RMexport YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"#远程调试NMexport 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

0 0
原创粉丝点击