博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop大数据之Debug
阅读量:7007 次
发布时间:2019-06-27

本文共 1217 字,大约阅读时间需要 4 分钟。

为什么要学习远程debug?

以前都是在一个进程进行debug
hadoop很多进程,是一个集群,想调试某一个集群,要通过远程debug调试。hadoop是很多进程

JPDA简介

........

怎样配置远程调试

dt_socket 表示使用套接字传输
address=8000
server=y
suspend=y
需要在$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件中:
#远程调试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(运行的时候将被挂起)"

修改完成后 重新启动

stop-dfs.sh

start-dfs.sh

jps

[root@hadoop1 ~]# jps

4400 ResourceManager
31708 -- main class information unavailable
31791 -- main class information unavailable
4492 NodeManager
2906
31900 SecondaryNameNode
32001 Jps

为什么不显示main class的信息呢?

因为main class 已经被挂起

在windows下进行调试

windows开启eclipse

只要eclipse中有源码

NameNode.class 找到main方法 debug Configuration Name:XXXX Host:192.168.8.101 Port:8888 debug

通过jps查看,发现namenode已经启动

然后找到DataNode.class
Host:192.168.8.101 Port:9888 debug

jps

已经启动datanode

 

sbin下面 hadoop-daemon.sh 单独启动一个hadoop进程

hadoop-daemon.sh start datanode 启动datanode进程

---------------------------------------------------
NameNodeRpcServer.class
找到 getBlockLocations
这是服务端,客户端调用的时候会进来

debug HDFSDemo.java

转载于:https://www.cnblogs.com/muziyushao/p/4248226.html

你可能感兴趣的文章