通过X2Doris导入数据

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何安装X2Doris以及如何使用其导入数据至云数据库 SelectDB 版

工具介绍

X2Doris是将各种离线数据导入至云数据库 SelectDB 版的重要工具。

  • 工具优势:

    • 自动建表和数据导入为一体。

    • 可视化平台进行操作,简单易用。

  • 支持导入的数据源:Doris、Hive、Kudu、StarRocks和ClickHouse。

导入Hive源数据

安装X2Doris

注意事项

  • 安装X2Doris的服务器必须是Hadoop集群的一个节点,或者是有Hadoop gateway环境(即该服务器上可以执行Hadoop和Hive的命令,能正常访问Hadoop、Hive集群)。

  • 部署X2Doris的机器必须配置了Hadoop环境变量,必须配置HADOOP_HOMEHADOOP_CONF_DIRHIVE_CONF_DIR,示例如下:

    重要

    HADOOP_CONF_DIRHIVE_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工具。您在实际使用中,请根据您的系统和使用环境选择合适的命令。

操作步骤

  1. 选择X2Doris工具版本。

    有Spark环境

    进入Spark安装目录的jars目录下,查看以spark-yarn开头的jar包,获取Spark依赖包对应的Scala版本。示例如下:

    spark-yarn_2.12-3.2.4.jar对应的Scala版本的为2.12。

    image

    无Spark环境

    直接选择Scala2.12对应的X2Doris安装包即可。

  2. 下载X2Doris工具。

    X2Doris官网地址:X2Doris工具

    wget https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/x2doris/selectdb-x2doris-1.0.4_2.12-bin.tar.gz
  3. 解压安装包

    tar -zxvf selectdb-x2doris-1.0.4_2.12-bin.tar.gz
  4. 初始化元数据。

    初始化X2Doris元数据的数据库,主要有内置的h2内存数据库和自建的MySQL两种模式。

    重要

    h2内存数据库,系统重启后会导致X2Doris元数据丢失。推荐您使用自建的MySQL。

    自建MySQL

    如果您需要持久化X2Doris元数据,可以选择MySQL作为保存元数据的数据库。

    1. 安装MySQL。

      sudo yum install mysql
    2. 登录MySQL。

      mysql -h<IP> -P<port> -u<user_name> -p<password>;
    3. 运行脚本。

      1. 运行mysql-schema.sql,完成表结构的初始化。

        abs_path为X2Doris的安装目录mysql-schema.sql的绝对路径。

        source <abs_path>/mysql-schema.sql;

        运行完成后,MySQL实例下会自动创建一个名为x2doris的数据库,可通过show databases;查看。

      2. 运行mysql-data.sql,完成表数据的初始化。

        abs_path为X2Doris的安装目录mysql-data.sql的绝对路径。

        source <abs_path>/mysql-data.sql;
    4. 将X2Doris的数据库类型修改为MySQL。

      进入X2Doris的安装目录下的conf目录,修改application.ymlspring.profiles.active的值修改为mysql

      vim application.yml

      image

    5. 指定MySQL的连接信息。

      进入X2Doris的安装目录下的conf目录,修改application-mysql.yml文件,配置数据源。

      vim application-mysql.yml

      image

    h2

    X2Doris默认的h2是内存数据库。

    重要

    系统重启后会导致X2Doris元数据丢失。

  5. 启动X2Doris。

    进入X2Doris安装目录下的bin目录,执行bash startup.sh

    image

导入数据

前提条件

  • 已将源数据的相关IP以及X2Doris部署服务器的IP添加至云数据库 SelectDB 版的白名单,请参见设置白名单

  • 已开放X2Doris的访问端口。

    说明

    默认端口为9091。具体端口号,请查看X2Doris安装目录下的application.yml的配置。

注意事项

如果您的数据源是Hive数据源,请检查安装X2Doris所在机器的环境。具体环境要求,请参见环境要求

操作步骤

  1. 配置获取Hive元数据的方式。

    通过修改X2Doris的配置文件conf/application-hive.yaml,设置获取Hive元数据方式。

    vim application-hive.yaml

    image

    参数说明

    参数名称

    说明

    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数据目录。

  2. 登录X2Doris控制台。

    默认访问地址:http://<IP>:9091

    说明
    • IP为安装X2Doris服务器的IP地址。

    • 9091是X2Doris的默认端口,如果您在application.yml 里修改了端口号,请替换为您设置的端口。

    • 默认用户名是admin,密码是selectdb

  3. 系统设置。

    在X2Doris控制台左侧导航栏,单击系统设置,在系统设置面板,进行以下配置操作。

    1. 配置Hadoop user:单击Hadoop user右侧的编辑,在输入框中输入Hadoop user,单击提交

    2. 配置Spark Home:单击Spark Home右侧的编辑,在输入框中输入Spark Home,单击提交

    3. 配置Hive metastore uris:单击Hive metastore uris右侧的编辑,在输入框中输入Hive metastore uris,单击提交

      说明
      • 要导入的数据源为Hive时,此项必须配置。

      • 可通过SET hive.metastore.uris;在Hive的控制台获取此配置项值。

    4. 配置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 版实例用户的密码。

  4. 创建作业。

    1. 在左侧导航栏,单击作业中心,进入作业中心页面。

    2. 将鼠标悬浮在作业中心数据列表右上方的新增作业,选择目标数据源,进入作业配置页面。

      1. 在页面左侧区域,选择目标源数据库。

      2. 配置字段映射,单击下一步

        配置项

        说明

        DORIS 字段类型

        默认系统会自动识别Doris与Hive字段类型的对应。

        说明
        • 默认系统会自动识别。

        • 指定Doris表对应的数据类型,特别是string类型。

        DUPLICATE KEY

        指明底层数据的排序列。

        说明

        至少有一个字段设置了此项。

        DISTRIBUTED BY

        指明底层数据的分桶列。

        说明

        至少有一个字段设置了此项。

      3. 配置分区映射

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

        配置项

        说明

        DORIS 字段类型

        默认系统会自动识别Doris与Hive字段类型的对应。

        说明
        • 默认系统会自动识别。

        • 请指定doris表对应的数据类型,特别是string类型。

        DUPLICATE KEY

        指明底层数据的排序列。

        说明

        至少有一个字段设置了此项。

        DISTRIBUTED BY

        指明底层数据的分桶列。

        说明

        至少有一个字段设置了此项。

      4. 创建表。

        如果您在SelectDB上已经创建好了对应的表,单击跳过建表,进入作业设置

        如果您还未在SelectDB上已经创建好了对应的表,单击去建表,确认Doris DDL 建表语句后,单击创建Doris表,单击下一步,进入作业设置

      5. 配置以下作业设置项,单击新建作业

        配置项

        说明

        作业名称

        自动生成,数据导入任务的名称。

        作业标签

        自动生成,数据导入任务的标签。

        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的标准参数,具体更多参数请参考通用配置项

  5. 启动同步作业。

    1. 在页面左侧导航栏,单击作业中心

    2. 在作业中心数据列表,找到目标作业,单击操作列的启动按钮image

    3. 启动作业弹窗,配置以下配置项。

      配置项说明

      配置项

      参数说明

      示例值

      查询条件

      根据条件查询要导入的数据。

      说明

      不需要写WHERE关键字,只需要写过滤逻辑。

      name='Alice'

      清空数据

      是否删除目标数据库的表数据。

      警告

      该操作存在风险,请谨慎操作。

      • OFF(默认):不删除。

      • ON:删除。

      OFF

    4. 单击确定

  6. 查看作业。

    1. 在左侧导航栏,单击作业中心,进入作业中心页面。

    2. 找到目标作业,可查看作业的迁移进度执行状态等信息。

导入非Hive源数据

安装X2Doris

安装环境

本文以Linux系统为例,安装X2Doris工具。您在实际使用中,请根据您的系统和使用环境选择合适的命令。

操作步骤

  1. 选择X2Doris工具版本。

    有Spark环境

    进入Spark安装目录的jars目录下,查看以spark-yarn开头的jar包,获取Spark依赖包对应的Scala版本。示例如下:

    spark-yarn_2.12-3.2.4.jar对应的Scala版本的为2.12。

    image

    无Spark环境

    直接选择Scala2.12对应的X2Doris安装包即可。

  2. 下载X2Doris工具。

    X2Doris官网地址:X2Doris工具

    wget https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/x2doris/selectdb-x2doris-1.0.4_2.12-bin.tar.gz
  3. 解压安装包

    tar -zxvf selectdb-x2doris-1.0.4_2.12-bin.tar.gz
  4. 初始化元数据。

    初始化X2Doris元数据的数据库,主要有内置的h2内存数据库和自建的MySQL两种模式。

    重要

    h2内存数据库,系统重启后会导致X2Doris元数据丢失。推荐您使用自建的MySQL。

    自建MySQL

    如果您需要持久化X2Doris元数据,可以选择MySQL作为保存元数据的数据库。

    1. 安装MySQL。

      sudo yum install mysql
    2. 登录MySQL。

      mysql -h<IP> -P<port> -u<user_name> -p<password>;
    3. 运行脚本。

      1. 运行mysql-schema.sql,完成表结构的初始化。

        abs_path为X2Doris的安装目录mysql-schema.sql的绝对路径。

        source <abs_path>/mysql-schema.sql;

        运行完成后,MySQL实例下会自动创建一个名为x2doris的数据库,可通过show databases;查看。

      2. 运行mysql-data.sql,完成表数据的初始化。

        abs_path为X2Doris的安装目录mysql-data.sql的绝对路径。

        source <abs_path>/mysql-data.sql;
    4. 将X2Doris的数据库类型修改为MySQL。

      进入X2Doris的安装目录下的conf目录,修改application.ymlspring.profiles.active的值修改为mysql

      vim application.yml

      image

    5. 指定MySQL的连接信息。

      进入X2Doris的安装目录下的conf目录,修改application-mysql.yml文件,配置数据源。

      vim application-mysql.yml

      image

    h2

    X2Doris默认的h2是内存数据库。

    重要

    系统重启后会导致X2Doris元数据丢失。

  5. 启动X2Doris。

    进入X2Doris安装目录下的bin目录,执行bash startup.sh

    image

导入数据

前提条件

  • 已将源数据的相关IP以及X2Doris部署服务器的IP添加至云数据库 SelectDB 版的白名单,请参见设置白名单

  • 已开放X2Doris的访问端口。

    说明

    默认端口为9091。具体端口号,请查看X2Doris安装目录下的application.yml的配置。

操作步骤

  1. 登录X2Doris控制台。

    默认访问地址:http://<IP>:9091

    说明
    • IP为安装X2Doris服务器的IP地址。

    • 9091是X2Doris的默认端口,如果您在application.yml 里修改了端口号,请替换为您设置的端口。

    • 默认用户名是admin,密码是selectdb

  2. 系统设置。

    在X2Doris控制台左侧导航栏,单击系统设置,在系统设置面板,进行以下配置操作。

    1. 可选)配置Hadoop user:单击Hadoop user右侧的编辑,在输入框中输入Hadoop user,单击提交

    2. 可选)配置Spark Home:单击Spark Home右侧的编辑,在输入框中输入Spark Home,单击提交

    3. 可选)配置Hive metastore uris:单击Hive metastore uris右侧的编辑,在输入框中输入Hive metastore uris,单击提交

    4. 配置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 版实例用户的密码。

  3. 添加数据源

    1. 在左侧导航栏,单击数据源,进入数据源页面。

    2. 将鼠标悬浮在数据源数据列表右上方的新增数据源,选择目标数据源。

    3. 根据配置面板,完成配置项配置,单击确定

  4. 创建作业。

    1. 在左侧导航栏,单击作业中心,进入作业中心页面。

    2. 将鼠标悬浮在作业中心数据列表右上方的新增作业,选择目标数据源,进入作业配置页面。

      1. 在请选择数据源弹出框,找到目标数据源,单击使用列的image

      2. 在页面左侧区域,选择目标源数据。

        说明
        • 选择一张表,也可以选择多张,或者整库。

        • 选择单表时,页面右侧会出现创建表的DDL语句。

        • 选择多表则使用默认生成策略生成的DDL,右侧不会出现DDL语句。

      3. 根据您的需求,单击目标按钮,进入作业设置项

        • 跳过建表:用于要迁移的表在云数据库 SelectDB 版目标端已经存在,则可以跳过建表。

        • 只建表:用于只创建表,不创建迁移作业。

        • 创建表&作业:用于同时创建表和迁移作业。

      4. 配置以下作业设置项,单击新建作业

        配置项

        说明

        作业名称

        数据迁移任务的名称。

        说明

        自动生成,无需手动输入。

        作业标签

        数据导入任务的标签。

        说明

        自动生成,无需手动输入。

        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

  5. 启动同步作业。

    1. 在页面左侧导航栏,单击作业中心

    2. 在作业中心数据列表,找到目标作业,单击操作列的启动按钮image

    3. 启动作业弹窗,配置以下配置项。

      配置项说明

      配置项

      参数说明

      示例值

      查询条件

      根据条件查询要导入的数据。

      说明

      不需要写WHERE关键字,只需要写过滤逻辑。

      name='Alice'

      清空数据

      是否删除目标数据库的表数据。

      警告

      该操作存在风险,请谨慎操作。

      • OFF(默认):不删除。

      • ON:删除。

      OFF

    4. 单击确定

    1. 在左侧导航栏,单击作业中心,进入作业中心页面。

    2. 找到目标作业,可查看作业的迁移进度执行状态等信息。

  6. 查看作业。

    1. 在左侧导航栏,单击作业中心,进入作业中心页面。

    2. 找到目标作业,可查看作业的迁移进度执行状态等信息。

参数优化指南

在源数据是Doris或StarRocks导入云数据库 SelectDB 版的场景中,如果您的Doris和StarRocks资源比较空闲,可以进一步优化读取速度。您可以在创建作业属性设置设置以下参数:

doris.request.tablet.size=1 #如果数据源是 doris
starrocks.request.tablet.size=1 #如果数据源是 starrocks

该参数的含义是一个RDD Partition对应的Tablet个数。此数值越小,会生成越多的Partition,从而提升了Spark的并行度,但同时会对Doris或StarRocks造成更大的压力。

image

常见问题

如何定位任务失败原因?

当数据导入任务失败后,优先排查安装X2Doris程序的运行日志,对应目录在X2Doris安装目录下的log目录,可以查看selectdb.out来观察和定位程序运行情况。

如果在查看上述日志后,仍未解决问题,请准备日志以及该迁移任务运行的上下文背景,通过工单定位问题。

添加Hive数据源失败了怎么办?

在添加Hive数据源时,系统会自动检测Hive环境的连接情况,如果Hive连接失败,会有以下错误提示。

image

需要检查系统设置Hive metastore uris和当前X2Doris部署的服务器通讯是否正常。