Hadoop权威指南学习笔记1

来源:互联网 发布:linux 系统启动日志 编辑:程序博客网 时间:2024/05/29 09:22

Chap 01 初始Hadoop

1.Hadoop为我们提供了可靠的共享存储和分析系统。HDFS实现数据的存储,MapReduce实现数据的分析和处理。这两者是Hadoop的核心。

2.针对大数据,传统关系型数据库的弱点在于:

a) 磁盘寻址时间的提升不敌与传输速率的提升。

b) 大量数据更新时,关系型数据库的B树的效率落后于MapReduce的排序、合并。

3.MapReduce适合存储非结构数据,因为处理数据时才对其进行解析,RDBMS处理半结构数据,适合查询和少量更新。

4.Hadoop的生态系统

a) Common:通用组件和接口。

b) Avro:序列化系统,用于支持高效、跨语言的PRC和持久化数据存储。

c) MapReduce:分布式 数据处理模型和执行环境。

d) HDFS:分布式文件系统。

e) Pig:数据流语言和运行环境。

f) Hive:分布式的、按列存储的数据仓库,提供基于SQL的查询语言。

g) HBase:分布式的、按列存储的的数据库。

h) Zookeeper:分布式的、可用性高的协调服务。

i) Sqoop:用于在结构化数据存储(如RDBMS)和HDFS之间高效传输数据。

j) Oozie:运行和调度Hadoop作业。

 

Chap 02 关于MapReduce

1.MR任务过程分为两个处理阶段:map阶段和reduce阶段。每个阶段以键值对作为输入和输出,对应于map函数和reduce函数。

2.MapReduce术语:

a) 作业job:客户端需要执行的工作单元,包括输入数据,MR程序和配置信息。

b) 作业分为两类任务:map任务和reduce任务。

c) 两类节点jobtrackertasktracker控制jobtask的执行。Jobtracker调度tasktracker协调整个系统的任务,tasktracker运行任务并将运行进度信息传送给jobtracker。如果tasktracker任务失败,jobtracker会自动拉起另一个tasktracker

3.MR程序数据流:

a) HadoopMR的输入数据划分成等长数据块,称之为分片,并为每个分片构建一个map任务来处理分片中的记录。片为HDFS一个块的大小,默认64M。尽量保证含有输入数据的节点上执行map任务,减少网络传输,称之为数据本地化优化

b) Map任务的输出是中间数据,不写入HDFS,保存在本地磁盘。如果map在将输出传递给reduce之前失败,hadoop将在另一个节点重新拉起map任务。

c) Reduce程序由于需要所有map程序的输出,因此无法具备本地化优势。排序过的map任务输出通过网络传输的reducereduce处理后将其写入HDFS确保可靠存储。单个reduce需要对排序过的map输出进行merge,多个reduce需要对排序过的map输出进行shuffle(混洗:对map输出进行分区,一般采用哈希函数分区,然后不同的分区发给不同的reduce)。

d) reduce任务时,map任务自动将结果写入HDFS

e) 为了降低集群可用带宽,避免mapreduce任务之间的数据传输,提供combiner函数针对map函数的输出进行处理(如优先进行取最大值等),进而作为reduce函数的输入。

4.Hadoop Streaming:提供streaming接口使用Unix标准流作为Hadoop和应用程序之间的接口来编写MR程序。此外,Hadoop Pipes是与C++的接口,使用的套接字作为进程之间的通道。


PS:

map的输出是中间结果,一般写到本地文件系统;reduce的输出是最终结果,写入到hdfs中。


PS:安装hadoop详见:http://blog.csdn.net/conanswp/article/details/72809833



原创粉丝点击