目录

一、Flume对接Kafka之后取到的数据有双引号

二、Failed to create topic

三、Failed to construct kafka consumer

四、单一节点创建topic失败

五、Slipstream中建es表报错

 

一、Flume对接Kafka之后取到的数据有双引号

【问题描述】

       如下图所示,虽然Flume、Kafka、Slipstream对接成功并取到了数据,但是Inceptor中查询出的数据均带有双引号。

flume链接kafka 9092端口都是FIN_WAIT2状态_tdh

【问题原因】

       可能的原因是Flume默认传输机制是用json字符串传输的数据,所以传输过来的数据均带有双引号。

【解决办法】

       Flume在1.7版本之后开始支持拦截器(Interceptor)的功能,可以在Flume的配置文件(这是编辑的配置文件为flume-topic-oracle.conf)中配置拦截器以达到过滤双引号的目的。配置方式如下:

flume链接kafka 9092端口都是FIN_WAIT2状态_slipstream_02

       参数解释:

(1)a1.sources.r1.interceptors:定义拦截器的名字;
       (2)a1.sources.r1.interceptors.i1.type:定义拦截器的类型(此处是寻找并替换);
       (3)a1.sources.r1.interceptors.i1.searchPattern:定义寻找的字符;
       (4)a1.sources.r1.interceptors.i1.replaceString:定义替换的字符。

       配置完成之后,重启Flume组件,在Oracle数据库中插入几条数据进行测试,Inceptor中得到的结果显示正常。

flume链接kafka 9092端口都是FIN_WAIT2状态_数据_03

二、Failed to create topic

【问题描述】

       在创建Kafka topic的时候显示创建topic失败,具体错误如下:

flume链接kafka 9092端口都是FIN_WAIT2状态_数据_04

【问题原因】

(1)./kafka-topics.sh --create --topic qwe --zookeeper node1:2181,node2:2181,node3:2181 --partition 3 --replication-factor 3
(2)./kafka-broker-topics.sh --bootstrap-server node3:9092,node2:9092,node1:9092 --create --topic test3 --partitions 3 --replication-factor 3 --consumer.config ../config/consumer.properties

       (1)中创建topic的方式是通过zookeeper校验获取controller信息之后创建topic的;(2)中创建topic的方式是没有通过zookeeper校验,所以无法获取到controller的信息,此时,kafka会认为连接server最快的那个节点是controller,一旦与zookeeper中选举的controller不同时,就会报如上的错误。

【解决办法】

       1、建议使用(1)中的方法创建topic。

       2、如果需要使用(2)中的方法进行topic的创建,可以先去zookeeper中查看controller位于哪一节点,然后再执行创建topic的语句。具体操作如下:

       首先去到kafka的bin目录下,启动zookeeper客户端:

flume链接kafka 9092端口都是FIN_WAIT2状态_slipstream_05

       然后执行获取controller的命令:

flume链接kafka 9092端口都是FIN_WAIT2状态_slipstream_06

       得到brokerid之后,执行如下命令:

flume链接kafka 9092端口都是FIN_WAIT2状态_数据_07

       由上图可以看出,此时的controller位于node3上,故使用如下命令创建topic:

./kafka-broker-topics.sh --bootstrap-server node3:9092 --create --topic test3 --partitions 3 --replication-factor 3 --consumer.config ../config/consumer.properties

三、Failed to construct kafka consumer

【问题描述】

       在交互界面创建完流与表之后,在触发流的过程中遇到如下错误:

flume链接kafka 9092端口都是FIN_WAIT2状态_kafka_08

【问题可能的原因】

       1、当前用户没有操作集群的权限;2、没有给当前topic赋生产数据、消费数据的权限;3、创建流时的principal参数写错。

【解决办法】

       在Kafka的bin目录下执行如下命令进行赋权(以topic indexs为例)。

--给当前用户赋操作集群的权限
./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive –cluster
--给当前topic赋生产数据的权限
./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive --topic indexs –producer
--给当前topic赋消费数据的权限
./kafka-acls.sh --authorizer-properties zookeeper.connect=node3:2181,node2:2181,node1:2181 --add --allow-principal User:hive --topic indexs --consumer --group hadoop

       赋权之后,登录8380界面:“权限”-->KAFKA-->kafka1。

flume链接kafka 9092端口都是FIN_WAIT2状态_kafka_09

       将“话题权限”、“消费组权限”和“集群权限”的“GLOBAL”一栏,增加“hive”用户。

flume链接kafka 9092端口都是FIN_WAIT2状态_kafka_10

       去到/etc/slipstream1/conf目录下找到之前分发的kafka.keytab文件,执行如下命令:

klist -ket kafka.keytab

       查看principal参数的设置如下:

flume链接kafka 9092端口都是FIN_WAIT2状态_kafka_11

       核对建流语句中的principal参数,无误后重新建流触发,此时触发成功。

flume链接kafka 9092端口都是FIN_WAIT2状态_数据_12

四、单一节点创建topic失败

【问题描述】

       使用一个节点创建topic的时候创建失败,报错如下:

flume链接kafka 9092端口都是FIN_WAIT2状态_slipstream_13

【问题原因】

       Zookeeper的机制会选举出一个节点作为Leader,其余节点作为Follower,此处创建topic失败说明node1不是Leader,即不是Controller。

【解决办法】

       将所有节点都写上。例如:

./kafka-broker-topics.sh --bootstrap-server node3:9092,node2:9092,node1:9092 --create --topic yxy --partitions 3 --replication-factor 3 --consumer.config ../config/consumer.properties

五、Slipstream中建es表报错

【问题描述】

       在Slipstream中建立es表时,报错如下:

flume链接kafka 9092端口都是FIN_WAIT2状态_tdh_14

【问题原因】

       没设置Slipstream依赖Search。

【解决办法】

       去8180监控界面Slipstream组件下,设置Slipstream依赖Search。