Apache kafka 卡夫卡与弗林克的关系不仅仅是纱线的展开
我开发了一个简单的Flink作业,它消耗卡夫卡流。所有这些都对当地环境产生了巨大的影响。但当我试着用纱线在集群上运行Flink作业时,什么都没有发生。(而且,我没有任何错误消息) 当然,我已经检查了集群是否可以访问流,并且它已经访问了。我甚至可以在集群的每台机器上以一个简单的java程序的形式运行我的作业,它可以正常工作 有什么见解可以解释这一点吗 多谢各位 编辑:Apache kafka 卡夫卡与弗林克的关系不仅仅是纱线的展开,apache-kafka,cluster-computing,yarn,apache-flink,Apache Kafka,Cluster Computing,Yarn,Apache Flink,我开发了一个简单的Flink作业,它消耗卡夫卡流。所有这些都对当地环境产生了巨大的影响。但当我试着用纱线在集群上运行Flink作业时,什么都没有发生。(而且,我没有任何错误消息) 当然,我已经检查了集群是否可以访问流,并且它已经访问了。我甚至可以在集群的每台机器上以一个简单的java程序的形式运行我的作业,它可以正常工作 有什么见解可以解释这一点吗 多谢各位 编辑: object KafkaConsuming { def main(args: Array[String]) {
object KafkaConsuming {
def main(args: Array[String]) {
// Flink parameter tool
// Allow to pass arguments to this script
val params: ParameterTool = ParameterTool.fromArgs(args)
// set up streaming execution environment
val env = StreamExecutionEnvironment.getExecutionEnvironment
// make parameters available globally
env.getConfig.setGlobalJobParameters(params)
val properties = new Properties();
properties.setProperty("bootstrap.servers", params.get("server"));
// only requied for Kafka 0.8
//properties.rsetProperty("zookeeper.connect", "X.X.X.X:2181");
val stream: DataStream[String] = env.addSource(new FlinkKafkaConsumer010[String](params.get("topic"), new SimpleStringSchema(), properties))
//stream.print()
val logs: DataStream[MinifiedLog] = stream.map(x => LogParser2.parse(x))
val sessions = logs.map { x => (x.timestamp, x.sent, 1l)}
val sessionCnt: DataStream[(Long, Long, Long)] = sessions
// key stream by sensorId
.keyBy(2)
// tumbling time window of 1 minute length
.window(TumblingProcessingTimeWindows.of(Time.seconds(10)))
.reduce( (x: (Long, Long, Long), y: (Long, Long, Long)) => (x._1, x._2 + y._2, x._3 + y._3))
.map { z => (z._1, z._2 / 10, z._3 / 10)}
sessionCnt.print()
env.execute("Kafka consuming")
}
}
sessionnt.print()
的输出将写入TaskManager上的标准输出
在纱线上,访问该输出的最简单方法是使用聚合纱线日志检索所有日志(纱线日志-applicationId
)
我不确定对Flink UI中标准输出文件的访问是否正确
另一种检查数据是否到达的方法是使用Flink Web UI。如何检查数据是否到达集群?我在集群上运行了kafka consumer,并且我正在接收流
bin/kafka-console-consumer.sh–引导服务器X.X.X.X:9092–主题日志–从头开始
Flink应用程序的代码可以发布吗?是的,我编辑了我的帖子。我没有考虑标准输出问题。我有效地让数据到达Flink Web UI。我将探索返回输出的方法。非常感谢。
object KafkaConsuming {
def main(args: Array[String]) {
// Flink parameter tool
// Allow to pass arguments to this script
val params: ParameterTool = ParameterTool.fromArgs(args)
// set up streaming execution environment
val env = StreamExecutionEnvironment.getExecutionEnvironment
// make parameters available globally
env.getConfig.setGlobalJobParameters(params)
val properties = new Properties();
properties.setProperty("bootstrap.servers", params.get("server"));
// only requied for Kafka 0.8
//properties.rsetProperty("zookeeper.connect", "X.X.X.X:2181");
val stream: DataStream[String] = env.addSource(new FlinkKafkaConsumer010[String](params.get("topic"), new SimpleStringSchema(), properties))
//stream.print()
val logs: DataStream[MinifiedLog] = stream.map(x => LogParser2.parse(x))
val sessions = logs.map { x => (x.timestamp, x.sent, 1l)}
val sessionCnt: DataStream[(Long, Long, Long)] = sessions
// key stream by sensorId
.keyBy(2)
// tumbling time window of 1 minute length
.window(TumblingProcessingTimeWindows.of(Time.seconds(10)))
.reduce( (x: (Long, Long, Long), y: (Long, Long, Long)) => (x._1, x._2 + y._2, x._3 + y._3))
.map { z => (z._1, z._2 / 10, z._3 / 10)}
sessionCnt.print()
env.execute("Kafka consuming")
}
}