《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的BitSail是字节跳动开源的基于分布式架构的高性能数据集成引擎。
BitSail是字节跳动开源的基于分布式架构的高性能数据集成引擎。支持多个异构数据源之间的数据同步,提供批量、流式、增量场景下的全局数据集成解决方案。目前,它服务于字节跳动的几乎所有业务线,如抖音、今日头条等,每天同步数百万亿数据。
为什么我们使用 BitSail
BitSail 已被广泛使用并支持数百万亿的大流量。同时在火山引擎云原生环境、本地私有云环境等多种场景下得到验证。
- 全局数据集成,涵盖批处理、流式和增量场景
- 分布式云原生架构,支持横向扩展
- 在准确性、稳定性和性能方面成熟度高
- 丰富的基础功能,如类型转换、脏数据处理、流量控制、数据湖集成、自动并行计算等。
- 任务运行状态监控,如流量、QPS、脏数据、延迟等。
BitSail 使用场景
- 异构数据源中的海量数据同步
- 流和批集成数据处理能力
- 数据湖与仓库一体化数据处理能力
- 高性能、高可靠的数据同步
- 分布式、云原生架构数据集成引擎
BitSail的特点
- 低启动成本和高灵活性
- 流批一体化和数据湖仓一体化架构,一个框架覆盖几乎所有数据同步场景
- 高性能、海量数据处理能力
- DDL 自动同步
- 类型系统,不同数据源类型之间的转换
- 引擎独立读写接口,开发成本低
- 实时显示任务进度,正在开发中
- 实时监控任务状态
支持的连接
DataSource | Sub Modules | Reader | Writer |
Hive | - | ✅ | ✅ |
Hadoop | - | ✅ | ✅ |
Hbase | - | ✅ | ✅ |
Hudi | - | ✅ | ✅ |
Kafka | - | ✅ | ✅ |
RocketMQ | - | ✅ | |
Redis | - | ✅ | |
Doris | - | ✅ | |
MongoDB | - | ✅ | ✅ |
JDBC | MySQL | ✅ | ✅ |
Oracle | |||
PostgreSQL | |||
SqlServer | |||
Fake | - | ✅ | |
- | ✅ |
环境设置
先决条件
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/
—END—
开源协议:Apache-2.0 license
开源地址:https://github.com/bytedance/bitsail