大数据(七) --Hadoop简介
Hadoop生态圈
What is Hadoop?
Hadoop思想来源
Google是Hadoop思想和技术的来源. 具体来说就是Hadoop的" 三驾马车" --Google 发布的三篇技术思想论文:
- The Google File System
- MapReduce_Simplified Data Processing on Large Clusters
- Bigtable_A Distributed Storage System for Structured Data
Hadoop的历史
Hadoop作者Doug Cutting , 他在Yahoo就职期间开发了Hadoop项目. 2003-2004年, Google公开GFS和MapReduce思想细节后, Doug Cutting等人以此为基础利用业余时间实现DFS和MapReduce机制. Hadoop名字的来源是Doug儿子的大象玩具.
2005年Hadoop作为Lucene的子项目Nutch的一部分被正式引入Apache基金会. 06年MapReduce和Nutch Distributed File System(NDFS)被纳入Hadoop项目.
至此, Hadoop作为一个分布式系统基础架构由Apache基金会所开发并以开源的形式提供给开发者. 主要用来解决海量数据的存储和计算处理.
广义上来讲, Hadoop一般指Hadoop生态圈, 圈中有如下图众多的技术:
三大发行版本
- Apache Hadoop: 原始版本, 适合初学者
- Cloudera Hadoop: 适合大型互联网企业中的项目, 收费
- Hortonworks Hadoop: 文档相对好点
Hadoop的优势
- 高可靠性
底层维护多个数据副本, 即使某个节点故障, 数据也不会丢失. - 高扩展性
在集群间分配数据, 可以很轻松地扩展节点. - 高效性
在MR思想下, 实现并行处理, 加快处理速度, 提高效率. - 高容错性
能够自动将失败的任务重新分配.
Hadoop的组成
Hadoop1.*和2.*的区别
Hadoop1.*的组成
Hadoop2.*的组成
从这两幅图中可以看出, 1.*的版本中, MapReduce除了负责计算之外, 还要对系统资源进行调度, 包括CPU, 内存, 磁盘等. 因此, MapReduce负责的功能太多太复杂, 容易出现问题, 耦合性较大.
于是2.*版本中, 将资源调度模块从MapReduce中抽离, 让它成为单独的一个模块, 实现该模块功能的工具就是Yarn. Yarn的出现, 成功让MapReduce功能解耦, 更加模块化
Hadoop组成
HDFS
- NameNode
- 接受客户端读写请求
- 管理元数据
- 管理DataNode
- DataNode
- 接受客户端读请求
- 存储源数据
- 向NameNode汇报心跳
- 构建PipeLine
- 管理本机上Block块的元数据
- SecondaryNameNode
- 持久化元数据
Yarn
- ResourceManager
- 处理客户端请求
- 监控NodeManager
- 启动并监控ApplicationMaster
- 资源调度与分配
- NodeManager
- 管理单节点上的资源
- 处理来自RM的命令
- 处理来自ApplicationMaster的命令
- ApplicationMaster
- 辅助数据切分
- 申请程序资源并分配给内部任务
- 任务监控与容错
- Container
- Yarn中的资源抽象, 它封装了某个节点上多维度资源, 例如: 内存, CPU, 磁盘, 网络等.
MapReduce
MapReduce将计算分两个阶段, Map和Reduce.
- Map阶段并行处理输入数据;
- Reduce阶段对Map结果进行汇总