`
flyingdutchman
  • 浏览: 354139 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
      想找一个Hadoop相关的工作,很多都需要熟悉Python或Linux Shall脚本的脚本,故决定开始学习python。       在学习环境中使用的是python 2.7.*,但是CentOS 6.4中默认使用的python版本是2.6.6,故需要升级版本。       安装步骤如下:       引用       1,先安装GCC,用如下命令yum install gcc gcc-c++       2,下载python-2.7.5.tar.gz文件,修改文件权限chmode +x python-7.5.tar.gz       3,解压tar文件,tar -xzvf pyt ...
         在本节中,我们再来仔细回顾一下MapReduce编程框架的所谓的“洗牌”过程,即MapReduce的Shuffle过程,可以说Shuffle是MapReduce编程框架的核心,能直接影响到MapReduce的性能。实际上,对MapReduce的调优在很大程度上就是对MapReduce Shuffle的性能的调优。          那么,Shuffle到底在MapReduce处于哪个阶段呢?实际上,从Map Task任务中的map()方法中的最后一步调用即输出中间数据开始,一直到Reduce Task任务开始执行reduce()方法结束,这一中间处理过程就被称为MapReduc ...
        在Partitioner组件的设计与实现中,我们已经了解过Partitioner组件的其中一个和全排序相关的实现类——TotalOrderPartitioner。         我们知道,在Hadoop中,最终的处理结果集中的数据,除非就由一个Reduce Task处理,否则结果数据集只是局部有序而非全排序。         这节我们来学习在Hadoop中进行全排序操作中除了TotalOrderPartitioner之外的另一个组件——采样器Sampler。         在新版本的Hadoop中,内置了三个采样器: SplitSampler,RandomSampler和In ...
        本节我们来着重学习ReduceTask的内部操作流程和实现。         我们先看一下ReduceTask操作流程:         从流程图中我们可以看出,ReduceTask分5个阶段:         Copy阶段         Merge阶段         Sort阶段         Reduce阶段         Write阶段         其中的Copy阶段和Merge阶段是并行进行的。默认情况下ReduceTask同时启动5个MapOutputCopier线程从各个Mapper端的中间数据结果copy数据,放大小超过一定阀值后,则存放到磁盘上,否则 ...
         在本节中,我们主要来学习MapTask的内部实现。                   整体执行流程          如上图示,MapTask的整个处理流程分五个阶段:          ●read阶段:通过RecordReader从InputSplit分片中将数据解析 ...
        在本节中,我们特别来学习一些有心跳(HeartBeat)的相关知识,这包括用途、心跳的发送、接收和应答。         JobTracker和TaskTracker之间是通过心跳来进行信息沟通的,TaskTracker通过周期性的通过心跳向JobTracker汇报该节点和任务的状态。心跳实际上就是一个RPC函数,在Hadoop中,心跳主要有三个作用:         1)、判断TaskTracker是否还活着;         2)、JobTracker及时获得各个TaskTracker节点上资源的使用情况和任务运行状态;         3)、给TaskTracker分配任务 ...
        之前已经学过了MapReduce接口编程模型及涉及的相关组件,本节我们主要学习MapReduce的作业提交过程和如何初始化作业这两部分的内容。         下面我们来熟悉一下MapReduce作业的提交和初始化的过程:         作业的提交过程         第一步,使用Hadoop提供的shell命令提交作业,命令行作业提交命令: $HADOOP_HOME/bin/hadoop jar job.jar \ -D mapred.job.name="task-test" \ ...
         在本节中,我们着重来学习一下MapReduce编程框架中的OutputFormat组件。          在MapReduce中,OutputFormat主要用于描述经reducer处理后输出的数据的格式,它会将用户提供的key/value键值对而写入到特定格式的文件中。                  我们先看一下在1.0老版本中的OutputFormat接口的代码: public interface OutputFormat<K, V> { /** * 返回一个RercordWriter类的对象,并有该对象接收用户的key/value ...
        在本节中我们主要来学习MapReduce编程接口模型中的Reduce组件。         和学习Mapper组件详解一样,我们先来看看1.0新版本中Reduce代码: public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> { public class Context extends ReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> { public Context(Configuration conf, TaskAttemptID ...
        本节我们来学习MapReduce编程框架中的Partitioner接口和其他相关的信息。         Partitioner的作用就是对Mapper产生的中间数据进行分片,以便将同一分片的数据交给同一个Reducer处理,该过程是MapReduce的shuffle过程,特别是Map端的shuffle的一部分。         Partitioner它直接影响Reduce阶段的负责均衡。在老版中,Partitioner是一个接口,继承了JobConfigurable接口,代码如下: /** * Partitions the key space. * * < ...
        本节我们主要学习MapReduce编程接口模型中的Mapper组件,主要是学习其中一些的方法,如setup()、map()和cleanup()等方法地使用。         我们先来看一下新版本中的Mapper代码: public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> { public class Context extends MapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> { public Context(Configurati ...
        在本节里,我们着重学习MapReduce编程接口模型中的InputForamt组件。         InputFormat主要用于描述输入数据的格式,提供了以下两个功能:         1)、数据切分,按照某个策略将输入数据且分成若干个split,以 ...
       在学习MapReduce编程模型接口的五个组件之前,我们先来看一下MapReduce的序列化。        那么什么是序列化呢?        序列化就是讲一个对象编码成一个字节流;相反,从字节流中重新构建对象就叫做反序列化。 ...
        MapReduce的一个设计目标就是易用性,它提供了一个高度抽象化的非常简单的编程模型。         MapReduce这个分布式计算框架,其应用场景往往是那些可以将任务分解成相互独立的子问题。基于这个特点, MapReduce编程模型将分布式编程分成了五个步骤:         1),迭代遍历输入数据,并将数据解析成简单的key/value键值对的形式,该阶段段对应着InputFormat组件;         2)、将输入的key/value映射成另外的key/value数值对,该阶段对应着Mapper组件;         3)、依据key对所有的中间数据进行分组儿,该 ...
        本节我们主要看一下Map Task和Reduce Task的执行流程:         好了,接下来我们再看看Map Task和Reduce Task的一个完整的执行流程:         1)、TaskNode节点启动分配JobTracker个Map Task任务,启用InputFormat对象(具体为RecordReader)读取分配给本节点split分片,将每一行的数据读取成key/value键值对;         2)、mapper程序的map()函数会接收key/value键值对的数据,做逻辑处理,然后将之输出;         3)、(开始MapReduce的s ...
Global site tag (gtag.js) - Google Analytics