栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HadoopCore-MapReduce

HadoopCore-MapReduce

3.MapReduce简介 4.MapReduce运行流程
program——》master
assign map散——>worker——》split逻辑切分——》localwrite到 disks (先暂存,解耦)
assign reduce聚——》worker——》聚在一起——》output files
5.流程详解

1.pre-map:map前期准备
文件切分——》
2.map: 打散
partition(hash值运算,按split进行划分)——》sort排序——》combine局部聚合
2.5shuffle:洗牌,神奇发生处
sort&merge(排序,partition合并)
3.reduce:聚
reduce全局聚合——》output

注意:combine局部聚合,为了减少全局聚合的压力
但也不一定哪都适用,不能局部计算的类型就不适合局部聚合

2.MapReduce Java Api 实现

2.1 Map类 (散)

		对数据进行切分

		重点:StringTokenizer st=new StringTokenizer(line,",");

		在这就可以设置具体的切分方式

2.2 Reduce类 (聚)

		 Iterable values,按key值将相同key对应的value形成一个聚合体,可以看成一个集合。

		在迭代中,获取对应的value值。便可以进行各种计算。

		所有Reduce类中 , 每次传来的就是  key 和 key对应value的集合,这个概念是求平均值的重点!

2.3 Driver类 (驱动)

		可以设定有多少个环节,一般多操作job.setCombinerClass,局部聚合看情况添减。
3.如何判断输入数据的类型

3.1判断数组

		1) 正则表达式

		2) 强制转换

		3) 现成的API

3.2 正则表达式

		最为灵活强大

1)Pattern

			创建正则表达式的对象,便能做操作

2)Matcher

		1.matches()			全匹配

		2.lookingAt()		前段匹配

		3.find()		任意位置匹配
4.数据的分块存储和切分计算
	任何文件都可以进行分块存储  (都是二进制)

	但不一定都适合切分计算,比如一张图片切分成两段计算,就是两个废文件
5.压缩的本质
	数据有一定的重复性和规律性
6.文件格式
	1 .txt 	可切分	便捷	成本大

	2  .seq	可切分	kv存储,可压缩	不易查看数据

	3 .rc	可切分	查询快,利用率高		每一项都不最高 

	(行列切分,行切分保证数据连贯完整,列切分保证数据相似性。便于减少寻址时间,提高压缩率)

	4 .orc	可切分	rc的进一步提升
7.压缩格式
gz		最原生	不可切分		cpu要求高	<128最好

lzo		不原生	快,合理

bz2		原生	快,高

snappy	不原生	快,合理
1.文件输出格式

-Dmapred.output.compress=true

-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec

main方法中添加-

         //参数解析器

        GenericOptionsParser optionParser = new GenericOptionsParser(conf,args);

      String[] remainingArgs = optionParser.getRemainingArgs();

       if ((remainingArgs.length != 2)) {

        System.err.println("Usage: yarn jar jar_path main_class_path -D参数列表  ");

        System.exit(2);

       }

//指定输入数据的路径

FileInputFormat.addInputPath(job, new Path(remainingArgs[0]));

//指定输出路径,并要求该输出路径一定是不存在的

FileOutputFormat.setOutputPath(job, new Path(remainingArgs[1]));

gzip格式:.GzipCodec lzo格式:.lzo.LzopCodec bzip2格式:.BZip2codec

2.自定义Partition

-Dmapred.reduce.tasks=2 定义reduce数量

 

publicstatic class MyHashPartitioner extends Partitioner { 

    

   public int getPartition(K key, V value, int numReduceTasks) {

       return (key.toString().charAt(0) < 'q' ? 0 : 1) % numReduceTasks;

       // return key.toString().charAt(0);

    }

}

可以对key进行限制进行不同规则切分

3.外部配置文件-configuration

当需要将某个xx.txt文件内容传递到各个计算节点,可通过Configuration传递到Map中

覆写setup方法,需要的参数只初始化一次。

标记状态位,用于标记一次性初始化的用法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号