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 进程详解

HDFS 编程实践(Hadoop3.1.3)

HDFS 编程实践(Hadoop3.1.3)

我不是九爷 带你了解 Hadoop分布式文件系统设计要点与架构

大数据学习linux基础

[0010] windows 下 eclipse 开发 hdfs程序样例