Hadoop专有名词
一. HDFS
二. MapReduce
1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的
2.MapTask:在Map阶段:负责Map阶段整个数据处理流程
3.ReduceTask:在Reduce阶段:负责Reduce阶段整个数据处理流程
4.Job:LocalJobRuuner YarnRunner
5.数据切片:splits:逻辑概念 hdfs:block对文件的切块
6.Inputformat:默认的InputFormat-->FileInputFormat-->TextInputFormat《LongWritable,Text》
7.RecordReader:经过RecordReader处理之后形成的是<K,V>
8.LocalJobRunner:
三. 疑问点
1.“整个数据处理流程”
2.MapTask、ReduceTask运行顺序
(1)所有的MapTask运行结束之后会运行ReduceTask
3.一个程序中MapTask的数量是多少?跟什么有关系?
(1)跟切片splits个数有关系,有多少个splits切片就有多少个mapTask
(2)splits大小---》默认跟blockSize一样大(前提条件:1.HDFS上 2.没有手动设置过minSize、MaxSize)
(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.设置输出文件中Key和Value的分割符:configuration.set("mapred.textoutputformat.separator", ";");
11.修改分区并且按照分区写入到不同文件中操作步骤:
(1)自定义类继承自HashPartitioner<MapOutKey,MapOutValue>,重写getPartition方法。按照需求,返回不同的分区。
(2)显式在Job中设置PartitionerClass为自定义类
(3)显式在Job中设置numReduceTasks(分区总个数)
①如果不显式设置,默认为1.那么所有的分区内容存在于一个文件中。
②如果显式设置的分区总个数值大于实际分区总个数,会形成多个空文件。
③如果显式设置的分区总个数值小于实际分区总个数并且不等于1,会抛出异常。
12.在一个Job中,输入文件路径下有多个不同格式的文件需要处理,该如何解决?
(1)3个文件:每一个文件1splits, Map《KeyIN,ValueIn,KeyOut,ObjectWritable》、reduce
①Order订单
②Product产品
ObjectWritable
If()
Ordedr
Product