Hadoop生态圈
Hadoop是Apache开源的分布式计算框架,由Java语言实现,支持对海量数据的分布式计算,其框架中最核心设计是HDFS和MapReduce。
Hadoop的优势
1)高可靠性:因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理
2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
4)高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。
Hadoop组成
1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
2)Hadoop MapReduce:一个分布式的离线并行计算框架。
3)Hadoop YARN:作业调度与集群资源管理的框架。
4)Hadoop Common:支持其他模块的工具模块。
1 Hadoop生态圈重要组件(数据处理过程的视角)
1.1 数据采集
Sqoop—— 结构化数据/数据迁入迁出工具
Flume Kafka—— 分布式日志采集工具 分布式消息队列 针对半结构化或非结构化数据
1.2 数据存储
HDFS—— 基于Hadoop的分布式文件存储系统
HBase—— 基于Hadoop的列式分布式NoSQL数据库
1.3 资源调度
YARN—— 作业调用和集群资源管理框架
k8s
1.4 计算框架
MapReduce—— 基于Hadoop的分布式批处理框架
Spark Core—— 批处理
Spark SQL—— 交互式分析
Spark Streaming—— 流处理
1.5 数据分析
Hive—— 基于Hadoop的类SQL数据仓库工具
Spark MLib—— 数据挖掘
ElasticSearch—— 全文搜索
1.6 数据可视化
Echarts D3 Cboard
1.7 Zookeeper
分布式协调组件
2 Hadoop生态圈技术体系(产品的视角)
Hadoop
- HDFS:分布式文件系统
- YARN:分布式资源管理系统
- MapReduce:分布式批处理计算框架
Spark:分布式通用计算引擎
- Spark Core:基础计算框架(批处理)
- Spark SQL:结构化数据查询
- Spark Streaming:实时流处理
- Spark MLib:机器学习
HBase:分布式列式数据库
Hive:Hadoop数据仓库
ElasticSearch:分布式全文搜索引擎
外围工具:Sqoop、Flume、Kafka
HDFS
- 概念
- Hadoop分布式文件系统(Hadoop Distributed File System)
- 在大数据技术体系中,地位无可替代
- 主要特点
- 高容错性:数据冗余多副本,副本丢失后自动恢复
- 高可用:NameNode HA、安全模式
- 高扩展:10K节点规模
- 简单一致性模型:一次写入多次读取,支持追加,不允许修改
- 流式数据访问:批量读而非随机读,关注吞吐量而非时间
- 大规模数据集:典型文件大小GB~TB级,百万规模以上的文件数量, PB级以上数据
- 大规模批处理:移动计算不移动数据
- 构建成本低且安全可靠:运行在大量廉价商用机器上,硬件错误是常态,提供容错机制
MapReduce
- 概念
- 面向批处理的分布式计算框架
- 一种编程模型:将MapReduce程序分为Map阶段和Reduce阶段
- 核心思想
- 分而治之,分布式计算
- 移动计算,而非移动数据
- 特点
- 高容错:任务失败,自动调度到其他节点重新执行
- 高扩展:计算能力随着节点数增加,近似线性递增
- 适用于大规模数据的离线批处理
- 降低了分布式编程的门槛
YARN
- 概念
- 另一种资源协调器(Yet Another Resource Negotiator)
- 分布式通用资源管理系统
- 为了解决Hadoop 1.x中MapReduce的先天缺陷
- 负责集群资源的统一管理
- 从Hadoop 2.x开始,YARN成为Hadoop的核心组件
- 特点
- 专注于资源管理和作业调度
- 通用性强:适用各种计算框架,如Spark
- 高可用:ResourceManager高可用、HDFS高可用
- 高扩展
Spark
- 大规模分布式通用计算引擎
- Spark Core:核心计算框架(批处理)
- Spark SQL:结构化数据查询
- Spark Streaming:实时流处理
- Spark MLib:机器学习
- Spark GraphX:图计算
• 采用Scala语言开发
- 特点
- 计算高效:内存计算、Cache缓存机制、DAG引擎、多线程池模型
- 通用易用:适用于批处理、流处理、交互式计算、机器学习算法等场景
- 运行模式多样:Local、Standalone、YARN/Mesos
Hive
- 概念
- Hadoop数据
- 对海量结构化数据进行高性能查询和分析
- 采用HDFS或HBase作为数据存储
- 利用MapReduce做底层计算
- 特点
- 提供类SQL查询语言
- 支持命令行,或JDBC/ODBC
- 提供灵活的扩展性
- 提供复杂数据类型,扩展函数和脚本等
HBase
- 概念
- Hadoop Database
- Google BigTable的开源实现
- 分布式NoSQL数据库
- 列式数据库,适合存储半结构化、非结构化数据
- 采用HDFS作为文件存储系统
- 特点
- 高性能:支持高并发写入和查询
- 高扩展:数据自动切分和分布,可动态扩容,无需停机
- 高可用:建立在HDFS分布式文件系统之上
ElasticSearch
- 开源的分布式全文检索引擎
- 基于Lucene实现全文数据的快速存储、搜索和分析
- 处理大规模数据:PB级以上
- 具有较强的扩展性,集群规模可达上百台
- 首选的分布式搜索引擎