对接Flume ESSink
操作背景
由于目前MRS中Solr和Elasticsearch组件依赖的Lucene版本不同,因此Flume同时只能支持对接Solr和Elasticsearch中的一种,考虑到历史兼容性,默认对接Solr,所以,如果需要对接Elasticsearch,则需要调整Lucene。
该操作指导工程师将Flume对接Elasticsearch基于Lucene的jar包进行调整。
操作步骤
Flume的业务既可以运行在服务端,也可以运行在客户端,根据ESSink的运行位置进行如下调整:
- 进入Flume的安装目录的“lib”目录,如“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/lib/”,记录所有的“lucene-*”的权限和属组,并进行备份。然后移除所有的“lucene-*”。
如果运行在客户端,请将目录换为Flume客户端安装目录的lib目录下。
- 进入Elasticsearch服务端的“lib”目录,如“${BIGDATA_HOME}/FusionInsight_Elasticsearch_8.3.1/install/FusionInsight-Elasticsearch-7.10.2/elasticsearch/lib”,收集Elasticsearch依赖的所有以Lucene开头的包。
- 将2收集到的jar包拷贝到Flume安装目录的lib目录下,如“${BIGDATA_HOME}/FusionInsight_Porter_8.3.1/install/FusionInsight-Flume-Flume组件版本号/flume/lib/”,并修改新拷入jar包的权限和属组,保持和原有jar包一致。
如果在客户端运行,请将目录换为Flume客户端安装目录的lib目录下。
- 重启相应的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开头。