天天看点

字节跳动出手即巅峰,分布式架构的高性能数据集成引擎

作者:GitHub精选
《开源精选》是我们分享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。目前有两种方式设置:

  1. 直接手动设置 HADOOP_CLASSPATH。
  2. 设置环境变量 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

继续阅读