一文读懂大数据各组件

在还没接触大数据的时候,着实被那么多技术组件和平台架构吓到了,以下列举一些

Druid、Kudu、ClickHouse、Flink、Spark 、Storm、Impala、Presto、Hive、Kafka、RabbitMQ、Canal、Doris、Apache Airflow、Oozie、Azkaban、DolphinScheduler、HDFS、YARN、MapReduce、Hive、HBase、ZooKeeper

😜是不是看着有点吓人,不过没关系通过本文可以帮你迅速建立对这些技术组件的概念性认识,分门别类出来就能知道都是干啥的了~

大数据平台架构

大数据架构平台分为:数据集成、存储与计算、分布式调度、查询分析等核心模块。我们沿着这个架构图,来剖析大数据平台的核心技术

😄01数据集成

1. 日志同步

开源日志收集系统有 Sqoop、Flume、Logstash、Filebeat、Vector 等,其中 Flume 在云原生场景用的多,Vector 是一个很高效的日志同步工具,刚开源不久。

2.数据抽取工具

大数据分析不能直接在原始的业务数据库上直接操作,所以需要抽取想要的数据到分析数据库或者分布式存储系统(例如 HDFS)。

常见数据抽取工具包括:DataX、Canal 、Sqoop、FlinkCDC等。

1⃣️离线数据同步

  • Apache Sqoop 是一个专为 Hadoop 和关系型数据库之间的数据抽取和传输设计的工具

Sqoop从关系型数据库(如 MySQL、PostgreSQL、Oracle、SQL Server 等)向 Hadoop(HDFS 或 Hive)导入数据。

  • DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。

  • Canal通过模拟 MySQL 的从库协议,实时解析 MySQL 的 binlog(二进制日志),获取数据库的增量数据。

    实际同步大数据量的时候容易丢数据。

2⃣️实时数据同步

FlinkCDC是目前用的比较稳定且能实时同步大数据量,实现多数据源之间的实时同步

3.数据传输队列

数据传输有三种:

  • Kafka:流式传输

  • RabbitMQ:队列传输

  • Pulsar:流式传输+队列传输

😯02 数据处理:数据存储、计算

1. 数据存储:HDFS

HDFS 特点:横向扩展,数据容错性高。

2. 数据计算

在众多的计算引擎中,MapReduce、Hive、Spark 等通常用于离线处理,即批计算。

Storm、Spark Steaming 等处理实时计算的场景较多,即流计算,Flink 既可以用于流计算,也可以用于批计算。

📌1)离线数据计算引擎

Hive 的用途很广,也很可靠,底层基于 MapReduce 的封装,属于 Hadoop 全家桶组件之一,缺点是只能实现离线批处理。

Spark 是非常高效的批处理工具,成熟,稳定,比 Hive 快很多,并且还能实现近实时的数据处理能力。Spark 功能全,架构新,基于 RDD,计算过程中优先利用内存,并优化中间的计算步骤。

📌2) 实时数据计算引擎

实时计算引擎大体经过了三代,依次是:storm、spark streaming、Flink。其中storm和spark streaming现在用的很少,大部分公司都在用Flink。

😊03 大数据查询

常用的OLAP引擎对比:

特性 Apache Druid Apache Kylin ClickHouse Doris StarRocks Greenplum
架构类型 分布式 多维预计算 列式存储 列式存储 列式存储 分布式
查询性能 实时低延迟 Cube 高速查询 高并发快速查询 SQL 优化高效查询 SQL 优化高效查询 批处理优化
数据摄取 实时 + 批量 批量为主 实时为主 实时 + 批量 实时 + 批量 批量为主
应用场景 实时分析、监控 BI 报表生成 日志分析、实时查询 企业分析、报表生成 企业分析、报表生成 数据仓库应用
技术优势 时间分区、高效索引 多维分析 列式存储、索引优化 MySQL 兼容性强 MySQL 兼容性强 SQL 支持强大

StarRocks 的性能确实很强大,速度最快,但三者对比提升相同量级的性能需要更多的 CPU、内存资源等;
Impala 在开启各项优化之后,效果是可以接近 StarRocks 的;
Presto 性能一般易用性感觉最好,而且发现跑部分 TPC-DS 测试时,调用 HMS API 的频率偶尔很高,曾经把 HMS 搞挂过。差不多就是开箱即用,配置很简单。支持多源数据(多Catalog)的接入,但是随着数据湖对底层数仓存储层的统一加上各个。其他高效分析引擎对数据湖的支持,这块的优势也会被逐步抹平。

☕️04 数据调度

1. 常用任务调度系统

提到常用的任务调度系统,大家都会想到非常多,包括但不限于:Crontab、Apache Airflow、Oozie、Azkaban、Kettle、XXL-JOB、Apache DolphinScheduler、SeaTunnel 等,五花八门

Crontab为linux系统自带的调度

Apache Airflow 国外用的

Oozie离线hive脚本调度用的多

Apache DolphinScheduler(海豚调度)更专注于大数据场景

Kettle比较传统的定时调度

2. 资源调度系统

资源调度系统主要包括 Yarn 和 Azkaban。Yarn 用的广泛,上层很多组件都要支持,所以很受欢迎,对其优化很多。

Azkaban 是资源调度的小众分支,用的人不多

大数据开发岗位

1.数据开发/数仓开发

编程语言主要是SQL、辅python,shell。

数据开发工作流程可大致总结如下:

2.大数据平台开发工程师

搭建数据同步、数据质量、数据服务、数据血缘、元数据管理等平台

以上使用的编程语言基本都是基于JAVA,JAVA基础是必备的。


觉得不错的话,支持一根棒棒糖吧 ୧(๑•̀⌄•́๑)૭



wechat pay



alipay

一文读懂大数据各组件
http://yuting0907.github.io/posts/63506dbf.html
作者
Echo Yu
发布于
2024年12月26日
许可协议