数据传输层
Sqoop:
支撑RDBMD[Relational Database Management System 即关系型数据库管理系统]和HDFS之间的数据迁移,通常将MySQL,SQLServer,Oracle的数据移到HDFS或者Hive中,或者将数据从HDFS导出到关系型数据库中[包括导入数据、导出数据、执行SQL查询、列出数据库和表等]。
Cannal:
canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。我们可以简单地把canal理解为一个用来同步增量数据的一个工具。原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。
Flume:
用于海量日志的采集、聚合和传输,将生产的数据保存到到HDFS或者HBase中。
Flume+Kafka:
满足实时流日志的处理。
数据存储层
HDFS:
Hadoop分布式文件系统(HDFS, Hadoop Distributed File System)的设计初衷就是为大规模数据集提供高吞吐量、高度容错的存储。它能够与多种存储源集成,包括本地系统以及云存储如Amazon S3,通过Web协议WebHDFS(webhsfs)实现远程访问。HDFS的核心特性之一是其分布式架构,文件会被切分成称为"数据块"(data block)的小部分,并在集群的不同节点上复制保存。这样做的目的是为了提高读写效率,当某个节点发生故障时,由于有副本存在,其他节点可以接管服务,从而保证了系统的高可用性和数据的完整性。
客户端对文件的操作,无论是写入还是读取,通常都会被分布到集群的不同节点上执行,这避免了集中式的单点性能瓶颈。这种设计使得HDFS特别适合于大数据处理任务,因为它能够处理大量并发请求,且在处理海量数据时表现出良好的扩展性。
HDFS采用追加(append-only)的方式写入数据。不支持文件任意offset的修改。不支持多个写入器(writer)。
HBase:
HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待。
Kudu:
折中HDFS和HBase的分布式数据库,既支持随机读写,又支持OLAP分析的大数据引擎。
资源管理层
Yarn:
Hadoop的资源管理器,负责Hadoop集群资源的统一调度和管理,为运算程序提供服务器运算资源,能支撑MR,Spark,Flink多种框架。
Kubernates:
Kubernetes 集群可视化为两个部分:控制平面与计算设备(或称为节点)。
1. 节点与容器集: 每个节点可以是物理机或虚拟机,运行着一个或多个容器集(容器编排系统中的概念)。容器集由多个容器组成,这些容器共享节点的资源(如 CPU、内存、存储)。
2. 控制平面: 控制平面负责管理整个集群的状态和配置,例如确定哪些应用运行在哪些节点上,以及使用哪些容器镜像。它接收管理员或 DevOps 团队的命令,并将这些指令转发给各个节点。
3. 服务与任务调度:服务定义了应用程序或工作负载,它们与容器集解耦。这意味着服务请求不关心实际运行在哪个容器集上,容器编排系统会自动决定将服务请求分发到适当的容器集。容器编排系统会考虑节点的可用资源和负载情况,自动将容器集分配到最合适的节点上来执行任务请求。这些系统通常会进行资源调度和容错处理,确保系统的高可用性和效率。
4. 动态调整与替换:容器编排系统能够动态调整和重新分配容器集,以应对节点负载变化或节点故障。它可以将容器集从一个节点迁移到另一个节点,或者在容器失败时自动替换它们。
通过容器化技术和自动化管理,使得分布式应用程序能够更有效地运行和扩展,同时减少了运维的复杂性和人为错误的可能性。
Kubernetes 集群的预期状态定义了应运行哪些应用或其他工作负载、应使用哪些镜像、应提供哪些资源,以及其他配置详情。
在使用这种基础架构时,管理容器的方式基本不变。但您需要在更高级别参与容器管理,无需对独立的容器或节点实施微观管理,就能更好地控制容器。
数据计算层[离线计算框架]
MapReduce:
MapReduce是一个分布式、并行处理的计算框架。它把任务分为 Map 阶段和 Reduce 阶段。开发人员使用存储在HDFS 中数据(可实现快速存储),编写 Hadoop 的 MapReduce 任务。由于MapReduce工作原理的特性, Hadoop 能以并行的方式访问数据,从而实现快速访问数据。
Hive:
数据仓库工具,管理HDFS存储的数据,可以将结构化的数据文件映射成一张数据库表,并提供完整的类似于SQL查询功能,适合离线非实时数据分析。
Spark sql:
引入RDD[弹性分布式数据集],将SQL转换成RDD的计算,并将中间结果存放在内存中。
数据计算层[实时计算框架]
Spark Streaming:
实时流数据处理框架[按时间片分成小批次,秒级延迟],可以接收Kafka,Flume,HDFS等数据源实时输入数据,并将结果保存在HDFS,RDBMS,HBase等。
Storm:
实时流数据处理框架[毫秒级延迟]。
Flink:
更高级的实时流数据处理框架,比Storm延迟更低,吞吐量更高,另外支持乱序和调整延迟时间。
多维分析层
Kylin:
Kylin 基于 Hadoop 和 HBase 构建,能够支持超大规模数据的查询和分析,并且具有低延迟、高并发、高可扩展等优点。分布式分析引擎,能在亚秒内查询巨大的Hive表,通过预计算将多维组合计算好的结果保存成Cube存储到HBase中。用户使用SQL查询时,将SQL转换为对Cube的查询。
Druid:
Druid是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。也是一个JDBC组件,用于实时数据分析的高容错,高性能开源分布式系统。