一旦工作,那就要努力的干,聪明的干,快速的干——用省下来的时间干自己喜欢干的事情。!

JVM远程调试Hadoop NameNode及MapReduce

hadoop lampnick 3937℃ 0评论
eclipse中的maven项目需要查看源代码时
项目不能够正常下载可以使用手动命令强行下载源代码
$>mvn dependency:sources -DdownloadSources=true(pom.xml所在文件夹执行)

JVM远程调试
[远端(s100,namenode)]
1.查看java远程调试的帮助
    c:/java -agentlib:jdwp=help
2.设置JVN的远程调试
    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000  //设置jvm的参数,启用远程调试。针对所有的java程序
    
3.给NN启动时增加JVM远程调试功能。
    a.修改[bin/hdfs]启动脚本
    HADOOP_NAMENODE_OPTS=$HADOOP_NAMENODE_OPTS  -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 //永久化的,不可取
    b.在shell当中直接设置环境变量
    $>export HADOOP_NAMENODE_OPTS="$HADOOP_NAMENODE_OPTS  -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
    c.完成远程调试之后,就可以关闭远程调试功能
    $>export HADOOP_NAMENODE_OPTS=
4.启动NN
    $>hadoop-daemon.sh start namenode
[客户端]
1.找到namenode类,在main方法上打断点。
2.eclipse右键选择调试->remote java application
    项目:myhadoop
    ConnectionType:Standard (socket attach)
    host:s100
    port:8000
3.开始调试



在win7和linux上通过远程调试,查看job在hadoop集群上的执行过程
[远端s100,linux]
1.传jar到linux
2.分析hadoop脚本,得知有HADOOP_CLIENT_OPTS环境变量,所以设置HADOOP_CLIENT_OPTS环境变量
$>export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS  -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
3.启动job提交命令
$>hadoop jar xxx.jar com.xx.App data/ncdc out3
4.等待客户端发起连接,进行调试。

[客户端,win7,eclipse]
1.在源代码中设置断点
    App.main()
2.eclipse右键选择调试->remote java application
    项目:myhadoop
    ConnectionType:Standard (socket attach)
    host:s100
    port:8000
3.开始调试


MR AM: MapReduce App master
resMgrDelegate:ResourceManager代理

YARN
    ResourceManager
    NodeManager
    
google
PB : protocal buffer,协议缓冲区
RPC:Remote procedure call远程过程调用

转载请注明:MitNick » JVM远程调试Hadoop NameNode及MapReduce

喜欢 (1)or分享 (0)
头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址