
# 使用Flume客户端从Kafka采集日志保存到HDFS
#### 操作场景
该任务指导用户使用Flume客户端从Kafka客户端的Topic列表(test1)采集日志保存到HDFS上"/flume/test"目录下。
本章节适用于MRS 3.x及之后版本。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
本配置默认集群网络环境是安全的，数据传输过程不需要启用SSL认证。如需使用加密方式，请参考[配置Flume加密传输数据采集任务](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1068.html)。
#### 前提条件
- 已安装Flume客户端。
- 已成功安装集群，包含HDFS、Kafka及Flume服务。
- 已创建用户**flume_hdfs**并授权验证日志时操作的HDFS目录和数据。
- 确保集群网络环境安全。
 
#### 操作步骤
1. 在FusionInsight Manager管理界面，选择"系统 \> 权限 \> 用户"，选择"更多 \> 下载认证凭据"下载用户**flume_hdfs** 的kerberos证书文件并保存在本地。
   
   图1下载认证凭据   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001164314478.png)
   
   
2. 配置Flume角色客户端参数。 
   1. 使用FusionInsight Manager界面中的Flume配置工具来配置Flume角色服务端参数并生成配置文件。
      1. 登录FusionInsight Manager，选择"集群 \> 服务 \> Flume \> 配置工具"。
         图2选择配置工具   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001209594459.png) 
      
      2. "Agent名"选择"client"，然后选择要使用的source、channel以及sink，将其拖到右侧的操作界面中并将其连接。 例如采用Kafka Source、File Channel和HDFS Sink，如[图3]所示。
         图3Flume配置工具示例   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264265667.png) 
      
      3. 双击对应的source、channel以及sink，根据实际环境并参考[表1]设置对应的配置参数。
         ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
         - 如果想在之前的"properties.properties"文件上进行修改后继续使用，则登录FusionInsight Manager，选择"集群 \> *待操作集群的名称* \> 服务 \> Flume \> 配置工具 \> 导入"，将该文件导入后再修改非加密传输的相关配置项即可。
         
         - 导入配置文件时，建议配置source/channel/sink的各自的个数都不要超过40个，否则可能导致界面响应时间过长。
          
          表1Flume角色客户端所需修改的参数列表 
         | 参数名称                    | 参数值填写规则                                                                                                                                 | 参数样例                                                                                                                                                                                     |
         |:---|:---|:---|
         | 名称                      | 不能为空，必须唯一。                                                                                                                              | test                                                                                                                                                                                     |
         | kafka.topics            | 订阅的Kafka topic列表，用逗号分隔，此参数不能为空。                                                                                                         | test1                                                                                                                                                                                    |
         | kafka.consumer.group.id | 从Kafka中获取数据的组标识，此参数不能为空。                                                                                                                | flume                                                                                                                                                                                    |
         | kafka.bootstrap.servers | Kafka的bootstrap地址端口列表,默认值为Kafka集群中所有的Kafka列表。如果集群安装有Kafka并且配置已经同步，可以不配置此项。当使用Flume客户端时，必须配置此项。                                          | 192.168.101.10:21007                                                                                                                                                                     |
         | batchSize               | Flume一次发送的事件个数（数据条数）。                                                                                                                   | 61200                                                                                                                                                                                    |
         | dataDirs                | 缓冲区数据保存目录，默认为运行目录。配置多个盘上的目录可以提升传输效率，多个目录使用逗号分隔。如果为集群内，则可以指定在如下目录/srv/BigData/hadoop/dataX/flume/data，dataX为data1\~dataN。如果为集群外，则需要单独规划。 | /srv/BigData/hadoop/data1/flume/data                                                                                                                                                     |
         | checkpointDir           | checkpoint信息保存目录，默认在运行目录下。如果为集群内，则可以指定在如下目录/srv/BigData/hadoop/dataX/flume/checkpoint，dataX为data1\~dataN。如果为集群外，则需要单独规划。                | /srv/BigData/hadoop/data1/flume/checkpoint                                                                                                                                               |
         | transactionCapacity     | 事务大小：即当前channel支持事务处理的事件个数，建议和Source的batchSize设置为同样大小，不能小于batchSize。                                                                    | 61200                                                                                                                                                                                    |
         | hdfs.path               | 写入HDFS的目录，此参数不能为空。                                                                                                                      | hdfs://hacluster/flume/test                                                                                                                                                              |
         | hdfs.filePrefix         | 数据写入HDFS后文件名的前缀。                                                                                                                        | TMP_                                                                                                                                                                                     |
         | hdfs.batchSize          | 一次写入HDFS的最大事件数目。                                                                                                                        | 61200                                                                                                                                                                                    |
         | hdfs.kerberosPrincipal  | kerberos认证时用户，在安全版本下必须填写。安全集群需要配置此项，普通模式集群无需配置。                                                                                         | flume_hdfs                                                                                                                                                                               |
         | hdfs.kerberosKeytab     | kerberos认证时keytab文件路径，在安全版本下必须填写。安全集群需要配置此项，普通模式集群无需配置。                                                                                 | /opt/test/conf/user.keytab 说明： user.keytab文件从下载用户**flume_hdfs**的kerberos证书文件中获取，另外，确保用于安装和运行Flume客户端的用户对user.keytab文件有读写权限。 |
         | hdfs.useLocalTimeStamp  | 是否使用本地时间，取值为"true"或者"false"                                                                                                             | true                                                                                                                                                                                     |
            
         
      
      4. 单击"导出"，将配置文件"properties.properties"保存到本地。
       
   
   2. 将"properties.properties"文件上传到Flume客户端安装目录下的"flume/conf/"下。
   
   3. Flume客户端连接到HDFS，还需要补充如下配置：
      1. 通过"用户"下载用户**flume_hdfs**的kerberos证书文件获取krb5.conf配置文件，并上传至客户端所在节点安装目录的"fusioninsight-flume-1.9.0/conf/"下。
      
      2. 新建jaas.conf配置文件到客户端所在节点安装目录的"fusioninsight-flume-1.9.0/conf/"下。 **vi jaas.conf**
         ```
         KafkaClient {
         com.sun.security.auth.module.Krb5LoginModule required
         useKeyTab=true
         keyTab="/opt/test/conf/user.keytab"
         principal="flume_hdfs@<系统域名>"
         useTicketCache=false
         storeKey=true
         debug=true;
         };
         ```
         参数keyTab和principal根据实际情况修改。
         
      
      3. 从/opt/FusionInsight_Cluster_*\<集群ID\>*_Flume_ClientConfig/Flume/config目录下获取core-site.xml和hdfs-site.xml配置文件，并上传至客户端所在节点安装目录的"fusioninsight-flume-1.9.0/conf/"下。
       
   
   4. 进入客户端所在节点安装目录的"fusioninsight-flume-1.9.0/bin"下，执行以下命令重启Flume进程。 **./flume-manage.sh restart**
      
   
   
   
   

3. 验证日志是否传输成功。 
   1. 以具有HDFS组件管理权限的用户登录FusionInsight Manager，具体请参见[访问FusionInsight Manager（MRS 3.x及之后版本）](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2124.html)。在FusionInsight Manager界面选择"集群 \> 服务 \> HDFS"，单击"NameNode(*节点名称*，主)"对应的链接，打开HDFS WebUI，然后选择"Utilities \> Browse the file system"。
   
   2. 观察HDFS上"/flume/test"目录下是否有产生数据。
      图4查看HDFS目录和文件   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001087519543.png) 
   
   
   
   
 
