- 什么是Hadoop,Hadoop发展历史,Hadoop组成及生态
- 为什么要使用Hadoop构建大数据平台
- Hadoop中常见大数据处理思想、理论、术语、常用算法、数据结构、系统架构
- Hadoop平台版本选择以及如何搭建Hadoop平台
- Hadoop平台应用及常见大数据应用架构
1. 什么是Hadoop,Hadoop发展历史,Hadoop组成及生态
- Hadoop是Apache的一个开源框架,它可以用于在分布式的计算机集群环境下存储和处理大数据。
- Hadoop起源于Doug Cutting(写Lucene那位)的Nutch项目(Lucene的子项目),为了解决Nutch的索引等功能的性能问题,在Google开放的三篇大数据论文:GFS,MapReduce,BigTable指引下,实现了如今Hadoop的核心模块:HDFS,MapReduce,并在后来纳入了Apache基金会下得到飞速发展,成为了现在业界家喻户晓的Apache Hadoop开源大数据平台
- Hadoop是一系列服务和模块的统称,它主要包括:
- Hadoop Common
- 为其他模块提供基础工具,例如序列化和压缩,RPC,配置和日志等
- Hadoop Distributed File System (HDFS)
- 一个高可靠,可扩展,高吞吐量的分布式文件系统,它的原型是GFS (Google File System)
- HDFS通过将文件分块,这些块可以分布存储在多台机器组成的数据节点集群中,并且可以通过扩展机器来扩展存储能力。同时通过存储数据块的多个副本,来保证数据的冗余和可靠性
- HDFS的分布式存储体现了算法中的分解,分治,冗余等思想,通过数据分解并分布在多台机器上,扩展了存储能力,同时也方便后续的计算框架并行计算以及容错处理。
- Hadoop MapReduce
- 一个分布式的离线并行计算框架,其具备易于编程,易于扩展,高容错等特性
- MapReduce的编程模型来源于函数式编程,它将数据处理过程分解为若干个步骤, 主要包括映射(map)和规约(reduce)两个步骤,map将输入数据映射为一些key/value对,而reduce则以key为分组对数据进行规约,这样做的好处是利于组件化和并行化。
- 在Hadoop 1.x版本,YARN还未出现时,MR还负责资源和作业调度。在Hadoop 2.x中,YARN出现后,MR只负责计算,资源管理和作业调度都交由YARN负责
- MapReduce分布式计算框架也应用了分治,迭代,移动计算而不是数据等算法思想,扩展了并行处理的能力,简化了编程模型,以及减少了数据移动带来的IO耗时和带宽消耗
- Hadoop YARN
- 一个通用的资源管理和作业调度框架,除了支持MapReduce的计算框架,也支持DAG(有向无环图)作业的计算框架
- 在Hadoop 2.x中出现,解决MR中负责资源和作业调度导致的一系列扩展性、可用性等问题
- 除了MapReduce,多种计算框架都可以运行在YARN之上。例如Spark、Storm、Flink等
- YARN的基本设计思想是将MapReduce v1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。
- Hadoop Ozone (孵化中)
- 是一个基于HDFS的对象存储系统。Ozone的设计初衷就是要解决HDFS namespace的扩展性问题
- Ozone的设计思想就是Scaling HDFS,针对HDFS目前的分层去缩放相关的功能模块,比如命名空间层和Block数据块层
- 目前还处于alpha版本,暂时无法应用在生产中
- Hadoop Submarine (新)
- Submarine是构建在Hadoop之上用于集成深度学习计算的框架,可以通过其提供的命令行工具向YARN 提交定制的深度学习应用程序(如 Tensorflow,Pytorch 等),同时它还提供了一系列工具,用于运行深度学习程序的可视化交互和输出,工作流调度,安装部署等。
- Hadoop Common
- 除了上述Hadoop核心模块,整个Hadoop生态十分丰富和完善:
- 分布式存储:
- 分布式文件系统:Apache Hadoop Distributed File System (HDFS)
- 分布式对象存储:Apache Hadoop Ozone
- 分布式KV、列式存储数据库:
- Apache HBase
- Apache Cassandra
- 数据仓库
- Apache Hive
- 分布式计算分析:
- 批处理、离线处理:
- Apache Hadoop MapReduce
- Apache Pig
- Apache Tez
- Apache Spark
- Apache Hadoop MapReduce
- 流处理、(近)实时处理:
- Apache Spark Streaming
- Apache Flink
- OLAP即时查询
- Apache Hive SQL
- Druid
- Presto
- Apache kylin
- Apache Impala
- 批处理、离线处理:
- 集群资源管理作业调度:
- Apache Hadoop YARN
- 分布式协调:
- Apache Zookeeper
- 序列化协议、存储格式:
- Apache Avro
- 集群监控管理:
- Apache Ambari
- 日志数据收集、监控、分析
- Apache chukwa
- 日志收集:
- Apache Flume
- 工作流,任务调度:
- Apache Oozie
- Azkaban
- 数据治理:
- 数据声明周期管理:
- Apache Falcon
- 安全:
- Apache Ranger
- Apache Sentry
- 数据声明周期管理:
- 机器学习和数据挖掘:
- Apache Mahout
- 分布式存储:
- 除了原生的Hadoop外,Hadoop还有两个十分重要的发行版本,它们在Hadoop的基础上在功能,兼容性,安全性,稳定性等上都有改进(目前两家公司已经合并,个人更看好CDH):
- Hortonworks的HDP
- Cloudera的CDH
- Hortonworks的HDP
2. 为什么要使用Hadoop构建大数据平台
- 开源:中小企业要自己开发维护大数据存储和处理系统是非常困难和高成本的事情,Hadoop开源,开箱即用,且依托Apache开源组织,社区活跃
- 扩展性:HDFS将数据分块,并在集群间分布,可以方便的扩展数以千计的节点
- 可靠性:HDFS 维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失
- 容错性:能够自动将失败的任务重新分配
- 高性能:MapReduce任务可以在集群的多个节点数据上并行执行,并且通过移动计算而不是数据的方式,减少了数据移动的开销
3. Hadoop中常见大数据处理思想、理论、术语、常用算法、数据结构、系统架构
- 大数据处理思想:
- 分解
- 分治
- 迭代
- 移动计算而不是数据
- 理论和术语
- 网络通信
- 消息的三态:成功,失败,超时
- 幂等性
- 分布式一致性理论
- 强一致性,最终一致性,因果一致性,会话一致性,读你所写一致性,单调读一致性,单调写一致性
- 分布式事务
- 一致性协议
- Paxos,Raft,2PC,3PC,向量时钟(Vector Clock),RWN
- ACID
- 原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)
- CAP
- 一致性(Consistency),可用性(Availability),分区容忍性(Partition Tolerance)
- BASE
- 基本可用(Basically Available),软状态或柔性状态(Soft state),最终一致性(Eventual Consistency)
- RPC(远程调用)
- 副本同步更新
- 同时更新,主从式更新,任意节点更新
- 数据分片
- 哈希分片,范围分片
- 容错与恢复
- 网络通信
- 常用数据结构和算法
- Bloom Filter
- 一致性哈希
- SkipList
- LSM树
- 压缩算法:snappy,zlib,lz4,bzip2,gzip,lzo
- 分布式一致性算法:Paxos,Raft
- 系统架构
4. Hadoop平台版本选择以及如何搭建Hadoop平台
- Hadoop版本、平台选择参考:
- 如果不是为了练习,通常不要自己手动安装Hadoop,而是通过Ambari或者HDP、CDH大数据平台提供的工具进行部署安装,以减少繁琐的配置和操作带来的问题。
5. Hadoop平台常见大数据应用架构
- Lambda架构
- Kappa架构
/* 本文属于原创文章,转载请注明作者和出处 quarterback.cn,请勿用于任何商业用途 */