
# 使用多级agent串联从本地采集静态日志保存到HBase
#### 操作场景
该任务指导用户使用Flume客户端从本地采集静态日志保存到HBase表：flume_test。该场景介绍的是多级agent串联操作。
本章节适用于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场景，例如Server：Spooldir Source+File Channel+HBase Sink。
#### 前提条件
- 已成功安装集群，包含HBase及Flume服务。
- 已安装Flume客户端。
- 确保集群网络环境安全。
- 已创建HBase表：**create 'flume_test', 'cf'**。
- MRS集群管理员已明确业务需求，并准备一个HBase管理员用户**flume_hbase**。
 
#### 操作步骤
1. 在FusionInsight Manager管理界面，选择"系统 \> 权限 \> 用户"，选择"更多 \> 下载认证凭据"下载用户**flume_hbase** 的kerberos证书文件并保存在本地。
   
   图1下载认证凭据   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001163928636.png)
   
   
2. 配置Flume角色客户端参数。 
   1. 使用FusionInsight Manager界面中的Flume配置工具来配置Flume角色客户端参数并生成配置文件。
      1. 登录FusionInsight Manager，选择"集群 \> 服务 \> Flume \> 配置工具"。
         图2选择配置工具   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001209435891.png) 
      
      2. "Agent名"选择"client"，然后选择要使用的source、channel以及sink，将其拖到右侧的操作界面中并将其连接。 采用SpoolDir Source、File Channel和Avro Sink，如[图3]所示。
         图3Flume配置工具示例   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001261591580.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                                        |
         | spoolDir            | 待采集的文件所在的目录路径，此参数不能为空。该路径需存在，且对flume运行用户有读写执行权限。                                                                                                                                                                                                                                                         | /srv/BigData/hadoop/data1/zb                |
         | trackerDir          | flume采集文件信息元数据保存路径。                                                                                                                                                                                                                                                                                      | /srv/BigData/hadoop/data1/tracker           |
         | 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  |
         | hostname            | 要发送数据的主机名或者IP，此参数不能为空。须配置为与之相连的avro source所在的主机名或IP。                                                                                                                                                                                                                                                     | 192.168.108.11                              |
         | port                | 要发送数据的端口，此参数不能为空。须配置为与之相连的avro source监测的端口。                                                                                                                                                                                                                                                              | 21154                                       |
         | ssl                 | 是否启用SSL认证（基于安全要求，建议启用此功能）。 只有"Avro"类型的Source才有此配置项。 - true表示启用  - false表示不启用   | false                                       |
            
         
      
      4. 单击"导出"，将配置文件"properties.properties"保存到本地。
       
   
   2. 将"properties.properties"文件上传到Flume客户端安装目录下的"flume/conf/"下。
   
   
   
   
3. 配置Flume角色的服务端参数，并将配置文件上传到集群。 
   1. 使用FusionInsight Manager界面中的Flume配置工具来配置服务端参数并生成配置文件。
      1. 登录FusionInsight Manager，选择"集群 \> 服务 \> Flume \> 配置工具"。
         图4选择配置工具   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001209275943.png) 
      
      2. "Agent名"选择"server"，然后选择要使用的source、channel以及sink，将其拖到右侧的操作界面中并将其连接。 采用Avro Source、File Channel和HBase Sink，如[图5]所示。
         图5Flume配置工具示例   
         ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001308592281.png) 
      
      3. 双击对应的source、channel以及sink，根据实际环境并参考[表2]设置对应的配置参数。
         ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
         - 如果对应的Flume角色之前已经配置过服务端参数，为保证与之前的配置保持一致，在FusionInsight Manager界面选择"集群 \> *待操作集群的名称* \> 服务 \> Flume \> 实例"，选择相应的Flume角色实例，单击"实例配置"页面"flume.config.file"参数后的"下载文件"，可获取已有的服务端参数配置文件。然后选择"集群 \> *待操作集群的名称* \> 服务 \> Flume \> 配置工具 \> 导入"，将该文件导入后再修改非加密传输的相关配置项即可。
         
         - 导入配置文件时，建议配置source/channel/sink的各自的个数都不要超过40个，否则可能导致界面响应时间过长。
         
         - 不同的File Channel均需要配置一个不同的checkpoint目录。
          
          表2Flume角色服务端所需修改的参数列表 
         | 参数名称                | 参数值填写规则                                                                                                                                                                                                                                                                                   | 参数样例                                                                                                                                                                                    |
         |:---|:---|:---|
         | 名称                  | 不能为空，必须唯一。                                                                                                                                                                                                                                                                                | test                                                                                                                                                                                    |
         | bind                | avro source绑定的ip地址，此参数不能为空。须配置为服务端配置文件即将要上传的主机IP。                                                                                                                                                                                                                                         | 192.168.108.11                                                                                                                                                                          |
         | port                | avro source监测的端口，此参数不能为空。须配置为未被使用的端口。                                                                                                                                                                                                                                                     | 21154                                                                                                                                                                                   |
         | ssl                 | 是否启用SSL认证（基于安全要求，建议启用此功能）。 只有"Avro"类型的Source才有此配置项。 - true表示启用  - false表示不启用   | false                                                                                                                                                                                   |
         | dataDirs            | 缓冲区数据保存目录，默认为运行目录。配置多个盘上的目录可以提升传输效率，多个目录使用逗号分隔。如果为集群内，则可以指定在如下目录/srv/BigData/hadoop/dataX/flume/data，dataX为data1\~dataN。如果为集群外，则需要单独规划。                                                                                                                                                   | /srv/BigData/hadoop/data1/flumeserver/data                                                                                                                                              |
         | checkpointDir       | checkpoint 信息保存目录，默认在运行目录下。如果为集群内，则可以指定在如下目录/srv/BigData/hadoop/dataX/flume/checkpoint，dataX为data1\~dataN。如果为集群外，则需要单独规划。                                                                                                                                                                 | /srv/BigData/hadoop/data1/flumeserver/checkpoint                                                                                                                                        |
         | transactionCapacity | 事务大小：即当前channel支持事务处理的事件个数。建议和Source的batchSize设置为同样大小，不能小于batchSize。                                                                                                                                                                                                                      | 61200                                                                                                                                                                                   |
         | table               | HBase表名，此参数不能为空。                                                                                                                                                                                                                                                                          | flume_test                                                                                                                                                                              |
         | columnFamily        | HBase列族名，此参数不能为空。                                                                                                                                                                                                                                                                         | cf                                                                                                                                                                                      |
         | batchSize           | Flume一次写入HBase中的最大事件数。                                                                                                                                                                                                                                                                    | 61200                                                                                                                                                                                   |
         | kerberosPrincipal   | kerberos认证时用户,在安全版本下必须填写。安全集群需要配置此项，普通模式集群无需配置。                                                                                                                                                                                                                                           | flume_hbase                                                                                                                                                                             |
         | kerberosKeytab      | kerberos认证时文件路径，在安全版本下必须填写。安全集群需要配置此项，普通模式集群无需配置。                                                                                                                                                                                                                                         | /opt/test/conf/user.keytab 说明： user.keytab文件从下载用户**flume_hbase**的kerberos证书文件中获取，另外，确保用于安装和运行Flume客户端的用户对user.keytab文件有读写权限。 |
            
         
      
      4. 单击"导出"，将配置文件"properties.properties"保存到本地。
       
   
   2. 登录FusionInsight Manager，选择"集群 \> *待操作集群的名称* \> 服务 \> Flume"，在"实例"下单击"Flume"角色。
      图6单击Flume角色   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001163995986.png) 
   
   3. 选择准备上传配置文件的节点行的"Flume"角色，单击"实例配置"页面"flume.config.file"参数后的"上传文件"，选择"properties.properties"文件完成操作。
      图7上传文件   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001163836004.png)
      ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
      - 每个Flume实例均可以上传单独的服务端配置文件。
      
      - 更新配置文件需要按照此步骤操作，后台修改配置文件是不规范操作，同步配置时后台做的修改将会被覆盖。
        
   
   4. 单击"保存"，单击"确定"。
   
   5. 单击"完成"完成操作。
   
   
   
   

4. 验证日志是否传输成功。 
   1. 进入HBase客户端目录： **cd** **/** *客户端安装目录* **/HBase/hbase**
      **kinit** **flume_hbase**（输入密码）
      
   
   2. 执行**hbase shell**进入HBase客户端。
   
   3. 执行语句：**scan** '**flume_test'** ，可以看到日志按行写入HBase列族里。
      ```
      hbase(main):001:0> scan 'flume_test'
      ROW                                                          COLUMN+CELL                                                                                                                                                                    
      2017-09-18 16:05:36,394 INFO  [hconnection-0x415a3f6a-shared--pool2-t1] ipc.AbstractRpcClient: RPC Server Kerberos principal name for service=ClientService is hbase/hadoop.<系统域名>@<系统域名>
       default4021ff4a-9339-4151-a4d0-00f20807e76d                 column=cf:pCol, timestamp=1505721909388, value=Welcome to flume                                                                                                                
       incRow                                                      column=cf:iCol, timestamp=1505721909461, value=\x00\x00\x00\x00\x00\x00\x00\x01                                                                                                
      2 row(s) in 0.3660 seconds
      ```
      
   
   
   
   
 
