【Hadoop代码笔记】目录】的更多相关文章

整理09年时候做的Hadoop的代码笔记. 开始. [Hadoop代码笔记]Hadoop作业提交之客户端作业提交 [Hadoop代码笔记]通过JobClient对Jobtracker的调用看详细了解Hadoop RPC 待续..…
一.概述 在本篇博文中,试图通过代码了解hadoop job执行的整个流程.即用户提交的mapreduce的jar文件.输入提交到hadoop的集群,并在集群中运行.重点在代码的角度描述整个流程,有些细节描述的并不那么详细. 汇总的代码流程图附件: hadoop_mapreduce_jobsubmit 二.主要流程 Jobclient通过RPC方式调用到jobtracker的submitJob方法提交作业,包括作业的jar.分片和作业描述. JobTracker的submitJob方法吧job加…
一.概要描述 shuffle是MapReduce的一个核心过程,因此没有在前面的MapReduce作业提交的过程中描述,而是单独拿出来比较详细的描述. 根据官方的流程图示如下: 本篇文章中只是想尝试从代码分析来说明在map端是如何将map的输出保存下来等待reduce来取. 在执行每个map task时,无论map方法中执行什么逻辑,最终都是要把输出写到磁盘上.如果没有reduce阶段,则直接输出到hdfs上,如果有有reduce作业,则每个map方法的输出在写磁盘前线在内存中缓存.每个map…
以下是hadoop学习笔记的顺序: hadoop学习笔记(一):概念和组成 hadoop学习笔记(二):centos7三节点安装hadoop2.7.0 hadoop学习笔记(三):hdfs体系结构和读写流程(转) hadoop学习笔记(四):hdfs常用命令 hadoop学习笔记(五):java api 操作hdfs hadoop学习笔记(六):HBase体系结构和数据模型…
一.概要描述 在上一篇博文中主要描述了JobTracker接收作业的几个服务(或功能)模块的初始化过程.本节将介绍这些服务(或功能)是如何接收到提交的job.本来作业的初始化也可以在本节内描述,但是涉及到JobInProgress的初始化过程放在一张图上太拥挤,就分开到下一篇文章中描述. 二. 流程描述   1. JobClient通过RPC的方式向JobTracker提交作业: 2. 调用JobTracker的submitJob方法.该方法是JobTracker向外提供的供调用的提交作业的接口…
一.概要描述 在上篇博文描述了TaskTracker启动一个独立的java进程来执行Map或Reduce任务.在本篇和下篇博文中我们会关注启动的那个入口是org.apache.hadoop.mapred.Child的这个Java进程是如何执行用户定义的map或Reduce任务的. 接上篇文章,TaskRunner线程执行中,会构造一个java –D** Child address port tasked这样第一个java命令,单独启动一个java进程.在Child的main函数中通过TaskUm…
一.概要描述 在上篇博文描述了TaskTracker从Jobtracker如何从JobTracker获取到要执行的Task.在从JobTracker获取到LaunchTaskAction后,执行addToTaskQueue方法来把要执行的Task加入到queue.在本篇博文中,我们来关注下该方法后,TaskTracker怎么来处理这些Task. 实际上,TaskTracker初始化时,会初始化并启动两个TaskLauncher类型的线程,mapLauncher,reduceLauncher.在T…
1.      概要描述仅仅描述向Hadoop提交作业的第一步,即调用Jobclient的submitJob方法,向Hadoop提交作业. 2.      详细描述Jobclient使用内置的JobSubmissionProtocol 实例jobSubmitClient 和JobTracker交互,最主要是提交作业.获取作业执行信息等. 在JobClient中作业提交的主要过程如下: 1)通过调用JobTracker的getNewJobId()向jobtracker请求一个新的作业ID2)获取j…
Hadoop的各个服务间,客户端和服务间的交互采用RPC方式.关于这种机制介绍的资源很多,也不难理解,这里不做背景介绍.只是尝试从Jobclient向JobTracker提交作业这个最简单的客户端服务器交互的代码中,去跟踪和了解下RPC是怎么被使用的.不同于准备发表博客时搜索的几篇博文,试图通过一种具体的场景来介绍,属于比较初级.其他DataNode和Namenode之间,Tasktracker和JobTracker之间的交互基本也都一样.为了引用的代码篇幅尽可能少,忽略了代码中写日志(包括Me…
一.概要描述 在上篇博文描述了TaskTracker启动一个独立的java进程来执行Map任务.接上上篇文章,TaskRunner线程执行中,会构造一个java –D** Child address port tasked这样第一个java命令,单独启动一个java进程.在Child的main函数中通过TaskUmbilicalProtocol协议,从TaskTracker获得需要执行的Task,并调用Task的run方法来执行.在ReduceTask而Task的run方法会通过java反射机制…