Hadoop学习总结之五:Hadoop的运行痕迹.doc
文本预览下载声明
在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题。
本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通过这些痕迹来解决问题。
一、环境的搭建
为了能够跟踪这些运行的痕迹,我们需要搭建一个特殊的环境,从而可以一步步的查看上一节提到的一些关键步骤所引起的变化。
我们首先搭建一个拥有一个NameNode(namenode:04),三个DataNode(datanode01:05, datanode02:06, datanode03:07)的Hadoop环境,其中SecondaryNameNode和NameNode运行在同一台机器上。
对于这四台机器上的Hadoop,我们需要进行如下相同的配置:
NameNode,SeondaryNameNode,JobTracker都应该运行在namenode:04机器上
DataNode,TaskTracker,以及生成的Map和Reduce的Task JVM应该运行在datanode01, datanode02, datanode03上
数据共有三份备份
HDFS以及Map-Reduce运行的数据放在/data/hadoop/dir/tmp文件夹下
property
? name/name
? valuehdfs://04:9000/value
/property
property
? namemapred.job.tracker/name
? value04:9001/value
/property
property
? namedfs.replication/name
? value3/value
/property
property
? namehadoop.tmp.dir/name
? value/data/hadoopdir/tmp/value
? descriptionA base for other temporary directories./description
/property
然而由于Map-Reduce过程相对复杂,为了能够对Map和Reduce的Task JVM进行远程的调试,从而能一步一步观察,因而对NameNode和三个DataNode有一些不同的配置:
对于NameNode:
设置mapred.job.reuse.jvm.num.tasks为-1,使得多个运行于同一个DataNode上的Map和Reduce的Task共用同一个JVM,从而方便对此JVM进行远程调试,并且不会因为多个Task JVM监听同一个远程调试端口而发生冲突
对于mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum的配置以DataNode上的为准
设置io.sort.mb为1M(原来为100M),是为了在Map阶段让内存中的map output尽快的spill到文件中来,从而我们可以观察map的输出
设置mapred.child.java.opts的时候,即设置Task JVM的运行参数,添加远程调试监听端口8333
? property??? namemapred.job.reuse.jvm.num.tasks/name??? value-1/value??? description/description? /property? property??? namemapred.tasktracker.map.tasks.maximum/name??? value1/value??? description/description? /property? property??? namemapred.tasktracker.reduce.tasks.maximum/name??? value1/value??? description/description? /property? property??? nameio.sort.mb/name??? value1/value??? description/description? /property? property??? namemapred.child.java.opts/name??? value-Xmx200m -agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=y/value??? description/description? /property
? property??? namemap
显示全部