更新时间:2024-10-24 GMT+08:00

使用多级agent串联从本地采集静态日志保存到HBase

操作场景

该任务指导用户使用Flume客户端从本地采集静态日志保存到HBase表:flume_test。该场景介绍的是多级agent串联操作。

本章节适用于MRS 3.x及之后版本。

本配置默认集群网络环境是安全的,数据传输过程不需要启用SSL认证。如需使用加密方式,请参考配置Flume加密传输数据采集任务。该配置可以只用一个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 下载认证凭据

  2. 配置Flume角色客户端参数。

    1. 使用FusionInsight Manager界面中的Flume配置工具来配置Flume角色客户端参数并生成配置文件。
      1. 登录FusionInsight Manager,选择“集群 > 服务 > Flume > 配置工具”。
        图2 选择配置工具
      2. “Agent名”选择“client”,然后选择要使用的source、channel以及sink,将其拖到右侧的操作界面中并将其连接。

        采用SpoolDir Source、File Channel和Avro Sink,如图3所示。

        图3 Flume配置工具示例
      3. 双击对应的source、channel以及sink,根据实际环境并参考表1设置对应的配置参数。
        • 如果想在之前的“properties.propretites”文件上进行修改后继续使用,则登录FusionInsight Manager,选择“集群 > 待操作集群的名称 > 服务 > Flume > 配置工具 > 导入”,将该文件导入后再修改非加密传输的相关配置项即可。
        • 导入配置文件时,建议配置source/channel/sink的各自的个数都不要超过40个,否则可能导致界面响应时间过长。
        表1 Flume角色客户端所需修改的参数列表

        参数名称

        参数值填写规则

        参数样例

        名称

        不能为空,必须唯一。

        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 选择配置工具
      2. “Agent名”选择“server”,然后选择要使用的source、channel以及sink,将其拖到右侧的操作界面中并将其连接。

        采用Avro Source、File Channel和HBase Sink,如图5所示。

        图5 Flume配置工具示例
      3. 双击对应的source、channel以及sink,根据实际环境并参考表2设置对应的配置参数。
        • 如果对应的Flume角色之前已经配置过服务端参数,为保证与之前的配置保持一致,在FusionInsight Manager界面选择“集群 > 待操作集群的名称 > 服务 > Flume > 实例”,选择相应的Flume角色实例,单击“实例配置”页面“flume.config.file”参数后的“下载文件”,可获取已有的服务端参数配置文件。然后选择“集群 > 待操作集群的名称 > 服务 > Flume > 配置工具 > 导入”,将该文件导入后再修改非加密传输的相关配置项即可。
        • 导入配置文件时,建议配置source/channel/sink的各自的个数都不要超过40个,否则可能导致界面响应时间过长。
        • 不同的File Channel均需要配置一个不同的checkpoint目录。
        表2 Flume角色服务端所需修改的参数列表

        参数名称

        参数值填写规则

        参数样例

        名称

        不能为空,必须唯一。

        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角色
    3. 选择准备上传配置文件的节点行的“Flume”角色,单击“实例配置”页面“flume.config.file”参数后的“上传文件”,选择“properties.properties”文件完成操作。
      图7 上传文件
      • 每个Flume实例均可以上传单独的服务端配置文件。
      • 更新配置文件需要按照此步骤操作,后台修改配置文件是不规范操作,同步配置时后台做的修改将会被覆盖。
    4. 单击“保存”,单击“确定”。
    5. 单击“完成”完成操作。

  1. 验证日志是否传输成功。

    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