文档首页/ MapReduce服务 MRS/ 组件操作指南(安卡拉区域)/ 使用Flume/ 加密传输/ 典型场景:从本地采集静态日志保存到HDFS
更新时间:2024-11-29 GMT+08:00

典型场景:从本地采集静态日志保存到HDFS

操作场景

该任务指导用户使用Flume从本地采集静态日志保存到HDFS上如下目录“/flume/test”

前提条件

  • 已成功安装集群、HDFS及Flume服务、Flume客户端。
  • 已创建用户flume_hdfs并授权验证日志时操作的HDFS目录和数据。

操作步骤

  1. 分别生成Flume角色服务端和客户端的证书和信任列表。

    1. omm用户登录Flume服务端所在节点。进入“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin”目录。

      cd ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin

    2. 执行以下命令,生成并导出Flume角色服务端、客户端证书。

      sh geneJKS.sh -f 密码 -g 密码

      生成的证书在“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf”路径下。其中:

      • “flume_sChat.jks”是Flume角色服务端的证书库,“flume_sChat.crt”是“flume_sChat.jks”证书的导出文件,“-f”配置项是证书和证书库的密码;
      • “flume_cChat.jks”是Flume角色客户端的证书库,“flume_cChat.crt”是“flume_cChat.jks”证书的导出文件,“-g”配置项是证书和证书库的密码;
      • “flume_sChatt.jks”和“flume_cChatt.jks”分别为Flume服务端、客户端SSL证书信任列表。

      本章节涉及到所有的用户自定义密码,需满足以下复杂度要求:

      • 至少包含大写字母、小写字母、数字、特殊符号4种类型字符
      • 至少8位,最多64位
      • 出于安全考虑,建议用户定期更换自定义密码(例如三个月更换一次),并重新生成各项证书和信任列表。

  2. 在FusionInsight Manager管理界面,选择系统 > 权限 > 用户,选择“更多 > 下载认证凭据”下载用户flume_hdfs的kerberos证书文件并保存在本地。
  3. 配置Flume角色的服务端参数,并将配置文件上传到集群。

    1. omm用户登录任意一个Flume角色所在的节点。执行以下命令进入“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin”。

      cd ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin

    2. 执行以下命令,生成并得到Flume服务端密钥库密码、信任列表密码和keystore-password加密的私钥信息。连续输入两次密码并确认,该密码是flume_sChat.jks证书库的密码。

      ./genPwFile.sh

      cat password.property

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

        采用Avro Source、File Channel和HDFS Sink,如图1所示。

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

        参数名称

        参数值填写规则

        参数样例

        名称

        不能为空,必须唯一。

        test

        bind

        avro source绑定的ip地址,此参数不能为空。须配置为服务端配置文件即将要上传的主机IP。

        192.168.108.11

        port

        avro source监测的端口,此参数不能为空。须配置为未被使用的端口。

        21154

        ssl

        是否启用SSL认证(基于安全要求,建议用户启用此功能)。

        只有“Avro”类型的Source才有此配置项。

        • true表示启用。
        • false表示不启用。

        true

        keystore

        服务端证书。

        ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/flume_sChat.jks

        keystore-password

        密钥库密码,获取keystore信息所需密码。

        输入3.b中获取的“password”值。

        -

        truststore

        服务端的SSL证书信任列表。

        ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/flume_sChatt.jks

        truststore-password

        信任列表密码,获取truststore信息所需密码。

        输入3.b中获取的“password”值。

        -

        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

        hdfs.path

        写入HDFS的目录,此参数不能为空。

        hdfs://hacluster/flume/test

        hdfs.inUsePrefix

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

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

    1. 执行以下命令将生成的客户端证书(flume_cChat.jks)和客户端信任列表(flume_cChatt.jks)复制到客户端目录下,如“/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/”(要求已安装Flume客户端),其中10.196.26.1为客户端所在节点业务平面的IP地址。

      scp ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/flume_cChat.jks user@10.196.26.1:/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/

      scp ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/flume_cChatt.jks user@10.196.26.1:/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/

      复制过程中需要输入客户端所在主机(如10.196.26.1user用户的密码。

    2. user用户登录解压Flume客户端的节点。执行以下命令进入客户端目录“/opt/flume-client/fusionInsight-flume-Flume组件版本号/bin”。

      cd opt/flume-client/fusionInsight-flume-Flume组件版本号/bin

    3. 执行以下命令,生成并得到Flume客户端密钥库密码、信任列表密码和keystore-password加密的私钥信息。连续输入两次密码并确认,该密码是别名为flumechatclient的证书和flume_cChat.jks证书库的密码。

      ./genPwFile.sh

      cat password.property

      若产生以下错误提示,可执行命令export JAVA_HOME=JDK路径进行处理。

      JAVA_HOME is null in current user,please install the JDK and set the JAVA_HOME
    4. 执行echo $SCC_PROFILE_DIR检查SCC_PROFILE_DIR环境变量是否为空。
      • 是,执行source .sccfile
      • 否,执行4.e
    5. 使用FusionInsight Manager界面中的Flume配置工具来配置Flume角色客户端参数并生成配置文件。
      1. 登录FusionInsight Manager,选择“集群 > 待操作集群的名称 > 服务 > Flume > 配置工具”。
      2. “Agent名”选择“client”,然后选择要使用的source、channel以及sink,将其拖到右侧的操作界面中并将其连接。

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

        图2 Flume配置工具示例
      3. 双击对应的source、channel以及sink,根据实际环境并参考表2设置对应的配置参数。
        • 如果对应的Flume角色之前已经配置过客户端参数,为保证与之前的配置保持一致,可以到“客户端安装目录/fusioninsight-flume-Flume组件版本号/conf/properties.properties”获取已有的客户端参数配置文件。然后登录FusionInsight Manager,选择“集群 > 待操作集群的名称 > 服务 > Flume > 配置工具 > 导入”,将该文件导入后再修改加密传输的相关配置项即可。
        • 导入配置文件时,建议配置中source/channel/sink的各自的个数都不要超过40个,否则可能导致界面响应时间过长。
      4. 单击“导出”,将配置文件“properties.properties”保存到本地。
        表2 Flume角色客户端所需修改的参数列表

        参数名称

        参数值填写规则

        参数样例

        名称

        不能为空,必须唯一。

        test

        spoolDir

        待采集的文件所在的目录路径,此参数不能为空。该路径需存在,且对flume运行用户有读写执行权限。

        /srv/BigData/hadoop/data1/zb

        trackerDir

        flume采集文件信息元数据保存路径。

        /srv/BigData/hadoop/data1/tracker

        batch-size

        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 sink监测的端口,此参数不能为空。须配置为与之相连的avro source监测的端口。

        21154

        ssl

        是否启用SSL认证(基于安全要求,建议用户启用此功能)。

        只有“Avro”类型的Source才有此配置项。

        • true表示启用。
        • false表示不启用。

        true

        keystore

        服务端生成的flume_cChat.jks证书。

        /opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/flume_cChat.jks

        keystore-password

        密钥库密码,获取keystore信息所需密码。

        输入4.c中获取的“password”值。

        -

        truststore

        服务端的SSL证书信任列表。

        /opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/flume_cChatt.jks

        truststore-password

        信任列表密码,获取truststore信息所需密码。

        输入4.c中获取的“password”值。

        -

    6. 将“properties.properties”文件上传到Flume客户端安装目录下的“flume/conf/”下。

  5. 分别生成MonitorServer角色服务端和客户端的证书和信任列表。

    1. omm用户登录MonitorServer角色所在主机。

      进入“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin”目录。

      cd ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/bin

    2. 执行以下命令,生成并导出MonitorServer角色服务端、客户端证书。

      sh geneJKS.sh -m 密码 -n 密码

      生成的证书在“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf”路径下,其中:

      • “ms_sChat.jks”是MonitorServer角色服务端的证书库,“ms_sChat.crt”是“ms_sChat.jks”证书的导出文件,“-m”配置项是证书和证书库的密码;
      • “ms_cChat.jks”是MonitorServer角色客户端的证书库,“ms_cChat.crt”是“ms_cChat.jks”证书的导出文件,“-n”配置项是证书和证书库的密码;
      • “ms_sChatt.jks”、“ms_cChatt.jks”分别为MonitorServer服务端、客户端SSL证书信任列表。

  6. 配置MonitorServer角色服务端参数。

    1. 执行以下命令,生成并得到MonitorServer服务端密钥库密码、信任列表密码和keystore-password加密的私钥信息。连续输入两次密码并确认,该密码是别名为mschatserver的证书和ms_sChat.jks证书库的密码。

      ./genPwFile.sh

      cat password.property

    2. 使用以下命令打开“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/service/application.properties”文件。根据表3中的说明,修改相关参数,并保存退出。

      vi ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/service/application.properties

      表3 MonitorServer角色服务端所需修改的参数列表

      参数名称

      参数值填写规则

      参数样例

      ssl_need_kspasswd_decrypt_key

      是否开启自定义密钥加解密功能(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

      ssl_server_enable

      是否启用SSL认证(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

      ssl_server_key_store

      根据具体的存放位置进行修改。

      ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_sChat.jks

      ssl_server_trust_key_store

      根据具体的存放位置进行修改。

      ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_sChatt.jks

      ssl_server_key_store_password

      keystore密码,根据具体制作证书的实际情况修改(生成证书的明文密钥)。

      输入6.a中获取的“password”值。

      -

      ssl_server_trust_key_store_password

      krustkeystore密码,根据具体制作证书的实际情况修改(生成信任列表的明文密钥)。

      输入6.a中获取的“password”值。

      -

      ssl_need_client_auth

      是否启用客户端认证(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

    3. 重启MonitorServer实例。选择“集群 > 待操作集群的名称 > 服务 > Flume > 实例 > MonitorServer”,勾选配置的“MonitorServer”实例,选择“更多 > 重启实例”。输入集群管理员密码,单击“确定”,重启完成后单击“完成”完成操作。

  7. 配置MonitorServer角色客户端参数。

    1. 执行以下命令将生成的客户端证书(ms_cChat.jks)和客户端信任列表(ms_cChatt.jks)复制到客户端的“/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/”目录下,其中10.196.26.1为客户端所在节点业务平面的IP地址。

      scp ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_cChat.jks user@10.196.26.1:/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/

      scp ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_cChatt.jks user@10.196.26.1:/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/

    2. user用户登录Flume客户端所在的节点。执行以下命令进入客户端目录“/opt/flume-client/fusionInsight-flume-Flume组件版本号/bin”。

      cd /opt/flume-client/fusionInsight-flume-Flume组件版本号/bin

    3. 执行以下命令,生成并得到MonitorServer客户端密钥库密码、信任列表密码和keystore-password加密的私钥信息。连续输入两次密码并确认,该密码是别名为mschatclient的证书和ms_cChat.jks证书库的密码。

      ./genPwFile.sh

      cat password.property

    4. 使用以下命令打开“/opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/service/application.properties”文件(“/opt/flume-client/fusionInsight-flume-Flume组件版本号”为客户端安装后的目录)。根据表4中的说明,修改相关参数,并保存退出。

      vi /opt/flume-client/fusionInsight-flume-Flume组件版本号/conf/service/application.properties

      表4 MonitorServer角色客户端所需修改的参数列表

      参数名称

      参数值填写规则

      参数样例

      ssl_need_kspasswd_decrypt_key

      是否开启自定义密钥加解密功能(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

      ssl_client_enable

      是否启用SSL认证(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

      ssl_client_key_store

      根据具体的存放位置进行修改。

      ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_cChat.jks

      ssl_client_trust_key_store

      根据具体的存放位置进行修改。

      ${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/conf/ms_cChatt.jks

      ssl_client_key_store_password

      keystore密码,根据具体制作证书的实际情况修改(生成证书的明文密钥)。

      输入7.c中获取的“password”值。

      -

      ssl_client_trust_key_store_password

      trustkeystore密码,根据具体制作证书的实际情况修改(生成信任列表的明文密钥)。

      输入7.c中获取的“password”值。

      -

      ssl_need_client_auth

      是否启用客户端认证(基于安全要求,建议用户启用此功能)。

      • true表示启用。
      • false表示不启用。

      true

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

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