更多技能沟通、求职机会,欢迎重视字节跳动数据渠道微信大众号,回复【1】进入官方沟通群

本文收拾自火山引擎开发者社区技能大讲堂第四期讲演,首要介绍了数据湖仓开源趋势、火山引擎 EMR 的架构及特色,以及怎么依据火山引擎 EMR 构建企业级数据湖仓。

数据湖 仓开源趋势

趋势一:数据架构向 LakeHouse 方向开展

LakeHouse是什么?简言之,LakeHouse是在 DataLake 基础上融合了 Data Warehouse 特性的一种数据计划,它既保留了 DataLake 分析结构化、半结构化、非结构化数据,支撑多种场景的才能,一起也引进了 Data Warehouse 支撑事务和数据质量的特色。LakeHouse 界说了一种叫咱们称之为 Table Format 的存储规范。Table format 有四个典型的特征:

  • 支撑 ACID 和历史快照,确保数据并发拜访安全,一起历史快照功用方便流、AI 等场景需求。
  • 满意多引擎拜访:能够对接 Spark 等 ETL 的场景,一起能够支撑 Presto 和 channel 等交互式的场景,还要支撑流 Flink 的拜访才能。
  • 敞开存储:数据不局限于某种存储底层,支撑包含从本地、HDFS 到云方针存储等多种底层。
  • Table 格局:实质上是依据存储的、 Table 的数据+元数据界说。

详细来说,这种数据格局有三个完结:Delta LakeIcebergHudi。三种格局的起点略有不同,可是场景需求里都包含了事务支撑和流式支撑。在详细完结中,三种格局也采用了类似做法,即在数据湖的存储之上界说一个元数据,并跟数据一样保存在存储介质上面。这三者类似的需求以及类似的架构,导致了他们在演化过程中变得越来越类似。

能够看到,三种数据格局都基本能掩盖绝大部分特性。

如何快速构建企业级数据湖仓?

下表给出了三种格局在生态方面的支撑状况(截止2022/8/18):

如何快速构建企业级数据湖仓?

终究考虑的问题点:Table Format 是不是一个终极武器?咱们认为答案是否定的。首要有几方面的原因:

  • 运用体会离预期有距离:由于 Table Format 设计上的原因,流式写入的功率不高,写入越频频小文件问题就越严重;
  • 有必定保护本钱:运用 Table Format 的用户需求自己保护,会给用户形成必定的负担;
  • 与现有生态之间存在gap:开源社区暂不支撑和 Table format 之间的表同步,自己做同步又会引进一致性的问题;
  • 对事务招引不行:由于以上三点原因,Table Format 对事务的招引力大打折扣。

怎么去解这些问题呢?现在业界已经有依据 Table Format 运用的经验、事例或许商业公司,比方 Data Bricks、依据 Iceberg 的 Tabluar以及依据 Hudi 的 OneHouse 公司。

经过这些公司的商业产品,底层组件、运维和优化都交由商业产品处理,有效减轻负担。并且商业公司还有才能供给上层的 ETL 管道等产品,使得用户能够更简单从原有架构迁移。因而,LakeHouse 并不等于 Table Format,而是等于 Table Format 加上一些上层建筑。这些上层建筑由商业公司供给,但除此之外也期望能来来自社区。

趋势二:核算向精细化内存办理和高效履行方向开展

数据湖的实质是起 task ,然后做核算。当引擎逐渐完善之后,关于功用需求逐渐上升,不可避免地要朝精细化的内存办理以及高效履行方向开展。目前,社区呈现了两个趋势:Native 化和向量化(Vectorized)

第一,Native 化。

Native 化有两个典型的代表。

  • Spark:去年官宣的 Photon 项目,声称在 tpcs 测验集上到达 2X 加快作用。
  • Presto: Velox native 引擎。Velox 引擎现在不太老练,可是依据 Presto 社区官方说法,能够完结原来 1/3 的本钱。由此可猜想,等价状况下能获得 3X 功用提高。

除了以上两者,近几年热门的 ClickHouse 和 Doris 也是 Native 化的体现。

第二,向量化。

Codegen 和向量化都是从数据仓库,而不是 Hadoop 体系的产品中衍生出来。

Codegen 是 Hyper 提出的技能,而向量化则是 MonetDB 提出的,所以核算引擎的精细化也是沿着数仓开辟的路子在走。Spark 等 Hadoop 体系均走了 Codegen 的路途,由于 Java 做 Codegen 比做向量化要更简单一些。

但现在,向量化是一个更好的挑选,由于向量化能够一次处理一批数据,而不只是一条数据。其优点是能够充分利用 CPU 的特性,如 SIMD,Pipeline 履行等。

趋势三:多模核算,即组件鸿沟逐渐模糊,向全领域才能扩展

Spark ,最早为批处理引擎,后补了 Streaming 和 AI 的才能;Trino 为 OLAP 引擎,现在也在大力开展批式核算;Flink 为流引擎,后补了批式核算和 AI 才能;Doris 则在加强 multi-catalog……

各家引擎都在拓宽用户场景。这种多模核算发生的成果是,关于各个领域内不同不大的场景,技能会逐渐收敛到一个最优解,终究只要一两个引擎获得成功。不同比较大的场景,则在每个场景构成一两个寡头,寡头跨场景的才能则竞争力很弱。

趋势四:分析实时化

大数据最早是批式核算的形式,但抱负状况是纯流式方法。分析实时化的体现有(近)实时引擎和流引擎。

  • (近)实时引擎

    • ClickHouse:近实时 OLAP 引擎,宽表查询功用优异
    • Doris:近实时全场景 OLAP 引擎
    • Druid:牺牲明细查询,将 OLAP 实时化,毫秒级回来
  • 流引擎

    • Flink:流核算逐渐扩大市场份额
    • Kafka SQL:依据 Kafka 完结实时化分析
    • Streaming Database:Materialize 和 RisingWave 在开发的一种产品形态,作用类似于 Data Bricks 的 Data Live Table

企业构建 数据湖 仓的应战

企业在构建数据湖仓时面临的应战分为以下 5 个方面:

  • 全体数据链路复杂:即使是开发一个小的 APP,要建立整个数据链路也很复杂,比方数据回流需求写数据库;日志要回流,要依据回流数据做方针核算,回流数据还需求转储以及 CDC;依据转储数据还要做 ETL 分析。
  • 湖仓需求多样:假如存在机器学习需求,即要完结特征工程等一系列过程,这些过程也催生了数据湖仓的多种需求,包含支撑批式、流失核算和交互式数据科学等各种场景。
  • 湖仓数据来源广泛:包含事务买卖数据、事务资产数据、用户行为数据、上下游发生的中心数据等。
  • 数据开发中参加人物许多:包含办理者、一线事务人员、事务开发、基础设施参加人员等等。
  • 企业往往需求依据渠道进行二次开发:基础设施无法直接对接事务,依据事务特色灵活定制渠道,处理计划渠道化、产品化等。

由此衍生出一系列问题,包含稳定性、扩展性、功用、功用、本钱、运维、安全、生态这 8 个方面。企业假如要单方面处理这些问题,哪怕是其间一个,或许也要花费巨大的人力物力。

火山引擎 EMR 即是这样一个渠道。下一部分将首要介绍,火山引擎 EMR 怎么协助用户处理这些应战以及怎么依据EMR 构建企业级数据湖仓。

依据 火山引擎EMR构建企业级 数据湖

火山引擎EMR

一句话总结,火山引擎 EMR 是开源大数据渠道 E-MapReduce,供给企业级的 Hadoop、Spark、Flink、Hive、Presto、Kafka、ClickHouse、Hudi、Iceberg 等大数据生态组件,100% 开源兼容,支撑构建实时数据湖、数据仓库、湖仓一体等数据渠道架构,能协助用户轻松完结企业大数据渠道的建设,下降运维门槛,快速构成大数据分析才能。火山引擎 EMR 有以下 4 个特色:

  • 开源兼容&敞开环境:100% 兼容社区主流版别,满意运用开发需求;一起供给半保管的白盒环境,支撑引导操作与集群脚本才能。
  • 引擎企业级优化:引进了 Spark、Flink 等中心引擎的企业级特性优化及安全办理。
  • Stateless 云原生 湖仓:把状况外置做成存算别离的架构。
  • 云上便捷运维:供给一站式云保管运维的才能与组件,让用户能够分钟级地创立和毁掉集群,一起供给精细化的集群运维监控告警才能。

Stateless、瞬态集群

如何快速构建企业级数据湖仓?

Stateless 是指把一切有状况的数据外置,让用户的核算集群变成无状况的集群。这些有状况的组件包含:History Server、表的元数据、渠道的元数据、审计日志、中心数据等。彻底外置的 Stateless 集群能够到达极致的弹性弹性状况。状况外置有两个重要的组件,Hive Metastore 和 各个 Public History Server。

Hive Metastore Service: 中心化 元数据 保管服务

如何快速构建企业级数据湖仓?

Hive Metastore 定位为公共服务,用户能够挑选独占或共享 Metastore 实例。假如用户期望节约本钱,或许为公司用户,那么两个部分之间能够运用一个 Hive Metastore service;而关于一些要求比较高的部分,能够独自建一个 Metastore Service 的实例。

耐久化的 History Server 服务

如何快速构建企业级数据湖仓?

YARN、Spark、Flink、Presto 等几种 History Server 都从引擎中被剥离出来,构成 Public History Server 服务。该服务有几个特色:

  • 独立于集群之外运转的常驻服务;
  • 供给耐久化的 History 数据存储。当该集群毁掉之后,历史数据还可保存 60 天;
  • 供给原生 History Server UI,用户不会感觉陌生;
  • 租户间 History 数据隔离;
  • 更友爱的运用体会:相关于组件内置 History Server, 独立服务需求绑定公网并敞开 8443 端口才能拜访,Public History Server 真正做到了开箱即用,无需其它额外配置。一起集成 IAM SSO 准入认证,通常状况下用户从 EMR 管控端跳转到 Public History Server 能够完结无感 SSO 认证登录,无需再次输入用户登录凭据。

存算别离,弹性弹性

如何快速构建企业级数据湖仓?

火山引擎 EMR 具有 CloudFS 和 TOS 两个数据存储层,冷数据能够存储在方针存储 TOS 上。CloudFS 则构建在 TOS 层之上,供给兼容 HDFS 语义存储,供给缓存加快功用,能够把温数据放在 CloudFS 。在引擎内部内置一些本地缓存,用于缓存热数据。分层缓存能够弥补企业上云之后,数据因保存在方针存储所形成的功用丢失。另外 Cloud FS 供给 HDFS 的语义,可便于开源组件切入。

云保管 ,易运维

在管控层面,火山引擎 EMR 供给了许多东西,便于办理员办理整个集群,包含集群办理、服务办理、节点办理、日志中心、配置中心、用户权限、弹性弹性等,用户能够到火山引擎上建一个最小标准集群体会。

用户友爱

在用户侧,火山引擎 EMR 供给了作业办理界面,供给全局视角检查集群资源耗费、异常状况等。一起该界面供给一键检查作业概况,作业确诊等功用,包含不限于异常探测、运转资源耗费、优化主张等。未来,期望能够依据作业供给优化主张,比方参数调整等。

构建企业级 数据湖 仓的最佳实践

接下来咱们经过几个事例来看看依据火山引擎EMR构建的企业级数据湖仓最佳实践。

事例 1:多元化分析渠道

多元化分析指兼具离线分析场景与交互式分析的场景,以及高功用场景,以便支撑运用层直接运用数据集市中的数据。以某互联网企业渠道部分距离,用户期望依据事务数据构建分析渠道,支撑多种分析负载,包含可视化大屏、报表系统、自助分析以及开发分析运用等。

要建立这种多元化分析渠道,用户能够经过 DataLeap 进行数据开发,让数据经过离线方法或实时同步的方法流入数据库仓。然后,依据 Spark/Hive/Presto/Trino 进行批式数据分析和交互式分析。关于流式处理,能够把数据转储到 Cloud FS 和 TOS,依据流式做出一个核算成果,上传到 Clickhouse 和 Doris 来满意一些高功用分析的场景。

如何快速构建企业级数据湖仓?

事例 2:高功用实时 数仓

某头部直播事务的实时数仓 到达100+W/s 数据入仓速度,且支撑横向扩展。经过流式核算引擎核算后,明细数据进入 Doris 集群 ODS 层,数据聚合核算后进入 DWS 层,数据方针经核算后存入 ADS 层,且数据支撑在线更新。由 Doris 对数据运用层供给服务,支撑在线、离线查询分析,支撑几十万级 QPS。

该事务数据量比较大,一起对数据分析的时间性要求高,希望事务人员能经过实时检查事务方针的改变快速做出反响,到达精准营销的作用。

该计划是经过 Flink 把数据直接流入 Doris,即原始数据直接到 Doris 的 ODS 层。由于Doris 本身功用能够供给时延很短的查询体会,因而依据Doris 完结 ODS > DWD > DWS > ADS 的转化。

如何快速构建企业级数据湖仓?

事例 3:实时核算

对功用要求高的场景,目前引荐运用实时核算方法,让数据省掉中心各层。在 Flink 里完结核算,成果直接写入 RDS/ Redis。以某车联网公司为例,实时收集运营的 500 辆新能源轿车行驶和电池数据进行实时分析和告警,每 5 分钟收集一次,日增量在 10GB,数据经过音讯队列 Kafka 或 Pulsar 会聚到大数据渠道,运用 Flink 流核算引擎进行毫秒级实时方针核算,核算成果存储到 RDS 中供渠道进行实时数据展示。

如何快速构建企业级数据湖仓?

事例 4:在线机器学习

在在线机器学习场景下,数据经过离线的方法存到数据湖仓。离线数据能够经过 Spark 进行特征抽取及特征工程,并把提取出来的特征返存到湖仓或许 HBase 等键值存储。

依据离线的数据能够进行离线练习,如经过 Spark MLlib 建立传统的机型学习模型,或许经过 TensorFlow 进行深度模型的练习,把深度练习出来的模型部署到模型服务中。在在线方面,数据经过 Kafka 流入 Flink 进行在线特征抽取,然后把在线特征放在 Redis。一起在线部分的增量数据可用 TensorFlow 进行增量练习,把增量模型也导入模型服务里。模型服务依据原来批式练习出来的模型和增量模型做成实时的 AI 服务,可满意实时风控等对时间要求比较高的场景。

如何快速构建企业级数据湖仓?

火山引擎 ****EMR 湖仓方向未来规划

终究与咱们共享火山引擎 EMR 在湖仓方向未来的规划。

  • 数据加快:期望进一步加快数据分析。企业上云之后,痛点之一为数据放到方针存储之后功用是否会下降。要处理该问题,首要在数据缓存(包含文件级 Cache 和 Page 级 Cache)和索引方面(包含 Bitmap、Bloom Filter)做一些作业。

  • 处理刚需痛点场景:分析 CDC 数据和多路径,处理数据湖仓分裂的问题。关于后者,能够尝试:

    • Doris 直接加快拜访 HMS 中的 Hive/Iceberg/Hudi 表,完结湖仓互通。
    • 持续优化依据 Iceberg 数据湖计划,使得功用接近仓的体会。
  • 拥抱开源:希望将作业合入到开源社区,包含 Data Block Alluxio 的功用和功用优化;Doris MultiCatalog、元数据服务化、冷热别离优化;Iceberg 二级索引等。

  • AI4Data(数据智能管家) :咱们长时间规划是成为一个智能数据管家,详细包含:

    • 主动确诊高频低性价比 SQL 及作业;
    • 主动优化用户 SQL 及作业,智能地从数据散布、Cache、Index、物化视图等维度来优化用户账单;
    • 智能运维:
    • 集群负载过高时,主动扩容;负载下降时,主动缩短。
    • 集群节点故障时,做到用户彻底无感知地 Failover。
    • 主动地完结数据均衡散布。
  • 产品打磨:在产品侧,第一方针是打磨产品,先把产品底座做坚实,并在管控方面(包含创立集群体会优化、弹性弹性优化等)、作业开发与办理方面与周边生态方面做进一步打磨。

活动引荐

12月20日19:00,《 火山引擎 VeDI 数据 中台 架构分析与计划共享》

本期直播共享将聚集字节跳动数据 中台 建设经验, 在存算别离、湖仓一体、ServerLess等技能开展趋势下,从企业数仓架构挑选、数据湖处理计划与运用实践,以及一站式数据管理等角度,为企业构建本身数据中台供给思路和启示。

戳链接,当即进群、观看直播、赢取好礼: 11dr.cn/d/5xvloe9D7

当即跳转E-MapReduce了解概况!