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 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 

时间: 2024-09-21 13:30:25

Hadoop学习笔记的相关文章

Hadoop学习笔记一 简要介绍

这里先大致介绍一下Hadoop. 本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的,同时又参考了网上的很多文章,对学习Hadoop中遇到的问题进行了归纳总结. 言归正传,先说一下Hadoop的来龙去脉.谈到Hadoop就不得不提到Lucene和Nutch.首先,Lucene并不是一个应用程序,而是提供了一个纯Java的高性能全文索引引擎工具包,它可以方便的嵌入到各种

Hadoop学习笔记之:Hadoop的两个部分

本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的,同时又参考了网上的很多文章,对学习Hadoop中遇到的问题进行了归纳总结. 言归正传,先说一下Hadoop的来龙去脉.谈到Hadoop就不得不提到Lucene和Nutch.首先,Lucene并不是一个应用程序,而是提供了一个纯Java的高性能全文索引引擎工具包,它可以方便的嵌入到各种实际应用中实现全文搜索/索引功能.

Hadoop学习笔记二 安装部署

硬件环境 共有3台机器,均使用的FC5系统,Java使用的是jdk1.6.0.IP配置如下: dbrg-1:202.197.18.72 dbrg-2:202.197.18.73 dbrg-3:202.197.18.74 这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析. 一个很简单的测试办法就是ping一下主机名,比如在dbrg-1上ping dbrg-2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需

Hadoop学习笔记(一):MapReduce的输入格式

    Hadoop学习有一段时间了,但是缺乏练手的项目,老是学了又忘.想想该整理一个学习笔记啥的,这年头打字比写字方便.果断开博客,咩哈哈~~     开场白结束(木有文艺细胞)     默认的MapReduce作业 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.h

Hadoop学习笔记(三):Hive简介

定义       Hive是一个构建在Hadoop上的数据仓库框架.可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析.(来自百度百科~~) metastore       metastore是Hive元数据的集中存放地,metastore包括两部分:服务和后台数据的存储.默认情况

hadoop学习笔记--10.hive安装与配置

一.hive安装 1.环境要求 1. Java 1.7或以上 2. Hadoop 2.x (preferred), 1.x (not supported by Hive 2.0.0 onward). 2.安装配置 Hive没有才有hadoop.HBase或者是Zookeeper的主从架构,所以只用在所需要的机器上安装即可. 1. 解压 tar -zxvf apache-hive-0.13.1-bin.tar.gz 把解压的文件夹移到自己需要的存放的目录. 2. 配置环境 sudo vi /etc

Hadoop学习笔记(二):MapReduce的特性-计数器、排序

  计数器       计数器是一种收集作业统计信息的有效手段,用于质量控制或应用级统计.说白了就是统计整个mr作业所有数据行中符合某个if条件的数量,(除某些内置计数器之外).仅当一个作业执行成功之后,计数器的值才是完整可靠的.如果一个任务在作业执行期间失败,则相关计数器值会减小,计数器是全局的.       计数器分为以下几种:           1)内置计数器,内置的作业计数器实际上由jobtracker维护,而不必在整个网络中发送:         2)用户自定义的java计数器,由其

Hadoop学习笔记(四):HBase

HBase是在一个HDFS上开发的面向列的分布式数据库.HBase不是关系型数据库,不支持SQL. HTable一些基本概念 Row key 行主键, HBase不支持条件查询和Order by等查询,读取记录只能按Row key(及其range)或全表扫描,因此Row key需要根据业务来设计以利用其存储排序特性(Table按Row key字典序排序如1,10,100,11,2)提高性能. Column Family(列族) 在表创建时声明,每个Column Family为一个存储单元.在上例

Hadoop学习笔记之:HDFS体系架构

HDFS简介 &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上.而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序. 1.  HDFS有以下几个主要特点: 处理超大文件:存储的一个超大文件可以达到数GB级.数T