文档首页/ MapReduce服务 MRS/ 组件操作指南(安卡拉区域)/ 使用Loader/ 数据导入/ 典型场景:从关系型数据库导入数据到ClickHouse
更新时间:2024-11-29 GMT+08:00

典型场景:从关系型数据库导入数据到ClickHouse

操作场景

该任务指导用户使用Loader将数据从关系型数据库导入到ClickHouse,本章节以MySQL为例进行操作。

前提条件

  • 在FusionInsight Manager创建一个角色,添加ClickHouse逻辑集群的管理权限以及Loader作业分组权限。创建Loader作业的业务用户,关联该角色和并添加用户组yarnviewgroup
  • ClickHouse表已创建,确保用户已授权访问作业执行时操作该表的权限,参照创建ClickHouse表创建本地复制表和分布式表,导入时选择本地复制表。
  • 获取MySQL数据库使用的用户和密码。
  • 确保没有出现ClickHouse相关告警。

操作步骤

准备操作

  1. 从MySQL数据库安装路径下获取MySQL客户端jar包(如mysqlclient-5.8.1.jar),将其保存在Loader服务主备节点的lib路径:“${BIGDATA_HOME}/FusionInsight_Porter_*/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib”。
  2. 在ClickHouse的安装目录获取clickhouse-jdbc-*.jar包,将其保存在Loader服务主备节点的lib路径:“${BIGDATA_HOME}/FusionInsight_Porter_*/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib”。
  3. 使用root用户在主备节点分别执行以下命令修改权限:

    cd ${BIGDATA_HOME}/FusionInsight_Porter_*/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib

    chown omm:wheel jar包文件名

    chmod 600 jar包文件名

  4. 登录FusionInsight Manager系统,选择“集群 > 服务 > Loader > 更多 > 重启服务”,输入管理员密码重启Loader服务。

设置作业基本信息

  1. 登录“Loader WebUI”界面。

    1. 登录FusionInsight Manager系统。
    2. 选择“集群 > 服务 > Loader”。
    3. 单击“LoaderServer(节点名称,主)”打开“Loader WebUI”界面。
      图1 Loader WebUI界面

  2. 单击“新建作业”,进入“基本信息”界面,创建作业基本信息。

    图2 “基本信息”界面
    1. “名称”中输入作业的名称。
    2. “类型”中选择“导入”
    3. “组”中设置作业所属组,默认没有已创建的组,单击“添加”创建一个新的组,输入组的名称,单击“确定”保存。
    4. “队列”中选择执行该作业的YARN队列。默认值“root.default”
    5. “优先级”中选择执行该作业的YARN队列优先级。默认值为“NORMAL”。可选值为“VERY_LOW”“LOW”“NORMAL”“HIGH”“VERY_HIGH”

  3. “连接”区域,单击“添加”新建一个连接,在“连接器”中选择“generic-jdbc-connector”,输入配置连接参数,参数设置请参考表1,单击“测试”验证连接是否可用,待提示“测试成功”后单击“确定”。以相同方法在“连接器”中选择“clickhouse-connector”添加ClickHouse专用数据库连接器,参数设置请参考表2

    与关系数据库连接时,可以选择通用数据库连接器(generic-jdbc-connector)或者专用数据库连接器(clickhouse-connector、oracle-connector、oracle-partition-connector、mysql-fastpath-connector),专用数据库连接器特别针对具体数据库类型进行优化,相对通用数据库连接器来说,导出、导入速度更快。

    表1 “generic-jdbc-connector”连接参数

    参数名

    说明

    示例

    名称

    关系型数据库连接的名称。

    mysql_test

    JDBC驱动程序类

    JDBC驱动类名。

    com.mysql.jdbc.Driver

    JDBC连接字符串

    JDBC连接字符串,格式为:

    jdbc:mysql://访问数据库IP/数据库名称?&useUnicode=true&characterEncoding=GBK

    jdbc:mysql://10.10.10.10/test?&useUnicode=true&characterEncoding=GBK

    用户名

    连接数据库使用的用户名。

    root

    密码

    连接数据库使用的密码。

    xxxx

    表2 “clickhouse-connector”连接参数

    参数名

    说明

    示例

    名称

    关系型数据库连接的名称。

    clickhouse_jdbc_test

    JDBC连接字符串

    • 集群已启用Kerberos认证,JDBC连接字符串格式为“jdbc:clickhouse://访问数据库IP:数据库端口号/数据库名称?ssl=true&sslmode=none”
    • 集群未启用Kerberos认证,JDBC连接字符串格式为“jdbc:clickhouse://访问数据库IP:数据库端口号/数据库名称
    说明:
    • 访问数据库IP:ClickHouse的实例IP地址可登录集群FusionInsight Manager,然后选择“集群 > 服务 > ClickHouse > 实例”,获取ClickHouseBalancer实例对应的业务IP地址。
    • 数据库端口:
      • 已启用Kerberos认证集群具体的端口值可通过登录集群FusionInsight Manager,选择“集群 > 服务 > ClickHouse >逻辑集群”,查看对应逻辑集群,获取“HTTP Balancer端口号”中“加密端口”参数值。
      • 未启用Kerberos认证集群具体的端口值可通过登录集群FusionInsight Manager,选择“集群 > 服务 > ClickHouse >逻辑集群”,查看对应逻辑集群,获取“HTTP Balancer端口号”中“非加密端口”参数值。
    • 集群已启用Kerberos认证:jdbc:clickhouse://10.10.10.10:21426/test?ssl=true&sslmode=none
    • 集群未启用Kerberos认证:jdbc:clickhouse://10.10.10.10:21423/test?ssl=true&sslmode=none

    用户名

    连接数据库使用的用户名。

    root

    密码

    连接数据库使用的密码。

    xxxx

设置数据源信息

  1. 单击“下一步”,进入“输入设置”界面,设置数据源信息,暂只支持选择“表方式”。

    表3 输入设置参数

    参数名

    说明

    示例

    架构名称

    用户指定数据库的模式名

    public

    表名

    表名称

    test

    表列名

    指定要输入的列名

    id,name

    是否指定分区列

    支持不指定分区模式

    false

设置数据转换

  1. 单击“下一步”,进入“转换”界面,设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考算子帮助表4

    表4 算子输入、输出参数设置

    输入类型

    输出类型

    表输入

    ClickHouse输出

    在输入中把“表输入”拖拽到网格中,双击“表输入”,选择“自动识别”如图3所示。

    图3 算子输入

    在输出中把“ClickHouse输出”拖拽到网格中,双击“ClickHouse输出”,选择“关联”或者手动编辑表格,与输入的表格对应,如图4所示。

    图4 算子输出

设置数据保存信息并运行作业

  1. 单击“下一步”,进入“输出设置”界面,在“存储类型”中选择“CLICKHOUSE”,设置数据保存方式。

    表5 输出设置参数

    参数名

    说明

    示例

    存储类型

    选择CLICKHOUSE

    -

    连接

    选择7中设置的ClickHouse专有连接器

    clickhouse_jdbc_test

    导入前清理数据

    选择“true”或“false”

    说明:

    如果导入的表为ClickHouse分布式表,且需要清理数据时,请在导入前手动删除ClickHouse分布式表对应的本地表中的数据。

    true

    批量写入大小

    批量写入ClickHouse表时,一个批次写入的行数据。

    10000

    个数

    不可修改,默认为1。

    -

  2. 单击“保存并运行”,开始保存并运行作业。

查看作业完成情况

  1. 进入“Loader WebUI”界面,待“状态”显示“成功”则说明作业完成。

    图5 查看作业

  2. 使用ClickHouse客户端,查询ClickHouse表数据是否和MySQL的表数据一致。