首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

应用vtune分析hadoop

2012-07-18 
使用vtune分析hadoop1.??????使用vtune分析tasktracker,jobtracker,datanode1.1在conf/hadoop-env.sh中添

使用vtune分析hadoop
1.??????使用vtune分析tasktracker,jobtracker,datanode

1.1在conf/hadoop-env.sh中添加如下修改,这样在vtune的结果中能看到jit信息。

export AMPLXE_EXPERIMENTAL=1


1.2在bin/hadoop中,将如下语句进行替换。

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"

?

替换如下,以分析tasktracker为例,分析其他进程,作相应的修改即可。

  if [ "$COMMAND" = "tasktracker" ] ; then    exec "/home/chengtao/soft/intel/vtune_amplifier_xe_2011/bin64/amplxe-cl" -collect hotspots -r /home/chengtao/test_tasktracker "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"  else    exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"  fi

这样修改的作用在于,让vtune启动相应的线程,能够收集数据。

?

1.3在bin/hadoop-daemon.sh中,将下面语句进行替换

echo $! > $pid

替换内容如下

  if [ "$command" = "tasktracker" ];then      sleep 3      ps aux | grep -v "vtune" | grep "TaskTracker" | awk '{if(NR==1)print $2}' > $pid    else        echo $! > $pid  fi

这样修改的作用在于,将实际起来的tasktracker id写到$pid中,否则写入的是vtune的进程的id,在运行bin/stop-all.sh的时候,tasktracker的进程是stop不掉的。Sleep 3 是为了等tasktracker确实已经起来了。

?

2.??????使用vtune分析任务线程TaskRunner

这里需要修改hadoop的代码,使得taskrunner启动的时候,是试用vtune起来的。代码的具体修改是在mapred/org/apache/hadoop/mapred/TaskRunner.java这个文件中。在vargs.add(jvm.toString());之前添加。

vargs.add("/home/hadoop/vtune/vtune_amplifier_xe_2011/bin64/amplxe-cl");vargs.add("-collect");vargs.add("hotspots");vargs.add("-r");vargs.add("/home/hadoop/" + taskid.toString());

这样就可以分析实际跑任务的线程了。会在/home/hadoop目录下出现较多的taskid目录,每个目录下对应着taskid这个线程的分析结果

?

3.????? 总结

通过上面的修改,可以使用vtune对hadoop进行不同层面的分析,对hadop的优化或许提供很好的思路。

?

热点排行