首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花流:星火与卡夫卡的沟通是如何发生的?

火花流:星火与卡夫卡的沟通是如何发生的?
EN

Stack Overflow用户
提问于 2016-03-16 06:09:20
回答 1查看 435关注 0票数 1

我想了解一下Kafka和Spark(流)节点之间的通信是如何发生的。我有以下问题。

  1. 如果Kafka服务器和星火节点在两个单独的集群中,通信将如何进行。配置它们所需的步骤是什么。
  2. 如果两者都在同一个集群中,但在不同的节点上,将如何进行通信。

我是说,这里的通信是RPC通信还是套接字通信。我想了解一下内部解剖

任何帮助都很感激。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 09:10:50

首先,Kafka节点和Spark节点是否位于同一个集群并不重要,但是它们应该能够相互连接(在防火墙中打开端口)。

使用较早的KafkaUtils.createStream() API和更新的KafkaUtils.createDirectStream()方法,有两种使用Streaming从Kafka读取的方法。

我不想讨论它们之间的差异,这是一个很好的文档化的这里 (简而言之,直接流更好)。

在回答你的问题时,交流是如何发生的(内部解剖):找到答案的最好方法是查看星火源代码。

createStream() API直接从官方的org.apache.kafka包中使用一组org.apache.kafka消费者。这些卡夫卡消费者有自己的客户称为NetworkClient,您可以检查这里。简而言之,NetworkClient使用套接字进行通信。

createDirectStream() API确实使用了来自同一个org.apache.kafka包的SimpleConsumerSimpleConsumer类使用java.nio.ReadableByteChannel (它是java.nio.SocketChannel的一个子类)从Kafka读取,所以它最终也使用了套接字,但更间接地使用了Java的非阻塞I/O方便API。

因此,要回答您的问题:它是用套接字完成的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36027963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档