读书笔记Hadoop实战3

 注:之前写过MapReduce程序,所以对Hadoop和MapReduce编程有一些了解,现在正在阅读《Hadoop实战》一书,这里主要是记下对自己有用的一些点,完全不能覆盖书中的全部要点。想要学习MapReduce入门的同学请移尊步,勿浪费时间。

这里是我觉得不错的几个入门文章:

http://www.cnblogs.com/forfuture1978/category/300670.html

http://blog.csdn.net/aidayei/article/details/6580277

http://www.cnblogs.com/mdyang/category/307547.html

http://www.cnblogs.com/wycg1984/category/238035.html

-----------------------------------------------------------敌我分割线------------------------------------------------------------

 

访问HDFS:

命令行方式 hadoop fs  -cmd  <args>

例如: hadoop fs  -ls

编程访问(Java版):API的起点为 FileSystem这个类。

 

Hadoop数据类型:

Hadoop中数据(键值对)需要在计算过程各个阶段流动,因此应了解数据(键值对)的类型。

Hadoop是键值对存储和计算,其中的键值都是有类型的。简单说,值需要实现Writable接口,键需要实现WritableComprable接口。Writable类型的对象能够写入文件系统和从文件系统中读取(实现了readField,write函数),WritableComprable类型的对象除了存储外,能够进行比较(实现了compareTo函数)。原因是键值在MapReduce过程都要存到HDFS或本地文件系统上,另外键在MapReduce的shuffle过程中需要分区(MapReduce计算框架在shuffle过程中要排序)。

 

Hadoop的几个函数:

Mapper:将一个键值对变成另一个(或多个)键值对。k1/v1 => k2/v2

Reducer:接收Mapper的输出(按key合并的输出),k2/list(v2) => k3/v3

Partitioner:书上说是重定向Mapper的输出。一般会设定若干个reduce(只有一个reduce并行度低),Partitioner函数的输入参数是k/v和程序员设定的reducer个数,返回一个介于0~reducer个数 的整数,该k/v就被发送到这个编号的reducer。简单说,就是指定一个k/v对应该由哪个reducer来执行(因为可能有很多reducer)。

Combiner:本地reducer。使用Combiner需要前提条件,这个在Hadoop权威指南一书上说了。例如为求和可以用,但是求平均值就不能直接简单用Combiner。

原文地址:https://www.cnblogs.com/apprentice89/p/2672421.html