kafka开发中遇到的问题集

  • 错误: INFO consumer.SimpleConsumer: Reconnect due to socket error: java.nio.channels.ClosedChannelException
    原因: kafka消费的时候, stream.foreachRDD(rdd => ...) 多次用到rdd, 未做缓存, 每次rdd触发action时, 都会建立socket连接从kafka读数据
    解决:

    • 查看socket的连接数:
     ls /proc/$process_id/fd -l | grep socket: | wc -l 
    
    • 缓存rdd; 执行处理的时间尽量要小于batch的时间, 如果做不到,会有大量的batch堆积, socket不能释放,这种情况最好先把数据接进来, 然后另起一个Streaming来设置大的batch来慢慢处理数据
  • 参考:

    • https://stackoverflow.com/questions/35807844/kafka-consumer-simpleconsumer-reconnect-due-to-socket-error-java-nio-channels
      http://blog.selfup.cn/1837.html

    • http://blog.selfup.cn/1837.html

    • http://bbs.csdn.net/topics/110183082

  • 错误: Spark prints an avalanche of warning messages from Parquet when reading parquet files written by older versions of Parquet-mr
    原因: spark2.10存在的bug
    参考: https://issues.apache.org/jira/browse/SPARK-17993

  • --conf spark.streaming.kafka.maxRatePerPartition=1000
    设置每个batch最多处理条数, 超过的话分为几个batch处理

  • 写kafka时会socket连接有时会出现断开, 这时需要设置retries = 3 或者 5, 甚至在foreachPartition中加一个try, catch尝试重新建立连接(close掉上一个连接)

你可能感兴趣的:(kafka开发中遇到的问题集)