Hadoop基础知识总结

Hadoop概述
Hadoop这个单词本身并没有什么特殊的含义,而只是其作者Doug Cutting孩子的一个棕黄色的大象玩具的名字 。
【Hadoop基础知识总结】Hadoop是一个高可靠的(reliable),规模可扩展的(scalable),分布式(distributed computing)的开源软件框架 。它使我们能用一种简单的编程模型来处理存储于集群上的大数据集 。
Hadoop是Apache基金会的一个开源项目,是一个提供了分布式存储和分布式计算功能的基础架构平台 。可以应用于企业中的数据存储,日志分析,商业智能,数据挖掘等 。
hadoop核心组件
1. hadoop包含的模块:

  • Hadoop common:提供一些通用的功能支持其他hadoop模块 。
  • Hadoop Distributed File System:即分布式文件系统,简称HDFS 。主要用来做数据存储,并提供对应用数据高吞吐量的访问 。
  • Hadoop Yarn:用于作业调度和集群资源管理的框架 。
  • Hadoop MapReduce:基于yarn的,能用来并行处理大数据集的计算框架 。
2. HDFS:
HDFS是谷歌GFS的一个开源实现,具有扩展性,容错性,海量数据存储的特点:
  • 扩展性,主要指很容易就可以在当前的集群上增加一台或者多台机器,扩展计算资源 。
  • 容错性,主要指其多副本的存储机制 。HDFS将文件切分成固定大小的block(默认是128M),并以多副本形式存储在多台机器上,当其中一台机器发生故障,仍然有其他副本供我们使用 。但这个容错并不是绝对的,当所有节点都发生故障,文件就会丢失,不过这样的概率较小 。
  • 海量数据存储:多台机器构成了一个集群,相对单机能存储更多量的数据 。这也是Hadoop解决的最主要问题之一 。
数据切分,多副本,容错等机制都是Hadoop底层已经设计好的,对用户透明,用户不需要关系细节 。只需要按照对单机文件的操作方式,就可以进行分布式文件的操作 。如文件的上传,查看,下载等 。
多副本存储示例:
Hadoop基础知识总结

文章插图
 
HDFS多副本存储示意图
以part-1为例进行说明,它被分成三个block,block_id分别是2,4,5,且副本系数为3 。可以看到在DataNode上,2,4,5都各存储在了三个节点上,这样当其中一个节点故障时,仍然能够保证文件的可用 。block_id存在的必要性在于,在用户需要对文件进行操作时,相应的block能够按顺序进行“组合”起来 。
3. YARN:
Yarn的全称是Yet Another Resource Negotiator,负责整个集群资源的管理和调度 。例如对每个作业,分配CPU,内存等等,都由yarn来管理 。它的特点是扩展性,容错性,多框架资源统一调度 。
扩展性和HDFS的扩展性类似,yarn也很容易扩展其计算资源 。
容错性,主要是指当某个任务出现异常,yarn会对其进行一定次数的重试 。
多框架资源统一调度,这个是相对于hadoop1.0版本的一个优势 。区别于hadoop1.0只支持MapReduce作业 。而yarn之上可以运行不同类型的作业 。如下图所示,很多应用都可以运行在yarn之上,由yarn统一进行调度 。
Hadoop基础知识总结

文章插图
 
运行在YARN上的多种应用
4. mapreduce:
是一个分布式计算框架,是googleMapReduce的克隆版 。和HDFS、Yarn类似,也具有扩展性和容错性的特点,还将具有海量数据离线处理的特点:能够处理的数据量大,但并不是实时处理,具有较大的延时性 。
Hadoop基础知识总结

文章插图
 
MapReduce计算过程示意图
wordCount的MapReduce流程如图所示,主要分为Map和Reduce两个过程 。Map阶段做映射,对所有输入的单词赋值为1,Reduce阶段做汇总,相同的单词分发到一个节点上并进行求和,最终就可以统计出单词的个数 。
hadoop的优势
hadoop的优势主要体现在高可靠性,高扩展性等方面 。
高可靠性是指多副本的存储机制和失败作业的重新调度计算 。
高扩展性是指资源不够时很容易直接扩展机器 。一个集群可以包含数以千计的节点 。
其他优势还表现在:hadoop完全可以部署在普通廉价的机器上,成本低 。同时它具有成熟的生态圈和开源社区 。
狭义hadoop VS 广义hadoop:
狭义hadoop:指一个用于大数据分布式存储(HDFS),分布式计算(MapReduce)和资源调度(YARN)的平台,这三样只能用来做离线批处理,不能用于实时处理,因此才需要生态系统的其他的组件 。


推荐阅读