使用Loader从关系型数据库导入数据到ClickHouse
操作场景
该任务指导用户使用Loader将数据从关系型数据库导入到ClickHouse,本章节以MySQL为例进行操作。
前提条件
- 创建或获取该任务中创建Loader作业的业务用户和密码。
- ClickHouse表已创建,确保用户已授权访问作业执行时操作该表的权限。
- 获取MySQL数据库使用的用户和密码。
- 检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。
- 如果设置的作业需要使用指定YARN队列功能,该用户需要已授权有相关YARN队列的权限。
- 设置任务的用户需要获取该任务的执行权限,并获取该任务对应的连接的使用权限。
- 操作前需要进行如下配置:
- 从MySQL数据库安装路径下获取MySQL客户端jar包(如mysqlclient-5.8.1.jar),将其保存在Loader服务主备节点的lib路径:“${BIGDATA_HOME}/FusionInsight_Porter_xxx/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib”。
- 在ClickHouse的安装目录获取clickhouse-jdbc-*.jar包,将其保存在Loader服务主备节点的lib路径:“${BIGDATA_HOME}/FusionInsight_Porter_xxx/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib”。
- 使用root用户在主备节点分别执行以下命令修改权限:
cd ${BIGDATA_HOME}/FusionInsight_Porter_xxx/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包文件名
- 登录FusionInsight Manager系统,选择“集群 > 服务 > Loader > 更多 > 重启服务”,输入管理员密码重启Loader服务。
操作步骤
设置作业基本信息
- 登录“Loader WebUI”界面。
- 登录FusionInsight Manager系统,具体请参见访问集群Manager。
- 选择“集群 > 服务 > Loader”。
- 单击“LoaderServer(节点名称,主)”打开“Loader WebUI”界面。
图1 Loader WebUI界面
- 单击“新建作业”,进入“基本信息”界面,创建作业基本信息。
图2 “基本信息”界面
- 在“名称”中输入作业的名称。
- 在“类型”中选择“导入”。
- 在“组”中设置作业所属组,默认没有已创建的组,单击“添加”创建一个新的组,输入组的名称,单击“确定”保存。
- 在“队列”中选择执行该作业的YARN队列。默认值“root.default”。
- 在“优先级”中选择执行该作业的YARN队列优先级。默认值为“NORMAL”。可选值为“VERY_LOW”、“LOW”、“NORMAL”、“HIGH”和“VERY_HIGH”。
- 在“连接”区域,单击“添加”新建一个的连接,在“连接器”中选择“generic-jdbc-connector”或者专用数据库连接器(oracle-connector、oracle-partition-connector、mysql-fastpath-connector),输入配置连接参数,单击“测试”验证连接是否可用,待提示“测试成功”后单击“确定”。
- 与关系数据库连接时,可以选择通用数据库连接器(generic-jdbc-connector)或者专用数据库连接器(oracle-connector、oracle-partition-connector、mysql-fastpath-connector),专用数据库连接器特别针对具体数据库类型进行优化,相对通用数据库连接器来说,导出、导入速度更快。
- 使用mysql-fastpath-connector时,要求在NodeManager节点上有MySQL的mysqldump和mysqlimport命令,并且此两个命令所属MySQL客户端版本与MySQL服务器版本兼容,如果没有这两个命令或版本不兼容,请参考http://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html,安装MySQL client applications and tools。
表1 “generic-jdbc-connector”连接参数 参数名
说明
示例
名称
关系型数据库连接的名称。
mysql_test
JDBC驱动程序类
JDBC驱动类名。
com.mysql.jdbc.Driver
JDBC连接字符串
JDBC连接字符串。
jdbc:mysql://10.254.144.102:3306/test?useUnicode=true&characterEncoding=UTF-8
用户名
连接数据库使用的用户名。
root
密码
连接数据库使用的密码。
xxxx
设置数据源信息
- 单击“下一步”,进入“输入设置”界面,设置数据源信息,暂只支持选择“表方式”。
表2 输入设置参数 参数名
说明
示例
架构名称
用户指定数据库的模式名
public
表名
表名称
test
表列名
指定要输入的列名
id,name
是否指定分区列
暂只支持不指定分区模式
false
设置数据转换
- 单击“下一步”,进入“转换”界面,设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考Loader算子帮助及表3。
在输入中把“表输入”拖拽到网格中,双击“表输入”,选择“自动识别”如图3所示。
在输出中把“ClickHouse输出”拖拽到网格中,双击“表输出”,选择“关联”或者手动编辑表格,与输入的表格对应,如图4所示。
设置数据保存信息并运行作业
- 单击“下一步”,进入“输出设置”界面,在“存储类型”中选择“CLICKHOUSE”,设置数据保存方式。
表4 输出设置参数 参数名
说明
示例
存储类型
选择CLICKHOUSE
-
ClickHouse实例
选择ClickHouse
-
导入前清理数据
选择“true”或“false”
说明:如果导入的表为ClickHouse分布式表,且需要清理数据时,请在导入前手动删除ClickHouse分布式表对应的本地表中的数据。
true
- 单击“保存并运行”,开始保存并运行作业。
查看作业完成情况
- 进入“Loader WebUI”界面,待“状态”显示“成功”则说明作业完成。
图5 查看作业
- 使用ClickHouse客户端,查询ClickHouse表数据是否和MySQL的表数据一致。