更新时间:2024-11-29 GMT+08:00

对接Flume ESSink

操作背景

由于目前MRS中Solr和Elasticsearch组件依赖的Lucene版本不同,因此Flume同时只能支持对接Solr和Elasticsearch中的一种,考虑到历史兼容性,默认对接Solr,所以,如果需要对接Elasticsearch,则需要调整Lucene。

该操作指导工程师将Flume对接Elasticsearch基于Lucene的jar包进行调整。

操作步骤

Flume的业务既可以运行在服务端,也可以运行在客户端,根据ESSink的运行位置进行如下调整:

  1. 进入Flume的安装目录的“lib”目录,如“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/lib/”,记录所有的“lucene-*”的权限和属组,并进行备份。然后移除所有的“lucene-*”。

    如果运行在客户端,请将目录换为Flume客户端安装目录的lib目录下。

  2. 进入Elasticsearch服务端的“lib”目录,如“${BIGDATA_HOME}/FusionInsight_Elasticsearch_8.3.1/install/FusionInsight-Elasticsearch-7.10.2/elasticsearch/lib”,收集Elasticsearch依赖的所有以Lucene开头的包。
  3. 2收集到的jar包拷贝到Flume安装目录的lib目录下,如“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/lib/”,并修改新拷入jar包的权限和属组,保持和原有jar包一致。

    如果在客户端运行,请将目录换为Flume客户端安装目录的lib目录下。

  4. 重启相应的Flume实例进程,如果运行在客户端,则重启客户端的FlumeAgent。

    登录FusionInsight Manager,选择“集群 > 服务 > Flume > 实例”,勾选待重启的实例,选择“更多 > 重启实例”,验证密码后单击“确定”,等待实例重启成功。

    如果ESSink需要部署在多台主机上,那么需要在每台主机上都执行上述操作。

    表1 ESSink配置:

    参数

    默认值

    描述

    type

    com.*.flume.sinks.elasticsearch.ESSink

    类型,默认为类名

    servers

    -

    EsNode列表,格式ip:port,多个用逗号分隔,port对应为EsNode的TRANSPORT_TCP_PORT或者SERVER_PORT

    说明:

    请配置EsNode所有ip及对应的port,以保证Flume的故障迁移功能正常。

    client

    transport

    Elasticsearch客户端连接类型,支持transport和rest两种

    securityEnable

    false

    Elasticsearch集群是否开启安全模式

    clusterName

    elasticsearch_cluster

    Elasticsearch集群的clusterName

    说明:

    当集群装有Elasticsearch多服务时,clusterName需要与服务一一对应,不能统一填写为elasticsearch_cluster。例如:

    “Elasticsearch”服务的clusterName为elasticsearch_cluster

    “Elasticsearch-1”服务的clusterName为elasticsearch-1_cluster

    batchSize

    1000

    批次写入Channel的Event数量

    indexName

    -

    索引名称

    indexType

    -

    索引类型

    rest.callbackConnectTimeout

    5000

    rest客户端RequestConfigCallback的连接超时时间

    rest.callbackSocketTimeout

    60000

    rest客户端RequestConfigCallback的会话超时时间

    rest.builderMaxTimeout

    60000

    rest客户端RestClientBuilder的最大重试超时时间

    serializer

    -

    序列化类,默认提供两种:

    com.*.flume.sinks.elasticsearch.ElasticSearchLogStashEventSerializer com.*.flume.sinks.elasticsearch.ElasticSearchDynamicSerializer

    不配置默认为:

    com.*.flume.sinks.elasticsearch.ElasticSearchLogStashEventSerializer

    indexNameBuilder

    -

    索引构造器,默认提供两种:

    com.*.flume.sinks.elasticsearch.TimeBasedIndexNameBuilder

    com.*.flume.sinks.elasticsearch.SimpleIndexNameBuilder

    不配置默认为:

    com.*.flume.sinks.elasticsearch.TimeBasedIndexNameBuilder

    channel

    -

    与之相连的channel

    在运行Flume并且使用安全Elasticsearch连接时,需要将配置好的jaas.conf、krb5.conf和相应用户的keytab文件通过"Win SCP"放到对应目录上。

    • 运行在服务端,则上传到服务端etc路径下,如:${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/1_11_Flume/etc/。
    • 运行在客户端,则上传到客户端conf路径下,如:/opt/flumeClient/fusioninsight-flume-Flume组件版本号/conf。jaas.conf配置请参考Flume常见问题,要求文件权限和对应目录下文件权限一致,且jaas.conf配置文件中必须以EsClient开头。