
# 使用Loader从HDFS导出数据到ClickHouse
本章节适用于MRS 3.3.0及以后版本。
#### 操作场景
该任务指导用户使用Loader将文件从HDFS导出到ClickHouse。
#### 前提条件
- 在FusionInsight Manager创建一个角色，添加ClickHouse逻辑集群的管理权限以及Loader作业分组权限。创建Loader作业的业务用户，关联该角色和并添加用户组**yarnviewgroup**。
- ClickHouse表已创建，确保用户已授权访问作业执行时操作该表的权限，参照[ClickHouse客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2345.html)创建本地复制表和分布式表，导出时选择本地复制表。
- 确保没有出现ClickHouse相关告警。
 
#### 操作步骤
**准备操作**
1. 在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"。
2. 使用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包文件名*
   
   
3. 登录FusionInsight Manager系统，选择"集群 \> 服务 \> Loader \> 更多 \> 重启服务"，输入管理员密码重启Loader服务。
**设置作业基本信息**
4. 登录"Loader WebUI"界面。 
   1. 登录FusionInsight Manager系统，具体请参见[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   2. 选择"集群 \> 服务 \> Loader"。
   
   3. 单击"LoaderServer(*节点名称* ，主)"打开"Loader WebUI"界面。
      图1Loader WebUI界面   
      ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724866733.png "点击放大") 
   
   
   
   
5. 单击"新建作业"，进入"基本信息"界面，创建作业基本信息。 
   图2"基本信息"界面   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001683731566.png "点击放大")
   1. 在"名称"中输入作业的名称。
   
   2. 在"类型"中选择"导出"。
   
   3. 在"组"中设置作业所属组，默认没有已创建的组，单击"添加"创建一个新的组，输入组的名称，单击"确定"保存。
   
   4. 在"队列"中选择执行该作业的YARN队列。默认值"root.default"。
   
   5. 在"优先级"中选择执行该作业的YARN队列优先级。默认值为"NORMAL"。可选值为"VERY_LOW"、"LOW"、"NORMAL"、"HIGH"和"VERY_HIGH"。
   
   
   
   
6. 在"连接"区域，单击"添加"新建一个连接，在"连接器"中选择"clickhouse-connector"，输入配置连接参数，单击"测试"验证连接是否可用，待提示"测试成功"后单击"确定"，参数设置请参考[表1]。
   
    表1"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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      
   
   
**设置数据源信息**
7. 单击"下一步"，进入"输入设置"界面，在"源文件类型"选择"HDFS"，设置数据源信息。 
   表2输入设置参数 
   | 参数名      | 解释说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 示例         |
   |:---|:---|:---|
   | 输入目录     | 从HDFS导出时的输入路径。 说明： 路径参数可以使用宏定义，具体请参考[Loader算子配置项中使用宏定义](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1153.html)。                                                                                                                                                                                                                                                                                                                | /user/test |
   | 路径过滤器    | 配置通配符对源文件的输入路径包含的目录进行过滤。"输入目录"不参与过滤。配置多个过滤条件时使用","隔开，配置为空时表示不过滤目录。不支持正则表达式过滤。 - "?"匹配单个字符。  - "\*"配置多个字符。  - 在匹配条件前加"\^"表示取反，即文件过滤。                                                                                                        | \*         |
   | 文件过滤器    | 配置通配符对源文件的输入文件名进行过滤。配置多个过滤条件时使用","隔开。不能配置为空。不支持正则表达式过滤。 - "?"匹配单个字符。  - "\*"配置多个字符。  - 在匹配条件前加"\^"表示取反，即文件过滤。                                                                                                                                    | \*         |
   | 文件类型     | 文件导入类型： - "TEXT_FILE"：导入文本文件并保存为文本文件。  - "SEQUENCE_FILE"：导入文本文件并保存为sequence file文件格式。  - "BINARY_FILE"：以二进制流的方式导入文件，可以导入任何格式的文件，不对文件做任何处理。   说明： 文件类型选择"TEXT_FILE"或"SEQUENCE_FILE"导入时，Loader会自动根据文件的后缀选择对应的解压方法，对文件进行解压。 | TEXT_FILE  |
   | 文件分割方式   | 选择按文件或大小分割源文件，作为数据导出的MapReduce任务中各个map的输入文件。 - 选择"FILE"，表示按文件分割源文件，即每个map处理一个或多个完整的源文件，同一个源文件不可分配至不同map，完成数据导入后保持源文件的目录结构。  - 选择"SIZE"，表示按大小分割源文件，即每个map处理一定大小的输入文件，同一个源文件可分割至多个map，数据保存至输出目录时保存的文件数与map数量相同，文件名格式为"import_part_xxxx"，"xxxx"为系统生成的随机数，具有唯一性。                                                   | FILE       |
   | Map数     | 配置数据操作的MapReduce任务中同时启动的Map数量。不可与"Map数据块大小"同时配置。参数值必须小于或等于3000。                                                                                                                                                                                                                                                                                                                                                                                                                                         | 20         |
   | Map数据块大小 | 配置数据操作的MapReduce任务中启动Map所处理的数据大小，单位为MB。参数值必须大于或等于100，建议配置值为1000。不可与"Map数"同时配置。当使用关系型数据库连接器时，不支持"Map数据块大小"，请配置"Map数"。                                                                                                                                                                                                                                                                                                                                                                                    | -          |
      
   
   
**设置数据转换**
8. 单击"下一步"，进入"转换"界面，设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考[Loader算子帮助](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1119.html)及[表3]。
   
    表3算子输入、输出参数设置 
   | 输入类型  | 输出类型 |
   |:---|:---|
   | CSV输入 | 表输出  |
      
   图3算子选择   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001724816081.png "点击放大")
   
   
**设置数据保存信息并运行作业**
9. 单击"下一步"，进入"输出设置"界面，设置数据保存方式。 
   表4输出设置参数 
   | 参数名 | 解释说明                                                                                                                                                                                                                                | 示例   |
   |:---|:---|:---|
   | 表名  | 数据库表名，用于最终保存传输的数据。 说明： 表名可以使用宏定义，具体请参考[Loader算子配置项中使用宏定义](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1153.html)。 | test |
      
   
   
10. 单击"保存并运行"，开始保存并运行作业。
**查看作业完成情况**
11. 进入"Loader WebUI"界面，待"状态"显示"成功"则说明作业完成。 
    图4查看作业   
    ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676976618.png "点击放大")
    
    
12. 使用ClickHouse客户端，查询ClickHouse表数据是否和HDFS导入的数据一致。
 
