学习二

Mapreduce中IntWritable的含义:

IntWritable是 Hadoop 中实现的用于封装 Java 数据类型的类,它的原型是public IntWritable(int value)和public IntWritable()两种。所以new IntWritable(1)是创建了这个类的一个对象,而数值1这是参数。在Hadoop中它相当于java中Integer整型变量,为这个变量赋值为1.

 

Shuffle过程:

Shuffle过程是MapReduce的核心,Shuffle描述着数据从map task输出到reduce task输入的这段过程,Shuffle过程横跨map与reduce两端

我们对Shuffle过程的期望可以有: 

  • 完整地从map task端拉取数据到reduce 端。
  • 在跨节点拉取数据时,尽可能地减少对带宽的不必要消耗。
  • 减少磁盘IO对task执行的影响。

大概流程:

每个map task都有一个内存缓冲区,存储map的输出结果,当缓冲区快满的时候需要将缓冲区的数据以一个临时文件的方式存放到磁盘中,当整个map task结束后再对磁盘中这个map task产生的所有临时文件做合并,生成最终正式的输出文件,然后等待reduce task来拉数据。

 

hadoop NullWritable的使用NullWritable.get()

NullWritable是Writable的一个特殊类,实现方法为空实现,不从数据流中读数据,也不写入数据,只充当占位符,如在MapReduce中,如果你不需要使用键或值,你就可以将键或值声明为NullWritable,NullWritable是一个不可变的单实例类型。

posted on 2020-03-07 15:21  啥123  阅读(252)  评论(0编辑  收藏  举报