《开源精选》是我们分享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 - ✅ Print - ✅ 环境设置 先决条件 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