本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍使用X2Doris同步数据至云数据库 SelectDB 版。
概述
X2Doris是将各种离线数据迁移至云数据库 SelectDB 版的核心工具,该工具集自动建表
和数据迁移
为一体,目前已支持Doris、Hive、Kudu、StarRocks、ClickHouse数据库迁移至云数据库 SelectDB 版。整个过程通过可视化平台进行操作,简单易用,可大幅降低数据同步到云数据库 SelectDB 版的门槛。
安装部署
1. 安装要求
准备部署X2Doris的机器必须确保有效的网络策略:需要确保网络与数据源、云数据库 SelectDB 版均可连通。
2. 选择安装包
X2Doris底层采用Spark实现,推荐部署到有Hadoop、Yarn的大数据网络环境中,这样可以充分利用大数据的集群能力,能大大提高数据迁移的效率和速度。如果没有大数据环境也可以的,单机部署即可 (X2Doris包含内置的Spark。如果没有Hadoop环境就不要安装伪分布式的Hadoop集群环境了)。X2Doris工具下载链接。
2.1 如果有Spark环境
进入Spark安装目录的jars目录下,查看Spark依赖包对应的Scala版本,如下:可以看到 spark-yarn_2.12-3.2.4.jar, 这里的2.12即为Scala的版本。
然后下载与Scala版本对应的X2Doris安装包即可,X2Doris安装包的文件名有Scala的版本,如:selectdb-x2Doris_2.12-1.0.0-bin.tar.gz就是Scala 2.12对应的版本。
2.2 如果没有Spark环境
直接选择Scala2.12对应的X2Doris安装包即可。
3. 解压安装包
tar -zxvf selectdb-x2doris-1.0.3_2.12-bin.tar.gz
4. 初始化元数据
初始化X2Doris程序元数据的数据库,主要有两种选择:h2和mysql。默认的h2是内存数据库,系统重启后会导致X2Doris元数据丢失。如果希望持久化元数据,可以选择mysql作为保存元数据的数据库。
4.1 安装MySQL客户端
4.2 将系统的数据库类型改成MySQL
进入conf
目录下,修改application.yml
将spring.profiles.active
改成mysql
。
4.3 修改conf/application-mysql.yml
文件,指定MySQL的连接信息
4.3 执行脚本
进入到script
目录下:有两个目录,分别是schema
和data
。
先执行
schema
下的mysql-schema.sql
完成表结构的初始化。登录MySQL客户端
mysql -h host -u user -p password
执行
source mysql-schema.sql
再执行
data
下的mysql-data.sql
完成元数据初始化。登录MySQL客户端
mysql -h host -u user -p password
执行
source mysql-data.sql
注意:默认使用h2数据库,重启后X2Doris元数据会被清空!
启动使用
启动
前置工作都准备就绪了,进入到bin
目录下,执行startup.sh
。
登录平台
默认访问地址:http://$host:9091
,可以在 application.yml 里面修改端口号。 默认用户名密码:admin
/selectdb
,登录后可在主界面操作修改。
创建作业任务
系统设置
在正式使用平台之前,要做的第一件事就是进入设置中心
设置系统参数,该部分参数都为必须要设置的参数,具体如下:
Hadoop user:指定提交作业到yarn上的用户(无Hadoop环境跳过)。
Spark Home:如果您有大数据集群,且安装了Spark,则指定下您集群的Spark Home。
Hive metastore uris:如果Hive数据迁移至云数据库 SelectDB 版,需要知道hvie的metastore uri (非hive数据源跳过)。
Target doris info:要写入数据的云数据库 SelectDB 版目标表的连接信息。
点击Target doris info
按钮会有弹窗,直接输入相关信息即可,如下:
参数说明:
参数 | 说明 |
HTTP Nodes | 请填写HTTP协议访问地址 您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。 示例: 说明 当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,使用公网地址。 |
MySQL Nodes | 请填写JDBC连接串 您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和MySQL协议端口。 示例: 说明 当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,使用公网地址。 |
User | 请填写云数据库 SelectDB 版实例的用户名。 |
Password | 请填写云数据库 SelectDB 版实例对应用户的密码。 |
Doris to SelectDB
在作业中心点击“新增作业” 选择Doris Source,此时会弹窗,让选择数据源。
如果之前没有添加数据源,则需要先添加数据源。
1. 添加数据源
点击左侧的“数据源”菜单。此时可以看到所有的数据源列表,可以选择新增一个数据源,这里选择新增一个Doris数据源。
此时会弹窗,让输入Doris的连接信息。如:
设置Doris的Http节点、Jdbc节点信息、用户名、密码,然后点击确定
提交。也可以设置多个节点,格式为ip1:port1,ip2:port2,ip3:port3
,多个节点间以逗号分隔。
在此过程中,会自动验证输入的连接信息,如果host、用户名和密码都正确,则会创建成功,页面会自动跳转到“数据源”页面,可以看到刚刚添加的数据源,如:
2. 创建同步作业
添加 “数据源” 之后,返回到 “作业中心“ 页面,可以重新点击“新增作业”,选择Doris Source, 此时会弹窗让选择数据源,点击使用即可:
此时会跳转到如下页面:页面左侧会将Doris中的数据库和表以树形结构呈现出来。
选择要迁移的表,您可以选择一张表,也可以选择多张,或者整库,如果选择单张表:此时会看到DDL语句已经自动生成, 您可以确认这些DDL语句。
只有选择单表才会看到DDL语句,如果选择多表则使用默认生成策略生成的DDL。
确认无误后,您可以根据实际需求,进行建表,或者创建作业,这里的操作有:
跳过建表:用于要迁移的表在云数据库 SelectDB 版目标端已经存在,则可以跳过建表。
只建表:用于只创建表,不创建迁移作业。
创建表&作业:用于同时创建表和迁移作业。
3. 作业设置
在点击创建作业之后会弹出一个任务配置的界面,用户需要在这个界面配置任务迁移所需要的参数,具体示例如下:
参数解释如下:
参数 | 说明 |
App Name | 自动生成,数据迁移任务的名称。 |
App Tag | 自动生成,数据迁移任务的Tag。 |
Master | 需要选择是local模式还是yarn模式,这里是指的X2Doris的任务运行的方式,这个根据实际情况调整。 |
Yarn Queue | Spark任务运行所使用的队列资源。 |
Memory Options | 这里需要选择Spark任务的一些内存参数,如executor和driver的core的数量和内存大小,这个根据实际情况进行调整。 |
Write Batch | 数据刷写时的批次大小,这个可以根据实际数据量调整大小,如果迁移的数据量比较大,建议该值调整为500000以上。 |
Max retry | 任务失败的重试次数,如果网络情况不理想,可以适当增大此参数。 |
Spark option | Spark的自定义参数,如果需要增加Spark任务的其他参数,可以在这里添加,以 |
Properties | 数据迁移时,如果有针对数据源读取或者Doris数据写入的一些优化参数,可以在这里编写,具体的参数描述可以看对应的Spark connector的官方文档。 |
在上一步创建完数据迁移任务后,用户就可以在任务详情界面看到刚创建的数据迁移任务,如下图所示:
Hive to SelectDB
1. 前置条件
部署X2Doris的机器必须可以连接Hadoop集群,是Hadoop的一个节点,或至少有Hadoop gateway环境(可以在该机器上执行Hadoop、Hive命令,能正常连接访问Hadoop、Hive集群)。
部署X2Doris的机器必须配置了Hadoop环境变量,必须配置
HADOOP_HOME
,HADOOP_CONF_DIR
和HIVE_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_DIR
或HIVE_CONF_DIR
下必须要有hive-site.xml
。
2. 配置元数据读取
修改配置文件conf/application-hive.yaml
来设置获取Hive元数据方式,目前支持三种:JDBC
,阿里云 DLF
,Metastore
Metastore
这是默认推荐的读取Hive元数据的方式,如果Hive是标准的Apache Hive,则推荐这种方式,直接将
client
设置为metastore
即可。
JDBC方式
如果因为诸如权限等问题,不能使用
metastore
的方式,则可以尝试使用JDBC的方式,将client设置为JDBC,设置对应的jdbcUrl和用户名、密码,同时可以通过在set后面添加配置来设置链接参数。
阿里云 DLF
如果Hive是阿里云的Hive,则需要设置client为
dlf
,填写阿里云DLF服务有效的ak、sk、认证类型、endpoint、regionId以及catalogId。
在系统设置(System Settings)中配置Metastore的thrift链接地址:
配置好后点击提交(submit)提交配置:
提示更新成功表示可以正常连接。
3. 设置系统信息
Hive需要设置以下信息,该部分参数都为必须要设置的参数, 具体如下:
参数 | 说明 |
Hadoop user | 该作业会访问Hive数据,该Hadoop user即为操作Hive表的Hadoop用户(日常Hive作业的操作用户即可)。 |
Spark Home | 指定部署机安装的Spark的路径。 |
Hive metastore uris | Hive的metastore uri ,可以去$HADOOP_CONF_DIR下查找hive-site.xml的配置获取。 |
Target doris info | 要写入数据的云数据库 SelectDB 版目标表的信息。 |
4. 创建同步作业
系统设置
完成之后,就可以进入到作业中心
了,这里可以点击添加
来创建一个作业:
在添加的时候会自动检测Hive环境的连接情况,如果Hive连接失败,会告警:
那么此时就需要检查:系统设置
里的Hive metastore uris
和当前部署机的通讯是否正常了。这一步必须要确保通过才可以进行后续的迁移工作,如果连接正常就可以直接进行新增作业。
5. 字段类型映射
如果和Hive连接正常,就会自动把Hive数仓中所有的库和表都罗列出来。此时就可以点击左侧的树形目录,选择目标表进行操作,选中一个表之后,右侧会自动罗列出该表与云数据库 SelectDB 版目标表的字段映射关系,可以很轻松的映射目标表的字段类型。根据提示进行操作即可完成字段的映射。DUPLICATE KEY
和DISTRIBUTED KEY
是Doris Duplicate模型中必须要指定的参数,按需进行指定即可。
已经自动识别了Hive表中的分区字段,并且自动强制将分区自动设置为DUPLICATE KEY
字段。
自动生成的Doris DDL建表语句为Duplicate模型, 可以根据实际情况手动修改。
STRING
类型不能设置为DUPLICATE KEY
,需要将STRING
类型改成VARCHAR
类型即可。
6. 分区映射
如果Hive原表中的分区字段类型是STRING
,则可以根据数据实际类型判断是否需要将对应的云数据库 SelectDB 版目标表的字段类型转成时间类型。如果转成时间类型的话,则需要设置分区的区间。
7. 创建表
完成前两步即可进入到Doris表DDL的确认阶段,在该阶段已经自动生成了对应的云数据库 SelectDB 版目标表的建表DDL语句,您可以进行Review确认,手动修改 DDL。
确认无误后,可以点击创建目标表。
要确保对应Doris的库存在,库需要用户手动创建。
8. 作业设置
最后一步作业设置具体参数和Doris to SelectDB操作一致。
启动同步作业
在作业中心可以看到所有创建的作业,如下:
点击操作里的“启动按钮”,会弹窗对应的窗口。如下:
查询条件:该参数是允许在数据迁移的过程中,传入过滤条件,对数据源的数据进行ETL操作。这里在写对应条件的时候,不需要写where关键字,只需要写后边的过滤逻辑即可。
清空数据:这个按钮默认是OFF状态,点击切换到ON状态后,会在每次迁移任务运行前,对目标库的数据进行清除操作,是一个极度危险的操作,生产数据迁移时,慎重操作。
如果没有额外的ETL和清除数据的需求,您只需要点击OK即可运行数据迁移任务。
在运行任务之前,一定要在系统设置里配置SPARK_HOME,否则没有Spark客户端环境,是无法提交Spark任务的。
更新作业迁移进度
启动作业之后,手动点击刷新按钮来查看数据的迁移状态,此时迁移进度会显示出来。如下图:
参数优化指南
在Doris/SR to 云数据库 SelectDB 版的场景中,如果您的Doris和yarn资源比较空闲,则可以进一步优化速度,可以在properties
设置如下参数:
doris.request.tablet.size=1 #如果数据源是 doris
starrocks.request.tablet.size=1 #如果数据源是 starrocks
该参数作用是:一个RDD Partition对应的Doris Tablet个数。此数值设置越小,则会生成越多的Partition。从而提升Spark侧的并行度,但同时会对Doris造成更大的压力。
任务失败如何定位
当数据迁移任务失败后,优先排查安装X2Doris程序的运行日志,对应目录在X2Doris安装目录下的log目录,可以查看selectdb.out
来观察和定位程序运行情况。
如果在查看上述日志没有解决问题的话,请携带日志以及该迁移任务运行的上下文背景,寻求SelectDB官方人员的帮助。
测试截图
源Doris
X2Doris配置
X2Doris作业执行过程
SelectDB同步结果