本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍如何安装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工具。 - x64(spark3) - wget https://enterprise-doris-releases.oss-cn-beijing.aliyuncs.com/x2doris/v1.1.0/selectdb-x2doris-v1.1.0_2.12-x86-bin.tar.gz
- arms64(spark3) - wget https://enterprise-doris-releases.oss-cn-beijing.aliyuncs.com/x2doris/v1.1.0/selectdb-x2doris-v1.1.0_2.12-arm64-bin.tar.gz
 - 更多版本下载,请参见X2Doris工具。 
- 解压安装包 - x64(spark3) - tar -zxvf selectdb-x2doris-v1.1.0_2.12-x86-bin.tar.gz
- arms64(spark3) - tar -zxvf selectdb-x2doris-v1.1.0_2.12-arm64-bin.tar.gz
 
- 初始化元数据。 - 初始化X2Doris元数据的数据库,主要有内置的h2数据库和自建的MySQL两种模式。推荐您使用自建的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安装目录下的 - 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,密码是- admin。
 
- 系统设置。 - 在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工具。 - x64(spark3) - wget https://enterprise-doris-releases.oss-cn-beijing.aliyuncs.com/x2doris/v1.1.0/selectdb-x2doris-v1.1.0_2.12-x86-bin.tar.gz
- arms64(spark3) - wget https://enterprise-doris-releases.oss-cn-beijing.aliyuncs.com/x2doris/v1.1.0/selectdb-x2doris-v1.1.0_2.12-arm64-bin.tar.gz
 - 更多版本下载,请参见X2Doris工具。 
- 解压安装包 - x64(spark3) - tar -zxvf selectdb-x2doris-v1.1.0_2.12-x86-bin.tar.gz
- arms64(spark3) - tar -zxvf selectdb-x2doris-v1.1.0_2.12-arm64-bin.tar.gz
 
- 初始化元数据。 - 初始化X2Doris元数据的数据库,主要有内置的h2数据库和自建的MySQL两种模式。推荐您使用自建的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安装目录下的 - 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,密码是- admin。
 
- 系统设置。 - 在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部署的服务器通讯是否正常。