Hadoop学习笔记

简介: 1. History Doug Cutting is inspired by the the paper, MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat from Google Lab, to develop an open-source impl

1. History

Doug Cutting is inspired by the the paper, MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat from Google Lab, to develop an open-source implementation of the Map-Reduce framework. He named itHadoop, after his son's toy elephant.


2. What is MapReduce?

Apache Tutorial: http://hadoop.apache.org/common/docs/current/mapred_tutorial.html

不错的中文入门:http://www.cnblogs.com/forfuture1978/archive/2010/11/14/1877086.html

Mapper:

Mapper maps input key/value pairs to a set of intermediate key/value pairs.

map的输出并不是直接写入硬盘,而是将其写入缓存memory buffer。

当buffer中数据的到达一定的大小,一个背景线程将数据开始写入硬盘。

在写入硬盘之前,内存中的数据通过partitioner分成多个partition。The total number of partitions is the same as the number of reduce tasks for the job

在同一个partition中,背景线程会将数据按照key在内存中排序。

每次从内存向硬盘flush数据,都生成一个新的spill文件。

当此task结束之前,所有的spill文件被合并为一个整的被partition的而且排好序的文件。

reducer可以通过http协议请求map的输出文件,tracker.http.threads可以设置http服务线程数。


Reducer:

Reducer reduces a set of intermediate values which share a key to a smaller set of values.

当map task结束后,其通知TaskTracker,TaskTracker通知JobTracker。

对于一个job,JobTracker知道TaskTracer和map输出的对应关系。

reducer中一个线程周期性的向JobTracker请求map输出的位置,直到其取得了所有的map输出。

reduce task需要其对应的partition的所有的map输出。

reduce task中的copy过程即当每个map task结束的时候就开始拷贝输出,因为不同的map task完成时间不同。

reduce task中有多个copy线程,可以并行拷贝map输出。

这个copy的过程也叫Shuffle(In this phase the framework fetches the relevant partition of the output of all the mappers, via HTTP.)

然后是sort (The framework groups Reducer inputs by keys (since different mappers may have output the same key) in this stage.)

然而Shuffle和Sort可以同时进行的(The shuffle and sort phases occur simultaneously; while map-outputs are being fetched they are merged.)


3. Install hadoop

http://ebiquity.umbc.edu/Tutorials/Hadoop/00%20-%20Intro.html


4. Problem shooting

4.1  如何解决java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName 问题 :
http://www.blogjava.net/snoics/archive/2011/03/10/333408.html 

目录
相关文章
|
分布式计算 资源调度 监控
Hadoop学习笔记(四)之YARN
Hadoop学习笔记(四)之YARN
|
存储 分布式计算 资源调度
Hadoop学习笔记(一)
Hadoop学习笔记(一)
|
SQL 分布式计算 并行计算
Hadoop学习笔记(三)之MapReduce
Hadoop学习笔记(三)之MapReduce
|
存储 分布式计算 负载均衡
Hadoop学习笔记(二)之HDFS
Hadoop学习笔记(二)之HDFS
|
分布式计算 资源调度 Hadoop
安装hadoop学习笔记
安装hadoop学习笔记
272 0
安装hadoop学习笔记
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
1564 0
|
分布式计算 Hadoop Java
Hadoop学习笔记:运行wordcount对文件字符串进行统计案例
Hadoop学习笔记:运行wordcount对文件字符串进行统计案例
274 0
|
SQL 分布式计算 DataWorks
Hadoop 数据如何同步至 MaxCompute | 学习笔记(三)
快速学习 Hadoop 数据如何同步至 MaxCompute
Hadoop 数据如何同步至 MaxCompute | 学习笔记(三)
|
分布式计算 资源调度 Hadoop
Hadoop 2(三)|学习笔记
快速学习 Hadoop 2(三)
271 0
Hadoop 2(三)|学习笔记
|
存储 分布式计算 资源调度
Hadoop 2(二)|学习笔记
快速学习 Hadoop 2(二)
289 0
Hadoop 2(二)|学习笔记

相关实验场景

更多