大数据处理技术现今已普遍应用于各个行业,为业务解决海量存储和海量分析的需求。但数据量的爆发式增加,对数据处理能力提出了更大的挑战,同时对时效性也提出了更高的要求。实时分析已成为企业大数据分析中最关键的术语,这意味企业可将全部数据用于大数据实时分析,实如今数据接受同时即刻为企业生成分析报告,从而在第一时间做出市场判断与决策。典型的场景如电商大促和金融风控等,基于延迟数据的分析结果已经失去了价值。另外随着云原生时代的到来,云原生天生具备的高效部署、敏捷迭代、云计算资源成本和弹性扩展等优点,正在加速和缩短业务系统落地过程。云原生一样可助力大数据这一过程。sql
本文主要介绍如何利用 Kubernetes 实现云原生大数据实时分析平台。数据库
在实时分析中,须要持续、快速、实时地接受源源不断的数据与事件,做为整个分析平台的数据来源与入口。这个过程最好是基于流的、高吞吐、可扩展、可对接主流计算引擎。咱们选择 Apache Kafka 做为事件流处理的解决方案。网络
Apache Kafka 是一个分布式流处理平台,被不少公司普遍使用于数据管道、流分析、数据集成,消息中间件等领域。Kafka 适合场景包括:架构
Apache Kafka 可经过容器化部署在 Kubernetes,充分利用 Kubernetes 资源自动部署、自动扩展、一次配置任意运行等能力作到云原生赋能。less
在传统的数据处理流程中,老是先收集数据,而后将数据放到数据库中。当人们须要的时候经过数据库对数据作查询,获得答案或进行相关的处理。这样看起来虽然很是合理,可是结果却很是的紧凑,尤为是在一些实时搜索应用环境中的某些具体问题,相似于 MapReduce 方式的离线处理并不能很好地解决问题。这就引出了一种新的数据计算结构 - 流计算方式。它能够很好地对大规模流动数据在不断变化的运动过程当中实时地进行分析,捕捉到可能有用的信息,并把结果发送到下一计算节点。运维
在云原生下,咱们将流计算引擎容器化和迁移到 Kubernetes 上,利用 Kubernetes 自动化部署、HPA 等能力实现计算资源动态建立、调度与伸缩。云原生赋予了流计算即拿即用资源的能力。分布式
当前主流的流计算引擎都可顺畅的运行在 Kubernetes 之上。工具
Spark 在 2.3 以后,支持将集群建立和托管到 Kubernetes 中,以 native 方式运行。oop
Kubernetes 可帮助 Spark 任务分配和管理计算资源,提供网络和存储,管理任务生命周期,动态的横向扩展能力,以及链接 Kubernetes 生态其余服务的能力。性能
Flink 在 Kubernetes 上支持 standalone 与 native 两种模式。standalone 至关于利用 Kubernetes Deployment、Service、Configmap 等在 Kubernetes 上建立一个完整 Flink 集群。native 方式相似 Spark native,是经过内置于 Flink Client 的 K8s Client 与 Kubernetes 集群交互,负责组件资源的建立和销毁。Flink 新引入的 Application 模式,更是能够在提交 Job 的同时动态建立 Flink 集群。
数据工做流(Data Pipeline)能够理解为一个贯穿数据产品或数据系统的管道,而数据就是管道载体的运输对象。数据工做流链接了数据处理分析的各个环节,将整个庞杂的系统变得井井有理,便于管理和扩展。
咱们根据生产经验,设计和研发了基于云原生的数据工做流方案 TKDF,以帮助用户集中精力从数据中获取所须要的信息,而不是把精力花费在管理平常数据和管理数据库方面。
TKDF 有如下优点:
现今大数据存储和处理需求愈来愈多样化,在后 Hadoop 时代,如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方向。怎样快速、一致、原子性地在数据湖存储上构建起 Data Pipeline,成了亟待解决的问题。而且伴随云原生时代到来,云原生天生具备的自动化部署和交付能力也正催化这一过程。
传统方式下,用户在部署和运维大数据平台时一般采用手动或半自动化方式,这每每消耗大量人力,稳定性也没法保证。Kubernetes 的出现,革新了这一过程。Kubernetes 提供了应用部署和运维标准化能力,用户业务在实施 Kubernetes 化改造后,可运行在其余全部标准 Kubernetes 集群中。在大数据领域,这种能力可帮助用户快速部署和交付大数据平台(大数据组件部署尤其复杂)。尤为在大数据计算存储分离的架构中,Kubernetes 集群提供的 Serverless 能力,可帮助用户即拿即用的运行计算任务。而且再配合离在线混部方案,除了可作到资源统一管控下降复杂度和风险外,集群利用率也会进一步提高,大幅下降成本。
咱们使用 TKBS 在 Kubernetes 上构建 Hadoop 数据湖:
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 主要特性包括:
依赖以上特性,Iceberg 可帮助用户低成本的实现 T+0 级数据湖。咱们使用 Iceberg + HDFS 的方式在 Kubernetes 上构建云原生数据湖。
咱们使用 Kubernetes 负责应用自动化部署与资源管理调度,为上层屏蔽底层环境复杂性。经过 TKBS 一键式部署云原生数据湖。Iceberg + HDFS 实现了基于 Hadoop 生态的实时数据湖,为大数据应用提供数据访问及存储能力。Spark、Flink、Presto 等计算引擎以 native 或 standalone 方式运行于 Kubernetes 集群中,资源可随提交任务即拿即用。与在线业务混部后,更能大幅提高集群资源利用率。
实时分析除了持续实时分析外(Continuous real-time analytics),还包括交互式分析(On-demand real-time analytics)。交互式分析是一种反应式分析方法,用户经过查询获取分析结果(好比输入 SQL 语句)。咱们采用 SQL 语句做为交互式查询语句,支持 Spark SQL 与 Presto 两种 SQL 查询引擎。
Presto 是由 Facebook 开源的分布式 SQL 查询引擎,专门为交互式查询所设计,提供分钟级乃至亚秒级低延时的查询性能。它既可支持非关系数据源,例如 HDFS、Amazon S三、Cassandra、MongoDB 和 HBase,又可支持关系数据源,例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。
Presto 查询引擎是 Master-Slave 架构,由一个 Coordinator节点,一个 Discovery Server 节点,多个 Worker 节点组成。
咱们经过 standalone 方式将 Presto 集群部署在 Kubernetes 上:
Spark SQL 是 Spark 结构化数据的执行模块,可支持使用 SQL 在 Spark 查询分析结构化数据 DataFrames、Datasets。咱们一样支持使用 Spark SQL 做为交互式分析引擎,将执行的 Spark 任务以 native 方式运行在 Kubernetes 上。
咱们正处于大数据和数字化转型的时代,数据无处不在,运用数据驱动的思想和策略在实践中逐渐成为共识。数据的价值已在科学研究和工商业的不一样领域获得充分展示。数据智能工具和技术的应用能够帮助决策者更好地理解所收集的信息,从而开发出更好的业务流程。咱们经过提供数据接口与接入外部 BI 来达成这一目的。
咱们经过如下方式提供交互式入口或数据接口,以帮助用户使用或接入第三方系统:
Metabase 是一个开源的商业智能工具,你能够向它提出关于数据的问题(数据查询),而获取有意义的格式化结果(图形化视图)。咱们可经过它理解数据、分析数据,以数据驱动决策。
Metabase 支持诸多数据源及计算引擎接入:
咱们利用官方提供的 Helm 包,能够方便的将 Metabase 部署于 Kubernetes 上。
TKBS(Tencent Kubernetes Bigdata Suite)是咱们根据生产经验开发的云原生大数据套件项目,用户可以使用 TKBS 一键在 Kubernetes 上部署生产可用的大数据平台。TKBS 当前已支持 Hadoop 主要组件以及主流大数据组件的部署。
TKBS 主要特色以下:
咱们使用腾讯云 TKE / EKS 或开源 TKEStack 帮助咱们生产和管理 Kubernetes 集群。
云原生的到来不止为大数据部署和交付带来了变革,它更是帮助大数据链接了一个生态。利用云原生生态,真正作到了为大数据赋予云的能力,使得大数据能够“生长在云端”。另外,云原生在大数据领域的应用,也一样帮助云原生拓展了能力边界,丰富了落地场景,为将来“Everything native on Cloud”打下夯实基础。
TKBS 已上线腾讯云 TKE 应用市场,下个版本会加入对实时分析完整方案与 TKDF 的支持。咱们但愿凭借基于 TKBS 与 TKDF 的大数据实时分析方案,能够帮助用户缩短大数据交付过程,简化大数据系统部署与运维复杂度,让用户聚焦在挖掘数据价值自己。另外一方面,借助云原生架构,咱们但愿能帮助用户的大数据业务与云发生联系,为用户带来更多的可能性,帮助用户创造更多的价值。
生于云上,为云而生!
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!