百川终入海 ,一站式海量数据迁移工具 X2Doris 正式发布

在大数据分析领域,Apache Doris 作为广受认可的开源实时数据仓库,已经在越来越多行业用户的真实业务场景中得到广泛应用,成为许多企业数据分析基础设施的重要基座。尤其在过去一年多的时间里,越来越多企业选择基于 Apache Doris 进行升级,将过去基于 Hadoop 体系的离线数据仓库进行实时化改造,或者基于 Apache Doris 统一 OLAP 技术栈。

在这一过程中,如何将海量历史数据进行高效迁移成为用户的痛点所在。基于这一目标,我们启动了名为“百川入海”的专项开发任务,开发了一站式海量数据迁移工具 X2Doris,集自动建表和数据迁移于一体、提供了对 Apache Hive、ClickHouse、Apache Kudu 以及 StarRocks 等多个数据源的支持,全程界面化、可视化操作,仅通过鼠标操作即可完成大规模数据同步至 Doris 中,并提供了极速和稳定的迁移体验。在经过数个月的公开测试和近百家企业的打磨后,今天我们很高兴地宣布, X2Doris 正式发布、面向所有社区用户免费下载使用,数据迁移至 Apache Doris 从未变得如此简单。

  • 官网地址:https://www.selectdb.com/tools/x2doris

  • 文档地址:https://docs.selectdb.com/docs/ecosystem/x2doris/x2doris-deployment-guide

  • 交流学习:https://www.selectdb.com/blog/160

X2Doris 核心特性

多源支持

定位于一站式数据迁移工具, X2Doris 目前已支持了 Apache Hive、Apache Kudu、ClickHouse、StarRocks 以及 Apache Doris 自身作为数据源端,Greenplum、Druid 等更多数据源正在开发中,后续将陆续发布。其中 Hive 版本已支持 Hive 1.x 和 2.x 版本,Doris、StarRocks、Kudu 等数据源也同时支持了多个不同版本。

而目标端已支持 Apache Doris 和 SelectDB,包含 SelectDB Cloud 和 SelectDB Enterprise。基于 X2Doris 用户可以构建从其他 OLAP 系统到 Apache Doris 的整库迁移链路,并可以实现不同 Doris 集群间的数据备份和恢复。

2-X2Doris 核心特性.png

自动建表

在项目立项之初,我们深入调研和分析了用户对于数据迁移的痛点以及业内同类数据集成工具,其中首当其冲的便是如何将待迁移的源表在 Apache Doris 中创建对应的目标表,在实际业务场景中,存储在 Hive 或 ClickHouse 中动辄上千张表,让用户手动创建目标表并转换对应的 DDL 语句效率显得过于低下,不具备实际操作可能性。

X2Doris 特为此场景做了适配,在此以 Hive 表迁移为例。在迁移 Hive 表的时候,X2Doris 会在 Apache Doris 中自动创建 Duplicate Key 模型表(也可手动修改)并读取 Hive 表的元数据信息,通过字段名和字段类型自动识别分区字段,如果识别到分区则会提示进行分区映射,最后会直接生成对应的 Doris 目标表 DDL。

3-X2Doris 核心特性2.png

在上游数据源为 Doris/StarRocks 时,X2Doris 会自动根据源表信息解析出表模型,自动根据源表字段类型映射对应的目标字段类型,针对上游的 Properties 参数也会识别处理,转换成对应目标表的属性参数。除此以外,X2Doris 还对复杂类型进行了增强,实现了对 Array、Map、Bitmap 类型的数据迁移。

4-X2Doris 核心特性3.png

极速稳定

在数据写入方面,X2Doris 特别针对读取数据进行了优化。通过优化数据攒批逻辑进一步减小了内存的使用,同时对 Stream Load 写入请求进行了大量改进和增强,对内存使用和释放进行优化,进一步提升数据迁移的速度和稳定性。

在单机 1G 内存情况下,我们对 DataX 和 X2Doris 进行了对比测试,5000w 条采取 DataX 进行全量数据同步,耗时约为 90s,而 X2Doris 仅需 50s 不到、性能提升接近 100%。而对比其他同类型的迁移工具,X2Doris 性能约比同类工具快 2-10 倍。

在此我们以国内某头部行业公司 POC 效果为例,在大规模日志数据迁移场景中,单条数据 1kb 大小、单表数据接近 1 亿条、总存储空间约 90 G,基于 X2Doris 仅需 2 分钟即可完成全表迁移,平均写入速度近 800 MB/s

X2Doris 安装使用

X2Doris 非常简单易用,解包启动即可,可在分钟内迅速使用起来。在部署 X2Doris 之前,需要确保机器可以连接要迁移的数据源和目标端,主要操作如下:

选择安装包

X2Doris 底层采用 Spark 实现,推荐部署到有 Yarn 的大数据环境中,可以充分利用大数据集群的能力,提高数据迁移的效率和速度,如果没有大数据环境也可以采取单机部署即可,下载与 Scala 版本对应的 X2Doris 安装包即可(没有 Spark 环境可以直接选择安装 Scala 2.12 的 X2Doris 版本)

初始化元数据

1. 将系统的数据库类型改成 mysql

进入到 conf 下,修改 application.ymlspring.profiles.action 改成 mysql,注意默认的 h2 是内存数据库,系统重启会导致数据丢失。

2. 修改conf/application-mysql.yml文件,指定 MySQL 的连接信息

5- X2Doris 安装使用.png

3. 执行脚本

进入到 script 下有两个目录,分别是 schemadata

  • 先执行 schema 下的 mysql-schema.sql 完成表结构的初始化
  • 再执行 data 下的 mysql-data.sql 完成元数据初始化

进入到 bin 目录下,执行 startup.sh

6-X2Doris 安装使用 2.png

完成启动后即可登录到 X2Doris 中,访问地址: http://$host:9091 用户户名密码: admin/selectdb

7 - X2Doris 安装使用 3.png

Hive 数据迁移实践

在此我们以 Hive 迁移至 Doris 中作为示例,介绍 X2Doris 的完整使用流程。

前置要求

  1. 部署 X2Doris 的机器必须可以连接 Hadoop 集群,是 Hadoop 集群的一个节点或至少有 Hadoop Gateway 环境。(可以在该机器上执行 Hadoop/Hive 命令,能正常连接访问 Hadoop/Hive 集群)
  2. 部署 X2Doris 的机器必须配置了 Hadoop 环境变量,必须配置 HADOOP_HOME,HADOOP_CONF_DIRHIVE_CONF_DIR,如:
export HADOOP_HOME=/opt/hadoop #hadoop 安装目录
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HIVE_HOME=$HADOOP_HOME/../hive
export HIVE_CONF_DIR=$HADOOP_HOME/conf
export HBASE_HOME=$HADOOP_HOME/../hbase
export HADOOP_HDFS_HOME=$HADOOP_HOME/../hadoop-hdfs
export HADOOP_MAPRED_HOME=$HADOOP_HOME/../hadoop-mapreduce
export HADOOP_YARN_HOME=$HADOOP_HOME/../hadoop-yarn

注意: 在 HADOOP_CONF_DIRHIVE_CONF_DIR 下 必须要有 hive-site.xml

系统设置

Hive 需要设置以下信息,该部分参数都为必须要设置的参数, 具体如下:

  1. Hadoop user: 该作业会访问 Hive 数据,该 Hadoop User 即为操作 Hive 表的 Hadoop 用户(日常 Hive 作业的操作用户即可);
  2. Spark Home: 指定部署机安装的 Spark 路径;
  3. Hive metastore Uri : Hive 的 Metastore uri,可以去 $HADOOP_CONF_DIR 下查找 hive-site.xml 的配置获取;
  4. 目标 Doris/SelectDB : 要写入数据的目标端 Doris(SelectDB)信息

8 - X2Doris 安装使用4.png

创建同步作业

系统设置完成之后,就可以进入到 作业中心 了,这里可以点击 添加 来创建一个作业:
9 - X2Doris 安装使用 5.png

在添加的时候会自动检测 Hive 环境的连接情况,如果 Hive 连接失败会告警:
10-X2Doris 安装使用 6.png

那么此时就需要检查: “系统设置” 里的 Hive metastore uris 和当前部署机的通讯是否正常,这一步必须要确保通过才可以进行后续的迁移工作,如果连接正常就可以直接进行新增作业。

1. 字段类型映射

如果与 Hive 连接正常,就会自动把 Hive 数仓中所有的库和表都罗列出来。此时就可以点击左侧的树形目录,选择目标表进行操作,选中一个表之后,右侧会自动罗列出该表与 Doris 字段映射关系,可以很轻松地映射目标 Doris 表的字段类型,根据提示进行操作即可完成字段的映射。其中DUPLICATE KEYDISTRIBUTED KEY 是 Doris Duplicate Key 模型中必须要指定的参数,按需进行指定即可。

11-X2Doris 安装使用 7.png

注意

  1. 自动生成的 Doris DDL 建表语句为 Duplicate 模型, 可以根据实际情况手动修改;
  2. STRING 类型不能设置为 DUPLICATE KEY, 需要将 STRING 类型改成 VARCHAR 类型即可;

2. 分区映射

如果 Hive 原表中的分区字段类型是 STRING ,则可以根据数据实际类型判断是否需要将对应的 Doris 表的字段类型转成时间类型。如果转成时间类型的话,则需要设置分区的区间。

12 -X2Doris 安装使用 8.png

3. 创建 Doris 表

完成前两步即可进入到 Doris 表 DDL 的确认阶段,在该阶段已经自动生成了对应的 Doris 建表 DDL 语句,你可以进行 Review 确认并手动修改 DDL。

13 - X2Doris 安装使用 9.png

确认无误后,可以点击创建 Doris 表。

注意: 要确保对应 Doris 的库存在,库需要用户手动创建

14 - X2Doris 安装使用 10.png

15 X2Doris 安装使用 11.png

4. 作业设置

在点击创建作业之后会弹出一个任务配置的界面,用户需要在这个界面配置任务迁移所需要的参数,具体示例如下:

16 X2Doris 安装使用 .png

具体参数解释如下(重要参数已经加粗):

  • Hive DB:自动生成,数据源的数据库名称
  • Hive Table:自动生成,数据源的要迁移的表的名称
  • App Name:自动生成,数据迁移任务的名称
  • App Tag:自动生成,数据迁移任务的 Tag
  • Master: 需要选择是 Local 模式还是 Yarn 模式,这里是指的 X2Doris 任务运行的方式,这个根据实际情况调整。
  • DeployMode: 这里需要选择 Client 还是 Cluster,根据实际情况调整。
  • Yarn Queue: Spark 任务运行所使用的队列资源
  • Memory Options: 这里需要选择 Spark 任务的一些内存参数,如 Executor 和 Driver 的 Core 的数量和内存大小,这个根据实际情况进行调整。
  • Write Batch: 数据刷写时的批次大小,这个可以根据实际数据量调整大小,如果迁移的数据量比较大,建议该值夜调整为 500000 以上
  • Max retry:任务失败的重试次数,如果网络情况不理想,可以适当增大此参数
  • Spark option: Spark 的自定义参数,如果需要增加 Spark 任务的其他参数,可以在这里添加,以key=value的形式增加即可。
  • Properties: 数据迁移时,如果有针对数据源读取或者 Doris 数据写入的一些优化参数,可以在这里编写,具体的参数描述可以看对应的 Spark Connector 的官方文档

在上一步创建完数据迁移任务后,用户就可以在任务详情界面看到刚创建的数据迁移任务,如下图所示:

17 X2Doris 安装使用.png

至此从 Hive 到 Doris 的数据迁移任务已经配置完成,可以根据作业状态判断完成与否。

用户使用反馈

自 X2Doris 公开测试以来,已在近百家企业生产环境中应用,并收获广泛的好评。以下是来自部分企业的真实使用反馈:

X2Doris 在 BIGO 中主要用于离线同步 Hive 数据到 Doris 集群,并结合 Doris 打造高效的数据分析平台,日均同步量达 10TB。对比其他数据同步工具,在稳定性、易用性以及性能上 X2Doris 都有明显优势,希望 X2Doris 未来能支持更多数据同步场景,帮助业务数据快速落地。

—— BIGO 高级开发工程师 关老师

X2Doris 在杭银消金落地,打通了我司 Hive 到 Doris 的链路,为更多上游数据同步到 Doris 提供了快捷便利的工具。希望 X2Doris 的功能越来越丰富,可以一站式的解决其他数据源到 Doris 的同步,真正提供一站式数据平台的使用体验!

—— 杭银消金大数据架构师 周老师

X2Doris 在某金融企业实施,为我司从 StarRocks 迁移到 Doris 以及从 Hive 同步 Doris 提供了极大的便利。通过配置化的方式实现了 Hive 中近百张大表 TB 级别离线数据、StarRocks 中单表百 GB 数据的迁移同步工作,在提升了、数据迁移工作效率的同时降低了工作复杂度,是数据同步 Doris 的不二选择。最后希望 X2Ddoris 能接入更多上游数据源,真正完整实现百川归海。

—— 某金融企业大数据架构师 王老师

在迁移开源 Apache Doris 到 SelectDB Cloud 的过程中,10T+的存量历史数据和几百张数据表的迁移,成为我们必须面对的难题。幸运的是,SelectDB 团队推荐的内测版 X2Doris 给我们带来了惊喜。这款工具部署简单,上手较快,无运维烦恼,且页面简洁,开箱即用。同时支持多数据源和可视化用户界面,极大提升数据迁移的效率。在迁移过程中,SelectDB 技术团队均能对所反馈的问题积极响应和解答。我们相信,X2Doris 正式版本将是一款真正解决用户痛点的数据迁移的好产品。

——正浩大数据架构师 陈鹏

总结语

作为一个强大而易用的数据迁移工具,X2Doris 的发布将为广大用户提供更便捷、高效的数据迁移解决方案。无论是小规模的数据迁移还是大规模的数据同步,X2Doris 都能提供极速和稳定的迁移体验。我们将继续改进和优化 X2Doris,扩展支持更多的数据源,以满足不断扩大的用户需求。如果在使用过程中遇到任何问题或需要支持和帮助,请随时联系我们的团队。

交流学习:https://www.selectdb.com/blog/160

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node.js(nest.js控制器)学习笔记

nest.js控制器: 控制器负责处理传入请求并向客户端返回响应。 为了创建基本控制器,我们使用类和装饰器。装饰器将类与所需的元数据相关联,并使 Nest 能够创建路由映射(将请求绑定到相应的控制器)。 1.获取get请求传参…

牛客——中位数图(连续子数组和二维前缀和)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。 输入描述: 第一行为两个正…

CentOS gui 图形界面显示文字乱码

一、现象 CentOS(CentOS 7.5)控制台下显示中文乱码: 或者通过X11 Forwarding远程显示CentOS的图形化程序文字乱码: 二、解决方法 安装中文语言包: yum install kde-l10n-Chinese 注:网上有些文章会推荐安…

Linux文本三剑客---grep经典案例

grep(从文本或字符串种过滤特定内容。) 格式:Usage: grep [OPTION]... PATTERNS [FILE]... 常用选项: -E 等价于 egrep 扩展正则 -i 忽略大小写 -w 匹配单词 -o 仅显示匹配内容 -r 递归匹配 -c 统计匹配的行数 -v 取反 -n 行号 -A…

如何采集京东的商品-简数采集器

如何使用简数采集器批量采集京东的商品及相关描述呢? 简数采集器目前不支持采集京东的商品及相关信息,且不建议采集,请换个采集源采集。 简数采集器采集网页文章特别简单方便,不需要懂代码写采集规则的,只需输入要采…

【解刊】审稿人极其友好!中科院2区SCI,3个月录用,论文质量要求宽松!

计算机类 • 高分快刊 今天带来Springer旗下计算机领域高分快刊,有投稿经验作者表示期刊审稿人非常友好,具体情况一起来看看下文解析。如有投稿意向可重点关注: 01 期刊简介 Complex & Intelligent Systems ✅出版社:Sprin…

上岸秘籍来啦!TOGAF认证考试全攻略

上岸秘籍来啦!手把手教你如何顺利通过TOGAF认证考试! 🌟考试内容 TOGAF 9.2认证分为两个级别: ✅ TOGAF基础级:掌握标准术语、结构和基本概念,理解企业架构和核心标准。 ✅ TOGAF鉴定级:深入分析…

【知识点】设计模式

创建型 单例模式 Singleton:确保一个类只有一个实例,并提供该实例的全局访问点 使用一个私有构造方法、一个私有静态变量以及一个公有静态方法来实现。私有构造方法确保了不能通过构造方法来创建对象实例,只能通过公有静态方法返回唯一的私…

qt学习:Table widget控件

目录 头文件 实战 重新配置ui界面 添加头文件 在构造函数中添加初始化 显示方法 该实例是在sqlite项目上添加qt学习&#xff1a;QTSQL连接sqlite数据库增删改查-CSDN博客 头文件 #include <QTableWidgetItem> 实战 重新配置ui界面 用法介绍&#xff0c;可以双击…

UE5/UE4中3D汉字字体文字的创建与实现

本案例工程下载位置&#xff1a;https://mbd.pub/o/bread/ZZqVmJ9v 在虚幻引擎5&#xff08;UE5&#xff09;和虚幻引擎4&#xff08;UE4&#xff09;中&#xff0c;实现3D汉字字体的创建是一项常见的需求。 本文将详细介绍两种有效的方法&#xff1a; 1.通过TextRender配合Of…

《区块链简易速速上手小册》第9章:区块链的法律与监管(2024 最新版)

文章目录 9.1 法律框架和挑战9.1.1 基础知识9.1.2 主要案例&#xff1a;加密货币的监管9.1.3 拓展案例 1&#xff1a;跨国数据隐私和合规性9.1.4 拓展案例 2&#xff1a;智能合约的法律挑战 9.2 区块链的合规性问题9.2.1 基础知识9.2.2 主要案例&#xff1a;加密货币交易所的合…

DevOps落地笔记-03|用户故事:对用户需求达成共识的关键

上一讲主要跟你介绍了如何使用影响地图这个工具来进行产品定义、里程碑规划和用户需求分析。影响地图让我们始终以达到目标为核心&#xff0c;并让功能和需求不偏离该目标&#xff0c;从而让交付更有重点。可视化、结构化的思维导图为技术和业务人员创建了共享的整体视图&#…

769933-15-5,Biotin aniline,可以合成多种有机化合物和聚合物

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;769933-15-5&#xff0c;Biotin aniline&#xff0c;生物素苯胺&#xff0c;生物素-苯胺 一、基本信息 产品简介&#xff1a;Biotin Aniline&#xff0c;一种具有重要生物学功能的化合物&#xff0c;不仅参与了维生…

Docker多节点部署Minio分布式文件系统并测试

文章目录 一、前提准备二、文件配置1. .env2. env/minio.env3. docker-compose-minio.yml 三、测试四、Java测试1. 引入依赖2. 增删改 一、前提准备 准备如下文件夹和文件 ./ ├── docker-compose-minio.yml ├── .env ├── env │ ├── minio.env ├── minio │…

C#网络爬虫之TianyaCrawler实战经验分享

互联网时代的到来带来了大量的数据&#xff0c;而网络爬虫技术成为了获取这些数据的重要途径之一。如果你是一名C#开发者&#xff0c;那么你可能会对TianyaCrawler这个强大的网络爬虫框架感兴趣。本文将带你深入了解TianyaCrawler&#xff0c;分享它的技术概况、使用场景&#…

显示企业信息的SSL证书

随着互联网的发展&#xff0c;以及《网络安全法》、《数据安全法》、《个人信息保护法》等法律法规的出台&#xff0c;越来越多的企业意识到保护用户信息的重要性&#xff0c;尤其是对于涉及商业交易和个人数据的网站。为了保护网站安全和用户隐私&#xff0c;给网站部署SSL证书…

02-opencv简单实例效果和基本介绍-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素…

从零开始复现GPT2(四):训练代码的实现

源码地址&#xff1a;https://gitee.com/guojialiang2023/gpt2 GPT2 模型Configuration类定义 Recorder训练框架Trainer训练代码GPT2TrainingSpec 类train_gpt2_model 函数add_subparser 函数 模型 Configuration 这段代码定义了一个名为 TrainConfig 的 Python 类&#xff0c…

【Java程序设计】【C00205】基于(JavaWeb+SSM)的商场停车服务管理系统(论文+PPT)

基于&#xff08;JavaWebSSM&#xff09;的商场停车服务管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的商场停车服务管理系统 本系统分为管理员和用户2个功能模块。 管理员&#xff1a;管理员进入主页面&…

Codeforces Round 922 (Div. 2)补题

Brick Wall&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;规定砖的大小为1*k&#xff08;k>2&#xff09;,现在有一面n*m的砖墙&#xff0c;n是墙高&#xff0c;m是墙宽&#xff0c;砖在砖墙中有两种放法&#xff0c;水平放置和竖直放置&#xff…