2021-5-1
问题: Kerberos 环境下启动消费者和生产者失败:
原因:当前环境未使用配置文件,应将配置文件的路径赋值给 KAFKA_OPTS
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/project/startKerberos/kerberos/jaas-keytab.conf"
再次启动:
问题:构建消费者失败,程序自动停止
报错内容:
org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
原因:消费者无法构建的原因大致可以分为三类:
- 源码有问题,导致jar包无法正常运行
- 开发环境和运行环境不一致,如 sasl.kerberos.service.name 的值,开发环境和本地不一致
- jaas.conf 配置文件问题,导致虽然可以运行,但是无法创建topic,或者无法消费topic的消息
解决办法:检查源码、运行环境和配置文件。可以先删除 topic,运行 jar 包后查看 topic list,如果运行后没有创建 topic,可以将问题定位至源码和环境不一致上面;如果创建了 topic,但无法消费,可以检查权限、运行环境、jaas.conf 配置文件。
**
2021-06-21
问题:spark消费kafka,写入hbase,计算点存入MySQL,但MySQL不更新
这是客户的一个生产实例,可以看到2号机组更新延迟大。
解决方式:取消代码中的注释…
Tips:我个人感觉,是日志中的代码生效了,类似于Java读取文件返回一个对象,用readline,会直接读取一行,如果我们在日志里面readline,那么最终会导致参与流程的代码只有一半(另一半被日志中的readline消耗了。