本文结构如下——
第一部分,主要从整体上对Hadoop进行简单的介绍,使得对”Hadoop是什么“这个问题在脑海中有大致的答案;
第二到第四部分,分别介绍Hadoop的存储模块HDFS、计算模块MapReduce、调度模块YARN,使得对Hadoop有更好的理解;
第五部分,介绍Hadoop的生态圈中的若干产品,使得对Hadoop的现实应用有一定理解。
1. Hadoop简介
1.1 为什么需要Hadoop?
在当前的大数据时代下,海量数据充斥在网络中。通过收集、分析、挖掘这些数据,可以有针对性地提高产品的用户体验。如常见的,推荐领域的用户画像。在这个过程中,有三个要素:
- 数据存储
- 数据计算
- 数据挖掘/机器学习算法
举个例子——
假设现在有用户的特征(年龄、性别等)以及对酒店的评分,我们想分析两者之间是否有某种关系。
- 假设有20条数据,我们可以在纸上简单地计算、分析
- 假设有2G的数据,我们就需要在一台有足够内存的计算机上存储、计算、分析
- 假设有2T的数据呢?我们可能需要很多台计算机,并进行高难度的分布式编程,或者,使用为了解决这种情况而出现的Hadoop!
如上所述,Hadoop是为了应对大数据问题而设计的。
1.2 Hadoop是什么?
1.2.1 概念/定义
Hadoop是一个分布式系统基础架构,可以使用户在不了解分布式系统底层细节的情况下开发分布式程序,充分利用集群进行高速存储和运算。其两大核心是HDFS和MapReduce,分别解决了大数据存储和大数据分析/计算的问题[1]。
HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储
MapReduce 为分布式计算框架,包含map(映射)和 reduce(归约)过程,负责在 HDFS 上进行计算
Hadoop擅长海量数据的处理,如
- FaceBook使用Hive(基于Hadoop的SQL)进行日志分析
- 淘宝使用Hive实现自定义筛选功能实现
- 淘宝使用Pig(基于Hadoop的大规模数据分析工具)实现商品推荐
- Yahoo使用Pig做垃圾邮件的识别与过滤
1.2.2 核心模块
Hadoop有4个核心模块,包括——
- HDFS:Hadoop的分布式文件系统
- MapReduce:并行和可扩展的用于处理大数据的模式
- YARN:任务分配和集群资源管理框架
- Hadoop Common:为 Hadoop 其他模块提供支持的基础模块
1.2.3 优点
(HDFS和MapReduce的优点合并)
- 高容错性,存储的数据具有多个副本,当有一个副本丢失或不可用时,HDFS可以用另一个副本代替
- 适合大数据处理,分布式的文件存储系统使得它可以处理
- 移动计算,HDFS提供了数据位置,使得计算框架(MapReduce)将计算的数据分配到较近的计算节点甚至是本地节点,从而消除一部分网络拥堵,提高系统的吞吐量
- 高扩展性,Hadoop 是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以干计的节点中
- 低成本,Hadoop是开源的
2. HDFS
2.1 概念/定义
Hadoop Distributed File System,hadoop分布式文件系统,是一个具有高度容错性的分布式文件存储系统,可以运行在廉价的服务器上。具有以下优点——
- 高容错性,存储的数据具有多个副本,当有一个副本丢失或不可用时,HDFS可以用另一个副本代替
- 适合大数据处理,分布式的文件存储系统使得它可以处理
- 移动计算,当计算所需数据靠近计算节点时,可消除一部分网络拥堵,提高系统的吞吐量。HDFS提供了数据位置,使得计算框架
- 简单一致性模型,HDFS文件一旦写入就不能修改,只能添加,简化了数据一致性的问题
- 可移植性
为了大吞吐量而设计的HDFS不适合的场合有:低延时数据访问、小文件存储、并发写入、文件修改等