Hadoop第三天
2016-04-20 本文已影响23人
d1450eb71426
2.MR执行流程
(1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)
(2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId
(3).client将jar包写入到HDFS当中(path = hdfs上的地址 + jobId)
(4).开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
(5).JobTracker进行初始化任务
(6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
(7).TaskTracker通过心跳机制领取任务(任务的描述信息)
(8).下载所需的jar,配置文件等
(9).TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
(10).将结果写入到HDFS当中
自定义序列号Class (extends writeable )创建有参数构造一定要加一个无参数的构造,注意类型和顺序
优化:用partitionnal和只new一个bean
jar包保存10份,默认配置在mapreduce-defult.xml
MR执行过程源码:job.waitForCompletion()->submit()->connetct()和RM建立连接->new Cluster()->initialize->submitJobInternal(job,cluster)
JPDA,JDWP 远程debug(可以用作生产环境排错)
远程debug:修改hadoop-env.sh
得到FileSystem通过反射