Hadoop读书笔记——基础知识二

Hadoop数据类型
    为了让键/值对可以在集群上移动,MapReduce框架提供了一种序列化键/值对的方法。因此,只有那些支持这种序列化的类能够在框架中充当键/值。
 实现Writable接口的类可以是值;
 实现WritableComparable<T>接口的类可以是键/值。

键/值对经常使用的数据类型列表。这些类均用于实现WritableComparable接口。
    
BooleanWritable
标准布尔变量的封装
ByteWritable
单字节数的封装
DoubleWritable
双字节数的封装
FloatWritable
浮点数的封装
IntWritable
整数的封装
LongWritable
Long的封装
TextWritable       
使用UTF8格式的文本
NullWritable
无键值的占位符

Mapper
    一个类要作为mapper,需继承MapReduceBase积累并实现Mapper接口。mapper接口负责数据处理阶段,它采用的形式为Mapper<k1,v1,k2,v2>Java泛型,这里的键/值分别实现了WritableComparable和Writable接口,mapper只有一个方法——map,用于处理一个单独的键/值对。

Reducer
    reducer的实现和mapper一样必须首先在Reduce基类上扩展。还必须实现reducer方法。

Partition
    重定向Mapper输出。将mapper的结果输出给不同的reducer。默认的做法是对键进行散列来确定reducer,hadoop通过HashPartitioner类强制执行这个策略。但有时会出错,需定制。一个定制的partitioner只需实现configure()和getPartition()两个函数。前者将hadoop对作业的配置应用在Partitioner上,而后者返回一个介于0和reduce任务数之间的整数,指向键/值对将要发送到的reducer。

Shuffing
    在map和reduce阶段之间,一个MapReducer应用必然从MapReducer任务得到输出结果,并把这些结果发布给reducer任务。该过程通常称为洗牌,因为在单节点上的mapper输出可能被送往分布在集群多个节点上的reducer。

读和写
    MapReduce处理的基本原则之一是将输入数据分割成块。这些块可以在多台计算机上并行处理。这些块被称为分片(Input Spilt)。每个分片应该足够小以实现更细粒度的并行,但也不能太小,否则启动与停止分片处理就占很大的开销。

InputFormat
    hadoop分割与读取输入文件的方式被定义在InputFormat接口的一个实现中。TextFormat是其默认实现。

OutputFormat
    当MapReduce输出数据到文件时,使用的是OutputFormat类。

普通的MapReduce数据流。输入数据被分配到不同节点之后,节点间通信的唯一时间是在“洗牌”阶段,这个通信约束对可扩展性有极大帮助。       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值