一、离线计算
- 离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示。
- 代表技术:Sqoop 批量导入数据、HDFS 批量存储数据、MapReduce 批量计算数据、Hive 批量计算数据。
- MapReduce:是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。
MapReduce运算过程需要分成至少2个阶段:
- 第一个阶段的MapTask并发实例,完全并行运行,互不相干。
- 第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。
MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。
二、常见流式计算框架对比
- 离线计算与实时计算最大的区别:实时收集、实时计算、实时展示。
- 流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示。
- 代表技术:Flume 实时获取数据、Kafka 实时数据存储、Storm 实时数据计算、Spark实时数据计算、Flink实时数据计算、Redis 实时结果缓存、Mysql 持久化存储。
Storm
是一个免费开源的分布式实时计算系统。Storm 能轻松可靠地处理无界的数据流,就像 Hadoop 对数据进行批处理,Storm可以实时处理数据。
- Storm:纯流式处理基于记录
专门为流式处理设计 数据传输模式更为简单,很多地方也更为高效 并不是不能做批处理,它也可以来做微批处理,来提高吞吐
- Spark Streaming:微批处理
将RDD做的很小来用小的批处理来接近流式处理 基于内存和DAG可以把处理任务做的很快
Storm | Spark Streaming |
流式处理 | 微批处理 |
(毫)秒级 | 秒级 |
稳定 | 稳定性改进中 |
独立系统,专为流式计算设计 | Spark核心智商的计算模型能与其他组件很好结合 |
Spark
并非真正意义上的流处理,而是微批处理,对数据流进行极小粒度的拆分,近似达到流处理的效果(微分原理),而Flink是大批量处理框架,既可以处理有界流也可以处理无界流。
- Spark Core:实现了Spark 的基本功能,包含 RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。
- Spark SQL:Spark用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 操作数据。
- Spark Streaming:Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API。
- Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。
- GraphX(图计算) :Spark中用于图计算的 API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。
- 集群管理器:Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。
- Structured Streaming:处理结构化流,统一了离线和实时的 API。
Flink
Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。
它的最大亮点是流处理,是业界最顶级的开源流处理引擎。
Flink最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。
Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。
此外,Flink的运行时本身也支持迭代算法的执行。
三、可视化ETL工具
ETL:元数据加工
数据抽取(extract)、转换(transform)、加载(load),跨表组织汇总与分析。图形化ETL视图配置,自主进行数据建模,跨表聚合视图可视化配置,对不同来源的源数据进行加工,自助式ETL,自由组合数据视图,数据建模分析。
主要功能有:
- 数据源:提供多种数据源接入,关系型数据库,数据模型,Excel,Kafka消息流
- 追加合并:拼接不同数据表数据及多张表的数据进行上下拼接
- 字段设置:对输入字段进行显示、隐藏、排序、重命名、添加新的计算字段
- 横向连接:两张表的数据左右拼接,内连接、左连接和右连接
- 数据筛选:将数据表中不需要处理的数据过滤掉,只保留需要处理的数据
- 整合运算:选择批处理或流处理处理引擎(Flink),进行数据处理运算
- 输出源:输出节点用来存放最终处理完成的数据,kafka、ClickHouse、Hive