本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍如何安装X2Doris以及如何使用其导入数据至云数据库 SelectDB 版。
工具介绍
X2Doris是将各种离线数据导入至云数据库 SelectDB 版的重要工具。
工具优势:
自动建表和数据导入为一体。
可视化平台进行操作,简单易用。
支持导入的数据源:Doris、Hive、Kudu、StarRocks和ClickHouse。
导入Hive源数据
安装X2Doris
注意事项
安装X2Doris的服务器必须是Hadoop集群的一个节点,或者是有Hadoop gateway环境(即该服务器上可以执行Hadoop和Hive的命令,能正常访问Hadoop、Hive集群)。
部署X2Doris的机器必须配置了Hadoop环境变量,必须配置
HADOOP_HOME
,HADOOP_CONF_DIR
和HIVE_CONF_DIR
,示例如下:重要在
HADOOP_CONF_DIR
或HIVE_CONF_DIR
下必须要有hive-site.xml
。export HADOOP_HOME=/opt/hadoop #hadoop安装目录 export HADOOP_CONF_DIR=/etc/hadoop/conf #hadoop配置文件目录 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
安装环境
本文以Linux系统为例,安装X2Doris工具。您在实际使用中,请根据您的系统和使用环境选择合适的命令。
操作步骤
选择X2Doris工具版本。
有Spark环境
进入Spark安装目录的jars目录下,查看以spark-yarn开头的jar包,获取Spark依赖包对应的Scala版本。示例如下:
spark-yarn_2.12-3.2.4.jar对应的Scala版本的为2.12。
无Spark环境
直接选择Scala2.12对应的X2Doris安装包即可。
下载X2Doris工具。
X2Doris官网地址:X2Doris工具。
wget https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/x2doris/selectdb-x2doris-1.0.4_2.12-bin.tar.gz
解压安装包
tar -zxvf selectdb-x2doris-1.0.4_2.12-bin.tar.gz
初始化元数据。
初始化X2Doris元数据的数据库,主要有内置的h2内存数据库和自建的MySQL两种模式。
重要h2内存数据库,系统重启后会导致X2Doris元数据丢失。推荐您使用自建的MySQL。
自建MySQL
如果您需要持久化X2Doris元数据,可以选择MySQL作为保存元数据的数据库。
安装MySQL。
sudo yum install mysql
登录MySQL。
mysql -h<IP> -P<port> -u<user_name> -p<password>;
运行脚本。
运行mysql-schema.sql,完成表结构的初始化。
abs_path为X2Doris的安装目录
mysql-schema.sql
的绝对路径。source <abs_path>/mysql-schema.sql;
运行完成后,MySQL实例下会自动创建一个名为
x2doris
的数据库,可通过show databases;
查看。运行
mysql-data.sql
,完成表数据的初始化。abs_path为X2Doris的安装目录
mysql-data.sql
的绝对路径。source <abs_path>/mysql-data.sql;
将X2Doris的数据库类型修改为MySQL。
进入X2Doris的安装目录下的
conf
目录,修改application.yml
将spring.profiles.active
的值修改为mysql
。vim application.yml
指定MySQL的连接信息。
进入X2Doris的安装目录下的
conf
目录,修改application-mysql.yml
文件,配置数据源。vim application-mysql.yml
h2
X2Doris默认的h2是内存数据库。
重要系统重启后会导致X2Doris元数据丢失。
启动X2Doris。
进入X2Doris安装目录下的
bin
目录,执行bash startup.sh
。
导入数据
前提条件
已将源数据的相关IP以及X2Doris部署服务器的IP添加至云数据库 SelectDB 版的白名单,请参见设置白名单。
已开放X2Doris的访问端口。
说明默认端口为9091。具体端口号,请查看X2Doris安装目录下的application.yml的配置。
注意事项
如果您的数据源是Hive数据源,请检查安装X2Doris所在机器的环境。具体环境要求,请参见环境要求。
操作步骤
配置获取Hive元数据的方式。
通过修改X2Doris的配置文件
conf/application-hive.yaml
,设置获取Hive元数据方式。vim application-hive.yaml
参数说明
参数名称
说明
client
获取Hive元数据的方式。
Metastore:默认的读取Hive元数据的方式。如果您的Hive是标准的Apache Hive,建议您将client设置为Metastore。
jdbc:如果因为权限等问题,不能使用
metastore
的方式,建议您尝试使用JDBC的方式,将client设置为jdbc。dlf:如果您的Hive是阿里云的Hive,则需要设置client为
dlf
。
jdbc
如果client配置了jdbc,则必须配置jdbc相关的参数。
jdbcurl:源数据Hive的jdbc连接串。
userName:Hive的用户名。
password:登录密码。
aliyun.dlf
如果client配置了dlf,则必须配置dlf相关的参数。
accesskeyId:阿里云账号AccessKey ID。
accessKeySeceret:阿里云账号密钥AccessKey Secret。
endpoint:dlf对外服务的访问域名。
regionId:dlf数据中心所在的地域。
catalogId:dlf数据目录。
登录X2Doris控制台。
默认访问地址:
http://<IP>:9091
。说明IP为安装X2Doris服务器的IP地址。
9091是X2Doris的默认端口,如果您在application.yml 里修改了端口号,请替换为您设置的端口。
默认用户名是
admin
,密码是selectdb
。
系统设置。
在X2Doris控制台左侧导航栏,单击系统设置,在系统设置面板,进行以下配置操作。
配置Hadoop user:单击Hadoop user右侧的编辑,在输入框中输入Hadoop user,单击提交。
配置Spark Home:单击Spark Home右侧的编辑,在输入框中输入Spark Home,单击提交。
配置Hive metastore uris:单击Hive metastore uris右侧的编辑,在输入框中输入Hive metastore uris,单击提交。
说明要导入的数据源为Hive时,此项必须配置。
可通过
SET hive.metastore.uris;
在Hive的控制台获取此配置项值。
配置Target doris info:单击Target doris info右侧的编辑,在Doris/SelectDB Cloud 目标端信息录入弹出框,配置以下配置项。配置完成后,单击确定。
配置项
说明
HTTP Nodes
HTTP协议访问地址。
格式:
<ip>:<port>
。说明您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。
当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,建议使用公网地址。
示例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
MySQL Nodes
JDBC连接串。
格式:
<ip>:<port>
。说明您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。
当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,建议使用公网地址。
您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和MySQL协议端口。
示例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030
User
云数据库 SelectDB 版实例的用户名。
Password
云数据库 SelectDB 版实例用户的密码。
创建作业。
在左侧导航栏,单击作业中心,进入作业中心页面。
将鼠标悬浮在作业中心数据列表右上方的新增作业,选择目标数据源,进入作业配置页面。
在页面左侧区域,选择目标源数据库。
配置字段映射,单击下一步。
配置项
说明
DORIS 字段类型
默认系统会自动识别Doris与Hive字段类型的对应。
说明默认系统会自动识别。
指定Doris表对应的数据类型,特别是string类型。
DUPLICATE KEY
指明底层数据的排序列。
说明至少有一个字段设置了此项。
DISTRIBUTED BY
指明底层数据的分桶列。
说明至少有一个字段设置了此项。
配置分区映射。
如果Hive原表中的分区字段类型是
STRING
,则可以根据数据实际类型判断是否需要将对应的云数据库 SelectDB 版目标表的字段类型转成时间类型。如需转换,则需要设置分区的区间。配置项
说明
DORIS 字段类型
默认系统会自动识别Doris与Hive字段类型的对应。
说明默认系统会自动识别。
请指定doris表对应的数据类型,特别是string类型。
DUPLICATE KEY
指明底层数据的排序列。
说明至少有一个字段设置了此项。
DISTRIBUTED BY
指明底层数据的分桶列。
说明至少有一个字段设置了此项。
创建表。
如果您在SelectDB上已经创建好了对应的表,单击跳过建表,进入作业设置。
如果您还未在SelectDB上已经创建好了对应的表,单击去建表,确认Doris DDL 建表语句后,单击创建Doris表,单击下一步,进入作业设置。
配置以下作业设置项,单击新建作业。
配置项
说明
作业名称
自动生成,数据导入任务的名称。
作业标签
自动生成,数据导入任务的标签。
Master
需要选择是local模式还是yarn模式,这里是指的X2Doris的任务运行的方式,这个根据实际情况调整。
Yarn 队列
Spark任务运行所使用的队列资源。
资源参数
这里需要选择Spark任务的一些内存参数,如executor和driver的core的数量和内存大小,这个根据实际情况进行调整。
写入批次
数据刷写时的批次大小,这个可以根据实际数据量调整大小,如果导入的数据量比较大,建议该值调整为500000以上。
失败重试
任务失败的重试次数,如果网络情况不理想,可以适当增大此参数。
Spark 参数
Spark的自定义参数,如果需要增加Spark任务的其他参数,可以在这里添加,以
key=value
的形式增加即可。这里可以输入spark的标准参数,具体更多参数请参考Application Properties。
连接配置器
数据导入时,如果有针对数据源读取或者Doris数据写入的一些优化参数,可以在这里编写,具体的参数描述可以看对应的Spark connector的官方文档。
这里可以输入doris spark connector的标准参数,具体更多参数请参考通用配置项。
启动同步作业。
在页面左侧导航栏,单击作业中心。
在作业中心数据列表,找到目标作业,单击操作列的启动按钮。
在启动作业弹窗,配置以下配置项。
配置项说明
配置项
参数说明
示例值
查询条件
根据条件查询要导入的数据。
说明不需要写
WHERE
关键字,只需要写过滤逻辑。name='Alice'
清空数据
是否删除目标数据库的表数据。
警告该操作存在风险,请谨慎操作。
OFF(默认):不删除。
ON:删除。
OFF
单击确定。
查看作业。
在左侧导航栏,单击作业中心,进入作业中心页面。
找到目标作业,可查看作业的迁移进度、执行状态等信息。
导入非Hive源数据
安装X2Doris
安装环境
本文以Linux系统为例,安装X2Doris工具。您在实际使用中,请根据您的系统和使用环境选择合适的命令。
操作步骤
选择X2Doris工具版本。
有Spark环境
进入Spark安装目录的jars目录下,查看以spark-yarn开头的jar包,获取Spark依赖包对应的Scala版本。示例如下:
spark-yarn_2.12-3.2.4.jar对应的Scala版本的为2.12。
无Spark环境
直接选择Scala2.12对应的X2Doris安装包即可。
下载X2Doris工具。
X2Doris官网地址:X2Doris工具。
wget https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/x2doris/selectdb-x2doris-1.0.4_2.12-bin.tar.gz
解压安装包
tar -zxvf selectdb-x2doris-1.0.4_2.12-bin.tar.gz
初始化元数据。
初始化X2Doris元数据的数据库,主要有内置的h2内存数据库和自建的MySQL两种模式。
重要h2内存数据库,系统重启后会导致X2Doris元数据丢失。推荐您使用自建的MySQL。
自建MySQL
如果您需要持久化X2Doris元数据,可以选择MySQL作为保存元数据的数据库。
安装MySQL。
sudo yum install mysql
登录MySQL。
mysql -h<IP> -P<port> -u<user_name> -p<password>;
运行脚本。
运行mysql-schema.sql,完成表结构的初始化。
abs_path为X2Doris的安装目录
mysql-schema.sql
的绝对路径。source <abs_path>/mysql-schema.sql;
运行完成后,MySQL实例下会自动创建一个名为
x2doris
的数据库,可通过show databases;
查看。运行
mysql-data.sql
,完成表数据的初始化。abs_path为X2Doris的安装目录
mysql-data.sql
的绝对路径。source <abs_path>/mysql-data.sql;
将X2Doris的数据库类型修改为MySQL。
进入X2Doris的安装目录下的
conf
目录,修改application.yml
将spring.profiles.active
的值修改为mysql
。vim application.yml
指定MySQL的连接信息。
进入X2Doris的安装目录下的
conf
目录,修改application-mysql.yml
文件,配置数据源。vim application-mysql.yml
h2
X2Doris默认的h2是内存数据库。
重要系统重启后会导致X2Doris元数据丢失。
启动X2Doris。
进入X2Doris安装目录下的
bin
目录,执行bash startup.sh
。
导入数据
前提条件
已将源数据的相关IP以及X2Doris部署服务器的IP添加至云数据库 SelectDB 版的白名单,请参见设置白名单。
已开放X2Doris的访问端口。
说明默认端口为9091。具体端口号,请查看X2Doris安装目录下的application.yml的配置。
操作步骤
登录X2Doris控制台。
默认访问地址:
http://<IP>:9091
。说明IP为安装X2Doris服务器的IP地址。
9091是X2Doris的默认端口,如果您在application.yml 里修改了端口号,请替换为您设置的端口。
默认用户名是
admin
,密码是selectdb
。
系统设置。
在X2Doris控制台左侧导航栏,单击系统设置,在系统设置面板,进行以下配置操作。
(可选)配置Hadoop user:单击Hadoop user右侧的编辑,在输入框中输入Hadoop user,单击提交。
(可选)配置Spark Home:单击Spark Home右侧的编辑,在输入框中输入Spark Home,单击提交。
(可选)配置Hive metastore uris:单击Hive metastore uris右侧的编辑,在输入框中输入Hive metastore uris,单击提交。
配置Target doris info:单击Target doris info右侧的编辑,在Doris/SelectDB Cloud 目标端信息录入弹出框,配置以下配置项。配置完成后,单击确定。
配置项
说明
HTTP Nodes
HTTP协议访问地址。
格式:
<ip>:<port>
。说明您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。
当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,建议使用公网地址。
示例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
MySQL Nodes
JDBC连接串。
格式:
<ip>:<port>
。说明您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。
当部署X2Doris的实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,建议使用公网地址。
您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和MySQL协议端口。
示例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030
User
云数据库 SelectDB 版实例的用户名。
Password
云数据库 SelectDB 版实例用户的密码。
添加数据源。
在左侧导航栏,单击数据源,进入数据源页面。
将鼠标悬浮在数据源数据列表右上方的新增数据源,选择目标数据源。
根据配置面板,完成配置项配置,单击确定。
创建作业。
在左侧导航栏,单击作业中心,进入作业中心页面。
将鼠标悬浮在作业中心数据列表右上方的新增作业,选择目标数据源,进入作业配置页面。
在请选择数据源弹出框,找到目标数据源,单击使用列的。
在页面左侧区域,选择目标源数据。
说明选择一张表,也可以选择多张,或者整库。
选择单表时,页面右侧会出现创建表的DDL语句。
选择多表则使用默认生成策略生成的DDL,右侧不会出现DDL语句。
根据您的需求,单击目标按钮,进入作业设置项。
跳过建表:用于要迁移的表在云数据库 SelectDB 版目标端已经存在,则可以跳过建表。
只建表:用于只创建表,不创建迁移作业。
创建表&作业:用于同时创建表和迁移作业。
配置以下作业设置项,单击新建作业。
配置项
说明
作业名称
数据迁移任务的名称。
说明自动生成,无需手动输入。
作业标签
数据导入任务的标签。
说明自动生成,无需手动输入。
Master
X2Doris任务运行的方式。
说明如果安装X2Doris的服务器上有Hadoop和yarn环境,就配置为集群模式yarn,否则配置为单机模式local。
Yarn 队列
Spark任务运行所使用的队列资源。
资源参数
Spark任务的内存参数。
例如executor和driver的core的数量和内存大小。更多参数,请参见Spark Configuration。
写入批次
数据刷写时的批次大小。
如果导入的数据量比较大,建议该值调整为500000以上。
失败重试
任务失败的重试次数。
如果网络情况不理想,可以适当增大此参数。
Spark 参数
Spark的自定义参数。
说明如果需要增加Spark任务的其他参数,可以在这里以
key=value
的形式进行添加。更多参数,请参见Application Properties。连接配置器
导入数据时,如果有针对数据源读取或者SelectDB数据写入的一些优化参数。例如数据源是Doris时,参数详情,请参见Spark Doris Connector。
启动同步作业。
在页面左侧导航栏,单击作业中心。
在作业中心数据列表,找到目标作业,单击操作列的启动按钮。
在启动作业弹窗,配置以下配置项。
配置项说明
配置项
参数说明
示例值
查询条件
根据条件查询要导入的数据。
说明不需要写
WHERE
关键字,只需要写过滤逻辑。name='Alice'
清空数据
是否删除目标数据库的表数据。
警告该操作存在风险,请谨慎操作。
OFF(默认):不删除。
ON:删除。
OFF
单击确定。
在左侧导航栏,单击作业中心,进入作业中心页面。
找到目标作业,可查看作业的迁移进度、执行状态等信息。
查看作业。
在左侧导航栏,单击作业中心,进入作业中心页面。
找到目标作业,可查看作业的迁移进度、执行状态等信息。
参数优化指南
在源数据是Doris或StarRocks导入云数据库 SelectDB 版的场景中,如果您的Doris和StarRocks资源比较空闲,可以进一步优化读取速度。您可以在创建作业的属性设置设置以下参数:
doris.request.tablet.size=1 #如果数据源是 doris
starrocks.request.tablet.size=1 #如果数据源是 starrocks
该参数的含义是一个RDD Partition对应的Tablet个数。此数值越小,会生成越多的Partition,从而提升了Spark的并行度,但同时会对Doris或StarRocks造成更大的压力。
常见问题
如何定位任务失败原因?
当数据导入任务失败后,优先排查安装X2Doris程序的运行日志,对应目录在X2Doris安装目录下的log目录,可以查看selectdb.out
来观察和定位程序运行情况。
如果在查看上述日志后,仍未解决问题,请准备日志以及该迁移任务运行的上下文背景,通过工单定位问题。
添加Hive数据源失败了怎么办?
在添加Hive数据源时,系统会自动检测Hive环境的连接情况,如果Hive连接失败,会有以下错误提示。
需要检查系统设置里Hive metastore uris
和当前X2Doris部署的服务器通讯是否正常。