Hadoop学习总结之五Hadoop的运行痕迹.docx

上传人:b****4 文档编号:6085176 上传时间:2023-05-09 格式:DOCX 页数:29 大小:25.82KB
下载 相关 举报
Hadoop学习总结之五Hadoop的运行痕迹.docx_第1页
第1页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第2页
第2页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第3页
第3页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第4页
第4页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第5页
第5页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第6页
第6页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第7页
第7页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第8页
第8页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第9页
第9页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第10页
第10页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第11页
第11页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第12页
第12页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第13页
第13页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第14页
第14页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第15页
第15页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第16页
第16页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第17页
第17页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第18页
第18页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第19页
第19页 / 共29页
Hadoop学习总结之五Hadoop的运行痕迹.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Hadoop学习总结之五Hadoop的运行痕迹.docx

《Hadoop学习总结之五Hadoop的运行痕迹.docx》由会员分享,可在线阅读,更多相关《Hadoop学习总结之五Hadoop的运行痕迹.docx(29页珍藏版)》请在冰点文库上搜索。

Hadoop学习总结之五Hadoop的运行痕迹.docx

Hadoop学习总结之五Hadoop的运行痕迹

在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题。

本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通过这些痕迹来解决问题。

一、环境的搭建

为了能够跟踪这些运行的痕迹,我们需要搭建一个特殊的环境,从而可以一步步的查看上一节提到的一些关键步骤所引起的变化。

我们首先搭建一个拥有一个NameNode(namenode:

192.168.1.104),三个DataNode(datanode01:

192.168.1.105,datanode02:

192.168.1.106,datanode03:

192.168.1.107)的Hadoop环境,其中SecondaryNameNode和NameNode运行在同一台机器上。

对于这四台机器上的Hadoop,我们需要进行如下相同的配置:

∙NameNode,SeondaryNameNode,JobTracker都应该运行在namenode:

192.168.1.104机器上

∙DataNode,TaskTracker,以及生成的Map和Reduce的TaskJVM应该运行在datanode01,datanode02,datanode03上

∙数据共有三份备份

∙HDFS以及Map-Reduce运行的数据放在/data/hadoop/dir/tmp文件夹下

 fs.default.name

 hdfs:

//192.168.1.104:

9000

 mapred.job.tracker

 192.168.1.104:

9001

 dfs.replication

 3

 hadoop.tmp.dir

 /data/hadoopdir/tmp

 Abaseforothertemporarydirectories.

然而由于Map-Reduce过程相对复杂,为了能够对Map和Reduce的TaskJVM进行远程的调试,从而能一步一步观察,因而对NameNode和三个DataNode有一些不同的配置:

对于NameNode:

∙设置mapred.job.reuse.jvm.num.tasks为-1,使得多个运行于同一个DataNode上的Map和Reduce的Task共用同一个JVM,从而方便对此JVM进行远程调试,并且不会因为多个TaskJVM监听同一个远程调试端口而发生冲突

∙对于mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum的配置以DataNode上的为准

∙设置io.sort.mb为1M(原来为100M),是为了在Map阶段让内存中的mapoutput尽快的spill到文件中来,从而我们可以观察map的输出

∙设置mapred.child.java.opts的时候,即设置TaskJVM的运行参数,添加远程调试监听端口8333

 

   mapred.job.reuse.jvm.num.tasks

   -1

   

 

 

   mapred.tasktracker.map.tasks.maximum

   1

   

 

 

   mapred.tasktracker.reduce.tasks.maximum

   1

   

 

 

   io.sort.mb

   1

   

 

 

   mapred.child.java.opts

   -Xmx200m-agentlib:

jdwp=transport=dt_socket,address=8883,server=y,suspend=y

   

 

 

   mapred.job.shuffle.input.buffer.percent

   0.001

   

 

   mapred.job.shuffle.merge.percent

   0.001

   

   

 

   io.sort.factor

   2

   

 

对于DataNode:

∙对于datanode01:

192.168.1.105,设置同时运行的maptask的个数(mapred.tasktracker.map.tasks.maximum)为1,同时运行的reducetask的个数(mapred.tasktracker.reduce.tasks.maximum)为0

∙对于datanode02:

192.168.1.106,设置同时运行的maptask的个数(mapred.tasktracker.map.tasks.maximum)为0,同时运行的reducetask的个数(mapred.tasktracker.reduce.tasks.maximum)为0

∙对于datanode02:

192.168.1.107,设置同时运行的maptask的个数(mapred.tasktracker.map.tasks.maximum)为0,同时运行的reducetask的个数(mapred.tasktracker.reduce.tasks.maximum)为1

∙之所以这样设置,是因为我们虽然可以控制多个Maptask共用同一个JVM,然而我们不能控制Maptask和ReduceTask也共用一个JVM。

从而当Maptask的JVM和ReduceTask的JVM同时在同一台机器上启动的时候,仍然会出现监听远程调用端口冲突的问题。

∙经过上面的设置,从而datanode01专门负责运行MapTask,datanode03专门负责运行ReduceTask,而datanode02不运行任何的Task,甚至连TaskTracker也不用启动了

∙对于ReduceTask设置mapred.job.shuffle.input.buffer.percent和mapred.job.shuffle.merge.percent为0.001,从而使得拷贝,合并阶段的中间结果都因为内存设置过小而写入硬盘,我们能够看到痕迹

∙设置io.sort.factor为2,使得在maptask输出不多的情况下,也能触发合并。

除了对Maptask和ReduceTask进行远程调试之外,我们还想对NameNode,SecondaryName,DataNode,JobTracker,TaskTracker进行远程调试,则需要修改一下bin/hadoop文件:

if["$COMMAND"="namenode"];then

 CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'

 HADOOP_OPTS="$HADOOP_OPTS$HADOOP_NAMENODE_OPTS-agentlib:

jdwp=transport=dt_socket,address=8888,server=y,suspend=n"

elif["$COMMAND"="secondarynamenode"];then

 CLASS='org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode'

 HADOOP_OPTS="$HADOOP_OPTS$HADOOP_SECONDARYNAMENODE_OPTS-agentlib:

jdwp=transport=dt_socket,address=8887,server=y,suspend=n"

elif["$COMMAND"="datanode"];then

 CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode'

 HADOOP_OPTS="$HADOOP_OPTS$HADOOP_DATANODE_OPTS-agentlib:

jdwp=transport=dt_socket,address=8886,server=y,suspend=n"

……

elif["$COMMAND"="jobtracker"];then

 CLASS=org.apache.hadoop.mapred.JobTracker

 HADOOP_OPTS="$HADOOP_OPTS$HADOOP_JOBTRACKER_OPTS-agentlib:

jdwp=transport=dt_socket,address=8885,server=y,suspend=n"

elif["$COMMAND"="tasktracker"];then

 CLASS=org.apache.hadoop.mapred.TaskTracker

 HADOOP_OPTS="$HADOOP_OPTS$HADOOP_TASKTRACKER_OPTS-agentlib:

jdwp=transport=dt_socket,address=8884,server=y,suspend=n"

在进行一切实验之前,我们首先清空/data/hadoopdir/tmp以及logs文件夹。

 

二、格式化HDFS

格式化HDFS需要运行命令:

bin/hadoopnamenode–format

于是打印出如下的日志:

10/11/2019:

52:

21INFOnamenode.NameNode:

STARTUP_MSG:

/************************************************************

STARTUP_MSG:

StartingNameNode

STARTUP_MSG:

  host=namenode/192.168.1.104

STARTUP_MSG:

  args=[-format]

STARTUP_MSG:

  version=0.19.2

STARTUP_MSG:

  build=https:

//svn.apache.org/repos/asf/hadoop/common/branches/branch-0.19-r789657;compiledby'root'onTueJun3012:

40:

50EDT2009

************************************************************/

10/11/2019:

52:

21INFOnamenode.FSNamesystem:

fsOwner=admin,sambashare

10/11/2019:

52:

21INFOnamenode.FSNamesystem:

supergroup=supergroup

10/11/2019:

52:

21INFOnamenode.FSNamesystem:

isPermissionEnabled=true

10/11/2019:

52:

21INFOcommon.Storage:

Imagefileofsize97savedin0seconds.

10/11/2019:

52:

21INFOcommon.Storage:

Storagedirectory/data/hadoopdir/tmp/dfs/namehasbeensuccessfullyformatted.

10/11/2019:

52:

21INFOnamenode.NameNode:

SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG:

ShuttingdownNameNodeatnamenode/192.168.1.104

************************************************************/

这个时候在NameNode的/data/hadoopdir/tmp下面出现如下的文件树形结构:

+-dfs

      +-name

             +---current

                        +----edits

                        +----fsimage

                        +----fstime

                        +----VERSION

             +---image

                        +----fsimage

这个时候,DataNode的/data/hadoopdir/tmp中还是空的。

 

二、启动Hadoop

启动Hadoop需要调用命令bin/start-all.sh,输出的日志如下:

startingnamenode,loggingtologs/hadoop-namenode-namenode.out

192.168.1.106:

startingdatanode,loggingtologs/hadoop-datanode-datanode02.out

192.168.1.105:

startingdatanode,loggingtologs/hadoop-datanode-datanode01.out

192.168.1.107:

startingdatanode,loggingtologs/hadoop-datanode-datanode03.out

192.168.1.104:

startingsecondarynamenode,loggingtologs/hadoop-secondarynamenode-namenode.out

startingjobtracker,loggingtologs/hadoop-jobtracker-namenode.out

192.168.1.106:

startingtasktracker,loggingtologs/hadoop-tasktracker-datanode02.out

192.168.1.105:

startingtasktracker,loggingtologs/hadoop-tasktracker-datanode01.out

192.168.1.107:

startingtasktracker,loggingtologs/hadoop-tasktracker-datanode03.out

从日志中我们可以看出,此脚本启动了NameNode,三个DataNode,SecondaryName,JobTracker以及三个TaskTracker.

下面我们分别从NameNode和三个DataNode中运行jps-l,看看到底运行了那些java程序:

在NameNode中:

 

22214org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode

22107org.apache.hadoop.hdfs.server.namenode.NameNode

22271org.apache.hadoop.mapred.JobTracker

在datanode01中:

12580org.apache.hadoop.mapred.TaskTracker

12531org.apache.hadoop.hdfs.server.datanode.DataNode

在datanode02中:

10548org.apache.hadoop.hdfs.server.datanode.DataNode

在datanode03中:

12593org.apache.hadoop.hdfs.server.datanode.DataNode

12644org.apache.hadoop.mapred.TaskTracker

同我们上面的配置完全符合。

当启动了Hadoop以后,/data/hadoopdir/tmp目录也发生了改变,通过ls-R我们可以看到。

对于NameNode:

∙在name文件夹中,多了in_use.lock文件,说明NameNode已经启动了

∙多了nameseondary文件夹,用于存放SecondaryNameNode的数据

.:

dfs

./dfs:

name namesecondary

./dfs/name:

current image in_use.lock

./dfs/name/current:

edits fsimage fstime VERSION

./dfs/name/image:

fsimage

./dfs/namesecondary:

current image in_use.lock

./dfs/namesecondary/current:

edits fsimage fstime VERSION

./dfs/namesecondary/image:

fsimage

对于DataNode:

∙多了dfs和mapred两个文件夹

∙dfs文件夹用于存放HDFS的block数据的

∙mapred用于存放Map-ReduceTask任务执行所需要的数据的。

.:

dfs mapred

./dfs:

data

./dfs/data:

current detach in_use.lock storage tmp

./dfs/data/current:

dncp_block_verification.log.curr VERSION

./dfs/data/detach:

./dfs/data/tmp:

./mapred:

local

./mapred/local:

 

当然随着Hadoop的启动,logs文件夹下也多个很多的日志:

在NameNode上,日志有:

∙NameNode的日志:

ohadoop-namenode-namenode.log此为log4j的输出日志

ohadoop-namenode-namenode.out此为stdout和stderr的输出日志

∙SecondaryNameNode的日志:

ohadoop-secondarynamenode-namenode.log此为log4j的输出日志

ohadoop-secondarynamenode-namenode.out此为stdout和stderr的输出日志

∙JobTracker的日志:

ohadoop-jobtracker-namenode.log此为log4j的输出日志

ohadoop-jobtracker-namenode.out此为stdout和stderr的输出日志

在DataNode上的日志有(以datanode01为例子):

∙DataNode的日志

ohadoop-datanode-datanode01.log此为log4j的输出日志

ohadoop-datanode-datanode01.out此为stdout和stderr的输出日志

∙TaskTracker的日志

ohadoop-tasktracker-datanode01.log此为log4j的输出日志

ohadoop-tasktracker-datanode01.out此为stdout和stderr的输出日志

下面我们详细查看这些日志中的有重要意义的信息:

在hadoop-namenode-namenode.log文件中,我们可以看到NameNode启动的过程:

Namenodeupat:

namenode/192.168.1.104:

9000

//文件的数量

Numberoffiles=0

Numberoffilesunderconstruction=0

//加载fsimage和edits文件形成FSNamesystem

Imagefileofsize97loadedin0seconds.

Editsfile/data/hadoopdir/tmp/dfs/name/current/editsofsize4edits#0loadedin0seconds.

Imagefileofsize97savedin0seconds.

FinishedloadingFSImagein12812msecs

//统计block的数量和状态

Totalnumberofblocks=0

Numberofinvalidblocks=0

Numberofunder-replicatedblocks

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2