Hadoop专有名词

Hadoop专有名词

一. HDFS

二. MapReduce

1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的

2.MapTask:在Map阶段:负责Map阶段整个数据处理流程

3.ReduceTask:在Reduce阶段:负责Reduce阶段整个数据处理流程

4.JobLocalJobRuuner  YarnRunner

5.数据切片:splits:逻辑概念 hdfs:block对文件的切块

6.Inputformat:默认的InputFormat-->FileInputFormat-->TextInputFormatLongWritable,Text

7.RecordReader:经过RecordReader处理之后形成的是<K,V>

8.LocalJobRunner:

三. 疑问点

1.“整个数据处理流程

2.MapTaskReduceTask运行顺序

(1)所有的MapTask运行结束之后会运行ReduceTask

3.一个程序中MapTask的数量是多少?跟什么有关系?

(1)跟切片splits个数有关系,有多少个splits切片就有多少个mapTask

(2)splits大小---》默认跟blockSize一样大(前提条件:1.HDFS2.没有手动设置过minSizeMaxSize)

(3)如果一个文件的剩余大小除以splitSize不大于1.1的话,他们会被作为一个切片。

4.一个程序中ReduceTask的数量是多少?跟什么有关系?

(1)根据客户指定的参数,如果没有指定,默认是1.

5.进入到ReduceTask以后“待处理数据”指的是什么数据?

(1)MapTask处理完后溢写到磁盘上面的数据

(2)ReduceTask应该将结果存放到HDFS,保证数据可靠存储。

6.MapTask阶段会把处理结果溢写到磁盘中?

(1)所谓的溢写到磁盘是指datanode的本地磁盘。如果放到HDFS中会根据副本策略增加多个副本。

7.运行程序后发现的现象:

(1)文件路径:可以是HDFS上的,也可以是本地的。

(2)eclipse中直接运行程序发现执行Job的都是LocalJobRunner

(3)打成Jar包放在集群上运行,文件路径必须是HDFS路径。

(4)文件内容最终会有序排列:什么阶段做了有序处理?

(5)Hadoop jar hadoop-mapreduce-examples.jar wordcount

9.一个MapReduce程序中能否只有Map?

10.设置输出文件中KeyValue的分割符:configuration.set("mapred.textoutputformat.separator", ";");

11.修改分区并且按照分区写入到不同文件中操作步骤:

(1)自定义类继承自HashPartitioner<MapOutKey,MapOutValue>,重写getPartition方法。按照需求,返回不同的分区。

(2)显式在Job中设置PartitionerClass为自定义类

(3)显式在Job中设置numReduceTasks(分区总个数)

如果不显式设置,默认为1.那么所有的分区内容存在于一个文件中。

②如果显式设置的分区总个数值大于实际分区总个数,会形成多个空文件。

如果显式设置的分区总个数值小于实际分区总个数并且不等于1,会抛出异常。

12.在一个Job中,输入文件路径下有多个不同格式的文件需要处理,该如何解决?

(1)3个文件:每一个文件1splitsMapKeyINValueInKeyOutObjectWritable》、reduce

①Order订单

②Product产品

ObjectWritable

If()

Ordedr

Product

原文地址:https://www.cnblogs.com/beiyi888/p/9566651.html