BitSail 是字节跳动开源的基于分布式架构、高性能的数据集成引擎。支持多个异构数据源之间的数据同步,提供批量、流式、增量场景下的全局数据集成解决方案。目前服务于字节跳动几乎所有业务线,如抖音、今日头条等,每天同步数百万亿数据。
为什么使用 BitSail
BitSail 已得到广泛应用,支持数百万亿大流量。同时在火山引擎的云原生环境、本地私有云环境等多种场景下进行了验证,并做了多项优化,完善数据集成功能。
-
全球数据集成,涵盖批量、流式、增量场景 -
分布式云原生架构,支持水平扩展 -
在准确性、稳定性和性能方面高度成熟 -
丰富的基础功能,如类型转换、脏数据处理、流控、数据湖集成、自动并行计算等。 -
任务运行状态监控,如流量、QPS、脏数据、延迟等。
使用场景
-
异构数据源海量数据同步 -
流批一体化数据处理能力 -
数据湖与仓库一体化的数据处理能力 -
高性能、高可靠性数据同步 -
分布式、云原生架构数据集成引擎
特点
-
低启动成本和高灵活性 -
流批一体化和数据湖仓一体化架构,一个框架覆盖几乎所有数据同步场景 -
高性能、海量数据处理能力 -
DDL 自动同步 -
类型系统,不同数据源类型之间的转换 -
引擎独立读写接口,开发成本低 -
实时显示任务进度,正在开发中 -
实时监控任务状态
架构
数据处理流程如下。首先通过 Input Sources 拉取源数据,然后通过中间框架层进行处理,最后通过 Output Sinks 将数据写入目标
在框架层,提供了丰富的功能,并对所有同步场景生效,例如脏数据收集、自动并行计算、任务监控等。
数据同步场景涵盖批量、流式、增量数据同步
Runtime 层支持多种执行模式,如 yarn、local、k8s 正在开发中
环境设置
先决条件
Bitsail 支持在本地 IDE 上运行集成测试。为此,需要:
-
JDK1.8 -
maven3.6+ -
Docker 正确安装上述所需组件后,我们就可以在本地 IDE 上运行集成测试。
从源代码构建
-
运行构建脚本以嵌入 flink 进行打包。bash build.sh 如果有自己的集群提供的 flink 包,你也可以不打包。mvn clean package -pl bitsail-dist -am -Dmaven.test.skip=true
构建项目后,输出 jar 文件位于文件夹中 bitsail-dist/target/。
项目生产文件结构如下:
bitsail-archive-${version}-SNAPSHOT
/bin
/bitsail #Startup script
/conf
/bitsail.conf #bitsail system config
/embedded
/flink #embedded flink
/examples #examples configuration files
/example-datas #examples data
/Fake_xx_Example.json #Fake source to xx examples config files
/xx_Print_Example.json #xx to print sink examples config files
/libs #jar libs
/bitsail-core.jar #entering jar package
/connectors #connector plugin jars
/mapping #connector plugin config files
/components #components jars,such as metric、dirty-collector
/clients #bitsail client jar
部署指南
目前 BitSail 仅支持本地和 Yarn 上部署。其他平台的部署(例如原生 kubernetes)将在不久后支持。
配置 Hadoop
为了支持 Yarn 部署,需要在环境变量中配置 HADOOP_CLASSPATH。目前有两种方式设置:
-
直接手动设置 HADOOP_CLASSPATH。 -
设置环境变量 HADOOP_HOME。此环境变量指向环境中使用的 hadoop 目录。根据此环境变量,bitsail 脚本可生成 HADOOP_CLASSPATH。
if [ -n "$HADOOP_HOME" ]; then
export HADOOP_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath)
fi
提交到 Yarn
BitSail 目前仅支持 flink 的 yarn-per-job 模式提交。
可以使用 bin/bitsail 脚本将 flink 作业提交到 yarn 上。具体的执行指令如下:
bash ./bin/bitsail run --engine flink --conf [job_conf_path] --execution-mode run --queue [queue_name] --deployment-mode yarn-per-job [--priority [
上面中括号内的参数说明如下:
-
必需参数: queue_name:
要提交的 yarn 队列job_conf_path:
作业的配置文件 -
可选参数: yarn_priority:
作业在队列上的优先级name=value: flink
运行属性,以 “-D name=value” 方式添加在 flink run 命令后name:
要添加的属性名value:
要添加的属性值例如 classloader.resolve-order=child-first
提交一个示例作业
可以使用如下指令提交一个 Fake2Print 测试作业到 default 队列。
bash ./bin/bitsail run --engine flink --conf ~/bitsail-archive-0.1.0-SNAPSHOT/examples/Fake_Proint_Example.json --execution-mode run -p 1=1 --deplo
本地提交
假设 BitSail 的安装路径为: ${BITSAIL_HOME}。打包 BitSail 后,我们可以在如下路径中找到可运行 jar 包以及示例作业配置文件:
cd ${BITSAIL_HOME}/bitsail-dist/target/bitsail-dist-0.1.0-SNAPSHOT-bin/bitsail-archive-0.1.0-SNAPSHOT/
传送门
开源协议:Apache-2.0 license
开源地址:https://github.com/bytedance/bitsail
项目合集:https://github.com/OpenTechCol/OpenTechCol

-END-
原文始发于微信公众号(开源技术专栏):BitSail 分布式架构的高性能数据集成引擎
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/155235.html