​BitSail 分布式架构的高性能数据集成引擎

BitSail 是字节跳动开源的基于分布式架构、高性能的数据集成引擎。支持多个异构数据源之间的数据同步,提供批量、流式、增量场景下的全局数据集成解决方案。目前服务于字节跳动几乎所有业务线,如抖音、今日头条等,每天同步数百万亿数据。

​BitSail 分布式架构的高性能数据集成引擎

为什么使用 BitSail

BitSail 已得到广泛应用,支持数百万亿大流量。同时在火山引擎的云原生环境、本地私有云环境等多种场景下进行了验证,并做了多项优化,完善数据集成功能。

  • 全球数据集成,涵盖批量、流式、增量场景
  • 分布式云原生架构,支持水平扩展
  • 在准确性、稳定性和性能方面高度成熟
  • 丰富的基础功能,如类型转换、脏数据处理、流控、数据湖集成、自动并行计算等。
  • 任务运行状态监控,如流量、QPS、脏数据、延迟等。

使用场景

  • 异构数据源海量数据同步
  • 流批一体化数据处理能力
  • 数据湖与仓库一体化的数据处理能力
  • 高性能、高可靠性数据同步
  • 分布式、云原生架构数据集成引擎

特点

  • 低启动成本和高灵活性
  • 流批一体化和数据湖仓一体化架构,一个框架覆盖几乎所有数据同步场景
  • 高性能、海量数据处理能力
  • DDL 自动同步
  • 类型系统,不同数据源类型之间的转换
  • 引擎独立读写接口,开发成本低
  • 实时显示任务进度,正在开发中
  • 实时监控任务状态

架构

​BitSail 分布式架构的高性能数据集成引擎数据处理流程如下。首先通过 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。目前有两种方式设置:

  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/


传送门

开源协议:Apache-2.0 license

开源地址:https://github.com/bytedance/bitsail

项目合集:https://github.com/OpenTechCol/OpenTechCol

​BitSail 分布式架构的高性能数据集成引擎

-END-


原文始发于微信公众号(开源技术专栏):​BitSail 分布式架构的高性能数据集成引擎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/155235.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!