关于腾讯云:基于云原生的大数据实时分析方案实践

33次阅读

共计 5848 个字符,预计需要花费 15 分钟才能阅读完成。

1 计划介绍

大数据处理技术现今已广泛应用于各个行业,为业务解决海量存储和海量剖析的需要。但数据量的爆发式增长,对数据处理能力提出了更大的挑战,同时对时效性也提出了更高的要求。实时剖析已成为企业大数据分析中最要害的术语,这象征企业可将所有数据用于大数据实时剖析,实现在数据承受同时即刻为企业生成剖析报告,从而在第一工夫作出市场判断与决策。典型的场景如电商大促和金融风控等,基于提早数据的剖析后果曾经失去了价值。另外随着云原生时代的到来,云原生天生具备的高效部署、麻利迭代、云计算资源老本和弹性扩大等劣势,正在减速和缩短业务零碎落地过程。云原生同样可助力大数据这一过程。

本文次要介绍如何利用 Kubernetes 实现云原生大数据实时剖析平台。

2 总体架构

  • Data Streams:基于 Kafka 的数据流接入计划
  • Data Computations:基于 Spark Streaming 与 Flink 的流计算计划
  • Data Pipeline:基于 TKDF(Tencent Kubernetes Data Flow)的数据工作流计划
  • Data Store:基于 Iceberg 与 HDFS 的数据湖计划
  • Data Interactive Analysis:基于 Spark SQL 与 Presto 的 SQL 交互式剖析计划
  • Data Intelligence:基于 Metabase 的数据可视化计划以及若干数据接入形式
  • Data Infrastructure:基于 TKBS(Tencent Kubernetes Bigdata Suite)的云原生大数据套件计划,可帮忙用户一键在 Kubernetes 上部署生产可用的大数据平台;基于 TKE / EKS / TKEStack 的 Kubernetes 引擎计划,可为用户提供生产、管控和应用 Kubernetes 集群服务

3 数据接入流

在实时剖析中,须要继续、疾速、实时地承受源源不断的数据与事件,作为整个剖析平台的数据起源与入口。这个过程最好是基于流的、高吞吐、可扩大、可对接支流计算引擎。咱们抉择 Apache Kafka 作为事件流解决的解决方案。

Apache Kafka 是一个分布式流解决平台,被很多公司宽泛应用于数据管道、流剖析、数据集成,消息中间件等畛域。Kafka 适宜场景包含:

  • 音讯队列:结构实时流数据管道,它能够在零碎或利用之间牢靠地获取数据
  • 流解决:构建实时流式应用程序,对这些流数据进行转换或者影响

Apache Kafka 可通过容器化部署在 Kubernetes,充分利用 Kubernetes 资源主动部署、主动扩大、一次配置任意运行等能力做到云原生赋能。

4 数据计算

在传统的数据处理流程中,总是先收集数据,而后将数据放到数据库中。当人们须要的时候通过数据库对数据做查问,失去答案或进行相干的解决。这样看起来尽管十分正当,然而后果却十分的紧凑,尤其是在一些实时搜寻应用环境中的某些具体问题,相似于 MapReduce 形式的离线解决并不能很好地解决问题。这就引出了一种新的数据计算构造 – 流计算形式。它能够很好地对大规模流动数据在一直变动的静止过程中实时地进行剖析,捕捉到可能有用的信息,并把后果发送到下一计算节点。

在云原生下,咱们将流计算引擎容器化和迁徙到 Kubernetes 上,利用 Kubernetes 自动化部署、HPA 等能力实现计算资源动态创建、调度与伸缩。云原生赋予了流计算即拿即用资源的能力。

以后支流的流计算引擎均可顺畅的运行在 Kubernetes 之上。

4.1 Spark on Kubernetes

Spark 在 2.3 之后,反对将集群创立和托管到 Kubernetes 中,以 native 形式运行。

Kubernetes 可帮忙 Spark 任务分配和治理计算资源,提供网络和存储,治理工作生命周期,动静的横向扩大能力,以及连贯 Kubernetes 生态其余服务的能力。

4.2 Flink on Kubernetes

Flink 在 Kubernetes 上反对 standalone 与 native 两种模式。standalone 相当于利用 Kubernetes Deployment、Service、Configmap 等在 Kubernetes 上创立一个残缺 Flink 集群。native 形式相似 Spark native,是通过内置于 Flink Client 的 K8s Client 与 Kubernetes 集群交互,负责组件资源的创立和销毁。Flink 新引入的 Application 模式,更是能够在提交 Job 的同时动态创建 Flink 集群。

5 数据工作流

数据工作流(Data Pipeline)能够了解为一个贯通数据产品或数据系统的管道,而数据就是管道载体的运输对象。数据工作流连贯了数据处理剖析的各个环节,将整个庞杂的零碎变得颠三倒四,便于管理和扩大。

咱们依据生产教训,设计和研发了基于云原生的数据工作流计划 TKDF,以帮忙用户集中精力从数据中获取所须要的信息,而不是把精力破费在治理日常数据和治理数据库方面。

TKDF 有以下劣势:

  • 基于云原生
  • YAML 申明式定义
  • 反对支流数据源
  • 接口式封装,可插件化减少新的数据源实现
  • 残缺的数据生命周期治理
  • 原生反对 Spark Streaming
  • 计算模型形象,反对基数统计近似、漏斗模型、含糊计算、产品经营指标等

6 数据湖

现今大数据存储和解决需要越来越多样化,在后 Hadoop 时代,如何构建一个对立的数据湖存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方向。怎么疾速、统一、原子性地在数据湖存储上构建起 Data Pipeline,成了亟待解决的问题。并且随同云原生时代到来,云原生天生具备的自动化部署和交付能力也正催化这一过程。

基于 Hadoop 的云原生数据湖

传统形式下,用户在部署和运维大数据平台时通常采纳手动或半自动化形式,这往往耗费大量人力,稳定性也无奈保障。Kubernetes 的呈现,变革了这一过程。Kubernetes 提供了利用部署和运维标准化能力,用户业务在施行 Kubernetes 化革新后,可运行在其余所有规范 Kubernetes 集群中。在大数据畛域,这种能力可帮忙用户疾速部署和交付大数据平台(大数据组件部署尤为简单)。尤其在大数据计算存储拆散的架构中,Kubernetes 集群提供的 Serverless 能力,可帮忙用户即拿即用的运行计算工作。并且再配合离在线混部计划,除了可做到资源对立管控升高复杂度和危险外,集群利用率也会进一步晋升,大幅降低成本。

咱们应用 TKBS 在 Kubernetes 上构建 Hadoop 数据湖:

基于 Iceberg 的云原生实时数据湖

Apache Iceberg is an open table format for huge analytic datasets. Iceberg adds tables to Presto and Spark that use a high-performance format that works just like a SQL table.

Apache Iceberg 是由 Netflix 开发开源的,其于 2018 年 11 月 16 日进入 Apache 孵化器,是 Netflix 公司数据仓库根底。Iceberg 实质上是一种专为海量剖析设计的表格局规范,可为支流计算引擎如 Presto、Spark 等提供高性能的读写和元数据管理能力。Iceberg 不关注底层存储(如 HDFS)与表构造(业务定义),它为两者之间提供了一个形象层,将数据与元数据组织了起来。

Iceberg 次要个性包含:

  • ACID:具备 ACID 能力,反对 row level update/delete;反对 serializable isolation 与 multiple concurrent writers
  • Table Evolution:反对 inplace table evolution(schema & partition),可像 SQL 一样操作 table schema;反对 hidden partitioning,用户无需显示指定
  • 接口通用化:为下层数据处理引擎提供丰盛的表操作接口;屏蔽底层数据存储格局差别,提供对 Parquet、ORC 和 Avro 格局反对

依赖以上个性,Iceberg 可帮忙用户低成本的实现 T+0 级数据湖。咱们应用 Iceberg + HDFS 的形式在 Kubernetes 上构建云原生数据湖。

咱们应用 Kubernetes 负责利用自动化部署与资源管理调度,为下层屏蔽底层环境复杂性。通过 TKBS 一键式部署云原生数据湖。Iceberg + HDFS 实现了基于 Hadoop 生态的实时数据湖,为大数据利用提供数据拜访及存储能力。Spark、Flink、Presto 等计算引擎以 native 或 standalone 形式运行于 Kubernetes 集群中,资源可随提交工作即拿即用。与在线业务混部后,更能大幅晋升集群资源利用率。

  • Resource Layer:应用 Kubernetes 提供资源管控能力
  • Data Access Layer:应用 Iceberg 提供 ACID、table 等数据集拜访操作能力
  • Data Storage Layer:应用 HDFS 提供数据存储能力
  • Data Computation Layer:应用 Spark / Flink / Presto on Kubernetes 提供流批计算能力或实现 SQL 引擎

7 交互式剖析

实时剖析除了继续实时剖析外(Continuous real-time analytics),还包含交互式剖析(On-demand real-time analytics)。交互式剖析是一种反应式分析方法,用户通过查问获取剖析后果(比方输出 SQL 语句)。咱们采纳 SQL 语句作为交互式查问语句,反对 Spark SQL 与 Presto 两种 SQL 查问引擎。

7.1 Presto on Kubernetes

Presto 是由 Facebook 开源的分布式 SQL 查问引擎,专门为交互式查问所设计,提供分钟级乃至亚秒级低延时的查问性能。它既可反对非关系数据源,例如 HDFS、Amazon S3、Cassandra、MongoDB 和 HBase,又可反对关系数据源,例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。

Presto 查问引擎是 Master-Slave 架构,由一个 Coordinator 节点,一个 Discovery Server 节点,多个 Worker 节点组成。

咱们通过 standalone 形式将 Presto 集群部署在 Kubernetes 上:

7.2 Spark SQL on Kubernetes

Spark SQL 是 Spark 结构化数据的执行模块,可反对应用 SQL 在 Spark 查问剖析结构化数据 DataFrames、Datasets。咱们同样反对应用 Spark SQL 作为交互式剖析引擎,将执行的 Spark 工作以 native 形式运行在 Kubernetes 上。

8 数据智能剖析

咱们正处于大数据和数字化转型的时代,数据无处不在,使用数据驱动的思维和策略在实践中逐步成为共识。数据的价值已在科学研究和工商业的不同畛域失去充沛展示。数据智能工具和技术的利用能够帮忙决策者更好地了解所收集的信息,从而开发出更好的业务流程。咱们通过提供数据接口与接入内部 BI 来达成这一目标。

8.1 数据接口

咱们通过以下形式提供交互式入口或数据接口,以帮忙用户应用或接入第三方零碎:

  • 图形化界面:基于 Metabase 的开源 BI 零碎
  • JDBC 接口:通过 Spark Thrift Server 或 Presto JDBC Driver 的连贯
  • 命令行接口:通过 Spark SQL CLI 或 Presto CLI 连贯

8.2 数据可视化

Metabase 是一个开源的商业智能工具,你能够向它提出对于数据的问题(数据查问),而获取有意义的格式化后果(图形化视图)。咱们可通过它了解数据、剖析数据,以数据驱动决策。

Metabase 反对诸多数据源及计算引擎接入:

咱们利用官网提供的 Helm 包,能够不便的将 Metabase 部署于 Kubernetes 上。

9 数据基础设施

9.1 TKBS

TKBS(Tencent Kubernetes Bigdata Suite)是咱们依据生产教训开发的云原生大数据套件我的项目,用户可应用 TKBS 一键在 Kubernetes 上部署生产可用的大数据平台。TKBS 以后已反对 Hadoop 次要组件以及支流大数据组件的部署。

TKBS 次要特点如下:

  • 兼容社区:反对原生 Kubernetes
  • 一键部署:采纳 Helm 利用化封装
  • 云原生加强:与腾讯云 TKE、EKS、CBS、CLB、COS 和 CHDFS 等云服务深度整合;反对开源 TKEStack
  • 存算拆散:反对存储计算拆散架构
  • 主动扩缩容:反对主动 HPA 和 CA,节俭经营老本
  • 离在线混部:反对与在线业务混合部署,晋升资源利用率

9.2 TKE / EKS / TKEStack

咱们应用腾讯云 TKE / EKS 或开源 TKEStack 帮忙咱们生产和治理 Kubernetes 集群。

  • TKE:腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为外围的、高度可扩大的高性能容器治理服务
  • EKS:腾讯云弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的毋庸用户购买节点即可部署工作负载的服务模式
  • TKEStack:腾讯云 TKE 团队开源的一款集强健性和易用性于一身的企业级容器编排引擎,以极简的向导式界面提供了容器利用的全生命周期治理能力,帮忙用户在公有云环境中麻利、高效地构建和公布应用程序

10 结尾

云原生的到来不止为大数据部署和交付带来了改革,它更是帮忙大数据连贯了一个生态。利用云原生生态,真正做到了为大数据赋予云的能力,使得大数据能够“成长在云端”。另外,云原生在大数据畛域的利用,也同样帮忙云原生拓展了能力边界,丰盛了落地场景,为将来“Everything native on Cloud”打下夯实根底。

TKBS 已上线腾讯云 TKE 利用市场,下个版本会退出对实时剖析残缺计划与 TKDF 的反对。咱们心愿凭借基于 TKBS 与 TKDF 的大数据实时剖析计划,能够帮忙用户缩短大数据交付过程,简化大数据系统部署与运维复杂度,让用户聚焦在开掘数据价值自身。另一方面,借助云原生架构,咱们心愿能帮忙用户的大数据业务与云产生分割,为用户带来更多的可能性,帮忙用户发明更多的价值。

生于云上,为云而生!

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

正文完
 0