Apache 软件基金会的官方全球系列大会 CommunityOverCode Asia(原 ApacheCon Asia)首次中国线下峰会将于 2023 年 8 月 18-20 日在北京丽亭华苑酒店举办,大会含 17 个论坛方向、上百个前沿议题。
字节跳动开源经历「使用开源、参与开源、主动开源」的不同阶段,对于开源的态度一直是开放的、鼓励的。在此次 CommunityOverCode Asia 峰会中,字节的 15 位同学将围绕 6 个专题下的 10 个议题,分享 Apache 开源项目在字节跳动业务中的实践经验,还有 Apache Calcite PMC Member 在主题演讲环节分享参与开源贡献的经验与收获,期待与现场参会者一起交流。
主题演讲:开源贡献难吗?
也许很多同学都有想过参与一些开源贡献,来提升自己的技术能力和影响力。但是理想跟现实之间通常有一些距离:因为工作太忙,没有时间参与;开源项目门槛太高,不知道怎么入门;尝试过一些贡献,但是社区响应度不高,没有坚持下去。本次 keynote,李本超会结合自己的经历,分享他在贡献开源社区过程中的一些小故事和思考,如何克服这些困难,最终在开源社区取得突破,并且在工作和开源贡献之间取得平衡。
李本超 ,字节跳动 Flink SQL 技术负责人
Apache Calcite PMC Member,Apache Flink Committer,毕业于北京大学,目前就职于字节跳动流式计算团队,Flink SQL 技术负责人。
专题:数据湖与数据仓库
基于 Flink 构建实时数据湖的实践
实时数据湖是现代数据架构的核心组成部分,它允许企业实时分析和查询大量数据。在这场分享中,我们将首先介绍实时数据湖目前存在的痛点,比如数据的高时效性,多样性,一致性和准确性等。然后介绍我们如何基于 Flink 和 Iceberg 构建实时数据湖,主要通过如下两部分展开:如何将数据实时入湖、如何使用 Flink 进行 OLAP 临时查询。最后介绍一下字节跳动在实时数据湖中的一些实践收益。
王正 ,火山引擎云原生计算研发工程师
于 2021 年加入字节跳动,就职于基础架构开放平台团队,主要负责 Serverless Flink 等方向研发。
闵中元 ,火山引擎云原生计算研发工程师
于 2021 年加入字节跳动,就职于基础架构开放平台团队,主要负责 Serverless Flink,Flink OLAP 等方向研发。
字节跳动基于 Parquet 格式的降本增效实践
字节跳动离线数仓默认使用 Parquet 格式进行数据存储,但是在业务使用过程中我们遇到了小文件过多,数据存储成本高等相关问题。针对小文件过多问题,现有技术方案一般是通过 Spark 读取多个 Parquet 小文件后,再将这些数据重新输出并合并到一个或多个大文件。对于存储成本过大问题目前离线数仓只有分区级的行级 TTL 方案,如果需要删除分区中不再使用且占比较大的明细字段数据(列级 TTL),则需要通过 Spark 将数据读取出来并将需要删除的字段置为 NULL 的覆写方式来完成。无论是小文件合并,列级 TTL,都存在对 Parquet 数据文件的大量覆写操作。由于 Parquet 格式有特殊的编码规则,需要经过特殊的(反)序列化、(解)压缩、(反)编码等一系列操作,才能实现对 Parquet 中数据的读写。在这一过程中,编解码、解压缩之类的操作是 CPU 密集型计算,会消耗大量计算资源。
为了提高 Parquet 格式文件覆写效率,我们深入研究了 Parquet 文件格式定义,采用了二进制 copy 的方法优化数据覆写操作,跳过了普通覆写中编解码之类的多余操作,相比于传统方法大幅提高了文件覆写效率,性能是普通覆写方式的 10+ 倍。为了提高易用性,我们同时提供了新的 SQL 语法来支持用户方便的完成小文件合并、列级 TTL 等操作。
徐庆 ,火山引擎 LAS 高级研发工程师
多年从事于 Hive Metastore,SparkSQL,Hudi 等大数据相关组件的研发工作。
王恩策 ,火山引擎 LAS 高级研发工程师
负责字节跳动大数据分布式计算引擎的设计与研发,帮助公司在海量数据中挖掘出高价值信息。
专题:人工智能 / 机器学习
字节跳动深度学习批流一体训练实践
随着公司业务发展,算法复杂度不断提升,越来越多的算法模型在离线更新的基础上探索实时训练以提升模型效果。为实现复杂的离线和实时训练灵活编排、自由切换,能在更大范围内调度在离线计算资源,机器学习模型训练逐渐趋于批流一体化. 本次将分享包括字节跳动机器学习训练调度框架的架构演进、批流一体实践、异构弹性训练等部分内容。并着重介绍在 MFTC(批流一体协同训练)场景下,多阶段多数据源混合编排、流式样本全局 Shuffle、全链路 Native 化,训练数据洞察等实践经验。
毛洪玥 ,字节跳动基础架构工程师
于 2022 年加入字节跳动,从事机器学习训练研发工作,主要负责大规模云原生批流一体 AI 模型训练引擎,支撑了包括抖音视频推荐、头条推荐、穿山甲广告、千川图文广告等业务。
字节跳动 Spark 支持万卡模型推理实践
随着公司业务发展,算法复杂度不断提升,越来越多的算法模型在离线更新的基础上探索实时训练以提升模型效果。为实现复杂的离线和实时训练灵活编排、自由切换,能在更大范围内调度在离线计算资源,机器学习模型训练逐渐趋于批流一体化. 本次将分享包括字节跳动机器学习训练调度框架的架构演进、批流一体实践、异构弹性训练等部分内容。并着重介绍在 MFTC(批流一体协同训练)场景下,多阶段多数据源混合编排、流式样本全局 Shuffle、全链路 Native 化,训练数据洞察等实践经验。
刘畅 ,字节跳动基础架构工程师
于 2020 年加入字节跳动,就职于基础架构批式计算团队,主要负责 Spark 云原生方向工作,Spark On Kubernetes 等方向研发。
张永强 ,字节跳动机器学习系统工程师
于 2022 年加入字节跳动,就职于 AML 机器学习系统团队,参与构建大规模机器学习平台。
专题:数据存储与计算
字节跳动 MapReduce -> Spark 平滑迁移实践
随着业务发展,字节跳动内部每天线上约运行 120 万 个 Spark 作业,与之相对比的是,线上每天依然约有两万到三万个 MapReduce 任务。作为一个历史悠久的批处理框架,从大数据研发的角度来看,MapReduce 引擎的运维面临了一系列问题。例如,框架更新迭代的的 ROI 较低,对于新的计算调度框架适配性较差等等。而从用户的角度来看, MapReduce 引擎的使用也存在一系列的问题。例如,计算性能不佳,需要额外的 Pipeline 工具管理串行运行的 Job,希望迁移 Spark 但是存量作业数量多且大量作业使用了 Spark 本身不支持的各种脚本。
在此背景下,字节跳动 Batch 团队设计并实现了一套 MapReduce 任务平滑迁移 Spark 的方案,该方案使用户仅需对存量作业增加少量的参数或环境变量即可完成从 MapReduce 到 Spark 的平缓迁移,大大降低了迁移成本,并且取得了不错的成本收益。
魏中佳 ,字节跳动基础架构工程师
2018 年加入字节跳动,现任字节跳动基础架构大数据开发工程师,专注大数据分布式计算领域,主要负责 Spark 内核开发、字节自研 Shuffle Service 开发。
字节跳动千亿文件 HDFS 集群实践
随着大数据技术的深入发展,数据规模和使用复杂度越来越高,Apache HDFS 面临着新的挑战。在字节跳动,HDFS 即是传统 Hadoop 数仓业务的存储,也是存算分离架构计算引擎的底座,还是机器学习模型训练的存储底座。在字节跳动,HDFS 既搭建了服务于大规模计算资源调度跨多地区的存储调度能力提升计算任务稳定性;也提供了统合用户侧缓存、常规三副本、冷存的数据识别和冷热调度能力。
本次分享介绍字节跳动内部如何认识新兴场景对传统大数据存储的新要求,并通过技术演进和运维体系建设,支持不同场景下的系统稳定。
熊睦 ,火山引擎大数据存储研发工程师
主要负责大数据存储 HDFS 元数据服务演进和上层计算生态支持。
专题:OLAP & Data Analysis
基于 Apache Calcite 的多引擎指标管理最佳实践
数据分析中有着各种各样的指标,在维护海量指标的时候,常常有如下的痛点:
- 重复片段无法得到复用
- 不同引擎需要编写不同的 SQL
- 口径变更难以同步到所有下游
为了解决这些问题,字节跳动尝试过用已有的技术能力设计方案:
- 将指标尽可能地存储到 Hive 表中:会极大增大存储成本和回溯成本,不太可行
- 将指标封装到 View 中:不仅会在 Hive 产生额外的表信息导致表数量翻倍,而且对分区的支持不友好。查询使用体验较差,因此难以推广
因为目前已有的技术不足以解决上述问题,所以字节跳动基于 Apache Calcite 设计并实现了两套新的语法能力:
- 虚拟列:列级别的视图,复用表列权限,推广简单
- SQL Define Function:使用 SQL 直接定义函数,方便 SQL 片段的复用
这两项能力结合,可以有效降低指标管理的成本例如:
- 指标仅需修改一次,无须下游再同步修改
- MAP、JSON 等集合类型中的字段可以定义成虚拟列,逻辑更加清晰、使用更加方便
具体典型案例和实现原理将会在演讲 PPT 中进行介绍。
谢佳君 ,火山引擎 LAS 高级研发工程师
曾参与 2022 年 Apache Asia Con 的演讲。热爱开源,经常参与社区工作,现在是 Apache Calcite active committer 和 Linkedin Coral Contributor。
大数据行列混合权限精细化管理实践
背景: 近年来,数据安全问题逐步受到各国政府和企业的重视,随着国家数据安全法、个人信息保护法的相继颁布和实施,对于数据最小够用原则也提出了明确的要求。 因此,如何更细粒度管控权限也变成了每个企业都必须解决的问题。
当前问题: 业界通常基于规则对 SQL 中的权限点进行提取,将这些权限点横向按照行维度,或者纵向按照列维度进行管控。
这种单一维度的权限管控粒度过粗,无法支持多条权限间的组合关系。在字节跳动这种多业务线统一存储的中台大宽表场景下,难以满足对数据的细粒度权限管控需求。
解决方案: 基于上述问题,字节跳动基于 Apache Calcite 及自研权限服务 Gemini 设计了一套行列混合权限的精细化管理方案。
- 基于 Calcite 血缘的精准权限点提取
- 基于血缘能力,精准定位 SQL 中真正使用到的权限点信息(表,行,列等),进行精细化权限提取。
- 行列混合权限多维度权限管控
- 在传统的库权限,表权限,列权限之上,新增加了一种行限制权限,行权限可以作为一种特殊的资源附属在表权限 / 列权限上面。
- 每一个表权限 / 列权限可以同时捆绑多个行权限资源,不同表权限 / 列权限的行限制相互独立。
- 通过横向 / 纵向权限点的捆绑组合,将查询资源定位到行列重叠的'资源单元格'上,达到更细粒度的资源级别权限
方案优势: 在新的方案下,通过精准的细粒度权限点提取,以及多维度的行列混合权限支持,将资源管控由横向的某一行,或者纵向的某一列,细化到行列重叠的'资源单元格'上。 进一步细化了权限管控范围,在保证用户正常使用的前提下,最小粒度的授予所需权限。 具体典型案例和实现原理将会在演讲 PPT 中进行介绍。
朱江 ,火山引擎 LAS 高级研发工程师
专题五:云原生
字节跳动云原生 YARN 实践
字节跳动内部离线业务具有庞大的规模,线上每天有数十万节点、数百万任务运行,每天使用的资源量达千万量级,内部由离线调度系统和在线调度系统分别负责离线业务和在线业务的调度管理。但随着业务规模发展,这一套系统暴露了一些短板:在离线属于两套系统,一些重大活动场景需要通过运维方式进行在离线资源转换,运维负担繁重,转换周期长;资源池不统一使得整体资源利用率不高,配额管控、机器运维等无法复用;大数据作业无法享受到云原生的各种好处,例如:可靠稳定的隔离能力、便捷的运维能力等。在离线系统亟待统一,而传统大数据引擎不是针对云原生设计难以直接云原生部署,各计算引擎和任务需要进行深度改造才能支持原先在 YARN 上的各种特性,改造成本巨大。
基于此背景,字节跳动提出基于云原生的 YARN 解决方案 —— Serverless YARN,其 100% 兼容 Hadoop YARN 协议, Hadoop 生态下的大数据作业无需修改即可透明迁移到云原生系统上,在线资源和离线资源间可以高效灵活转换、分时复用,集群整体资源利用率得到显著提升。
邵凯阳 ,火山引擎云原生计算研发工程师
在字节跳动基础架构负责离线调度相关工作,具有多年工程架构经验。
专题六:消息系统
没有 Zookeeper 的 Kafka
目前,Kafka 依赖 ZooKeeper 来存储它的元数据,例如:broker 信息,topic,partition……等等。KRaft 是没有 Zookeeper 的新一代 Kafka。本讲座将包括:
- 为什么 Kafka 需要开发新的 KRaft 特性
- 旧的(有 Zookeeper)Kafka 和新的(没有 Zookeeper)Kafka 的架构
- 采用 Kafka 的好处
- 它是如何在内部运作的
- 监控指标
- 帮助解决 Kafka 问题的工具
- 一个演示来展示我们目前所取得的成就
- Kafka 社区走向 KRaft 的路线图
在这次演讲之后,观众可以更好地了解 KRaft 是什么,它是如何工作的,以及它与基于 Zookeeper 的 Kafka 区别是什么,最重要的是,如何监控它并对其进行故障排除。
Luke Chen ,RedHat,高级软件工程师,致力于在云上运行 Apache Kafka 产品。Apache Kafka Committer 和 PMC 成员,为 Apache Kafka 贡献了 3 年多的时间。
邓子明 ,字节跳动大数据研发工程师,Apache Kafka Committer
展位互动 等你来玩
字节跳动开源将于会议现场设置互动展位,现场将展示字节跳动的开源项目,与参会者互动交流。 现场不仅有丰富的社区周边,还有各种互动环节,欢迎参会的小伙伴来打卡~
关注「 字节跳动开源 」公众号,现场还有惊喜环节!
会 议完整日程:https://apachecon.com/acasia2023/zh/tracks.html
点击 ⬇️ 阅读原文查看详细日程