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

使用Flume客户端从Kafka采集日志保存到HDFS

该任务指导用户使用Flume客户端从Kafka客户端的Topic列表(test1)采集日志保存到HDFS上“/flume/test”目录下。

本配置默认集群网络环境是安全的,数据传输过程不需要启用SSL认证。如需使用加密方式,请参考配置Flume加密传输数据采集任务

前提条件

  • 已安装Flume客户端。
  • 已成功安装集群,包含HDFS、Kafka及Flume服务。
  • 已创建用户flume_hdfs并授权验证日志时操作的HDFS目录和数据。
  • 确保集群网络环境安全。

操作步骤

  1. 在FusionInsight Manager管理界面,选择系统 > 权限 > 用户,选择“更多 > 下载认证凭据”下载用户flume_hdfs的kerberos证书文件并保存在本地。

    图1 下载认证凭据

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

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

        例如采用Kafka Source、File Channel和HDFS Sink,如图3所示。

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

        参数名称

        参数值填写规则

        参数样例

        名称

        不能为空,必须唯一。

        test

        kafka.topics

        订阅的Kafka topic列表,用逗号分隔,此参数不能为空。

        test1

        kafka.consumer.group.id

        从Kafka中获取数据的组标识,此参数不能为空。

        flume

        kafka.bootstrap.servers

        Kafka的bootstrap地址端口列表,默认值为Kafka集群中所有的Kafka列表。如果集群安装有Kafka并且配置已经同步,可以不配置此项。

        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

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

    1. 以具有HDFS组件管理权限的用户登录FusionInsight Manager,具体请参见访问集群Manager。在FusionInsight Manager界面选择“集群 > 服务 > HDFS”,单击“NameNode(节点名称,主)”对应的链接,打开HDFS WebUI,然后选择“Utilities > Browse the file system”。
    2. 观察HDFS上“/flume/test”目录下是否有产生数据。
      图4 查看HDFS目录和文件