Apache spark 什么时候Kafka连接器比Spark流媒体解决方案更受欢迎?

Apache spark 什么时候Kafka连接器比Spark流媒体解决方案更受欢迎?,apache-spark,apache-kafka,apache-kafka-connect,spark-structured-streaming,Apache Spark,Apache Kafka,Apache Kafka Connect,Spark Structured Streaming,使用Spark streaming,我可以读取Kafka消息并将数据写入不同类型的表,例如HBase、Hive和Kudu。但这也可以通过为这些表使用Kafka连接器来实现。我的问题是,在哪些情况下,我更喜欢连接器而不是Spark流媒体解决方案 卡夫卡连接器解决方案的容忍度如何?我们知道,通过Spark streaming,我们可以使用在多个节点上运行的检查点和执行器进行容错执行,但如果可能,如何使用Kafka连接器实现容错?通过在多个节点上运行连接器 因此,一般来说,从卡夫卡读取记录并将其发送到

使用Spark streaming,我可以读取Kafka消息并将数据写入不同类型的表,例如HBase、Hive和Kudu。但这也可以通过为这些表使用Kafka连接器来实现。我的问题是,在哪些情况下,我更喜欢连接器而不是Spark流媒体解决方案


卡夫卡连接器解决方案的容忍度如何?我们知道,通过Spark streaming,我们可以使用在多个节点上运行的检查点和执行器进行容错执行,但如果可能,如何使用Kafka连接器实现容错?通过在多个节点上运行连接器

因此,一般来说,从卡夫卡读取记录并将其发送到其他服务时,功能上应该没有太大区别

当涉及到标准任务时,Kafka Connect可能更容易,因为它提供了各种现成的连接器,因此它很可能会减少编写任何代码的需要。因此,如果您只想将一组记录从Kafka复制到HDFS或Hive,那么使用Kafka connect可能会更容易、更快

考虑到这一点,当您需要执行非标准操作时,Spark Streaming会大行其道,例如,如果您希望对记录执行某些聚合或计算并将其写入Hive,那么您可能应该从一开始就使用Spark Streaming

Genrally,我发现使用Kafka connect做了一些不符合标准的事情,例如将一条消息拆分为多条消息。例如,JSON数组非常麻烦,通常需要比Spark中更多的工作


至于Kafka Connect容错,正如文档中所述,这是通过使用相同的group.id运行多个分布式工作程序来实现的,如果其中一个出现故障,工作程序将重新分配任务和连接器

因此,一般来说,从卡夫卡读取记录并将其发送到其他服务时,功能上应该没有太大区别

当涉及到标准任务时,Kafka Connect可能更容易,因为它提供了各种现成的连接器,因此它很可能会减少编写任何代码的需要。因此,如果您只想将一组记录从Kafka复制到HDFS或Hive,那么使用Kafka connect可能会更容易、更快

考虑到这一点,当您需要执行非标准操作时,Spark Streaming会大行其道,例如,如果您希望对记录执行某些聚合或计算并将其写入Hive,那么您可能应该从一开始就使用Spark Streaming

Genrally,我发现使用Kafka connect做了一些不符合标准的事情,例如将一条消息拆分为多条消息。例如,JSON数组非常麻烦,通常需要比Spark中更多的工作

至于Kafka Connect容错,正如文档中所述,这是通过使用相同的group.id运行多个分布式工作程序来实现的,如果其中一个出现故障,工作程序将重新分配任务和连接器

在哪些情况下,我更喜欢连接器而不是Spark streaming解决方案

这取决于:-

Kafka Connect是ApacheKafka的一部分,因此在安全性、交付语义等方面与ApacheKafka进行了更紧密的集成。 如果您不想编写任何代码,Kafka Connect会更容易,因为它只需要JSON来配置和运行 如果您还没有使用Spark,那么Kafka Connect可以说更适合您 直接部署运行JVM,传入配置 作为一个框架,Kafka Connect更具可移植性,因为概念是相同的,您只需为每次要集成的技术插入适当的连接器 Kafka Connect为您处理所有棘手的事情,如模式、偏移、重新启动、扩展等 Kafka Connect支持单消息转换,以便在数据通过管道屏蔽字段、删除字段、更改数据类型等时对其进行更改。对于更高级的处理,您可以使用Kafka Streams或ksqlDB之类的工具。 如果您使用的是Spark,并且它工作得很好,那么使用Kafka Connect不一定要谨慎: 卡夫卡连接器解决方案的容忍度如何…如果可能,如何使用Kafka连接器实现容错

Kafka Connect可以在分布式模式下运行,在这种模式下,节点之间有一个或多个工作进程。如果一个工作进程失败,Kafka Connect会在其余的任务之间重新平衡任务。如果在中添加一个worker,Kafka Connect将重新平衡以确保工作负载分布。这在ApacheKafka 2.3中得到了极大的改进 Kafka Connect使用Kafka consumer API并跟踪传递到Kafka自身目标系统的记录的偏移量。如果任务或辅助进程失败,您可以确保它将从正确的点重新启动 . 许多连接器也支持一次交付,例如HDFS、Elasticsearch等 如果您想了解更多有关卡夫卡连接的信息,请参阅和我的。请参见教程、教程和视频

免责声明:我为Confluent工作,也是卡夫卡Connect的忠实粉丝:-

在哪些情况下,我更喜欢连接器而不是Spark streaming解决方案

这取决于:-

Kafka Connect是ApacheKafka的一部分,因此在安全性、交付语义等方面与ApacheKafka进行了更紧密的集成。 如果您不想编写任何代码,Kafka Connect会更容易,因为它只需要JSON来配置和运行 如果您还没有使用Spark,那么Kafka Connect可以说更适合您 直接部署运行JVM,传入配置 作为一个框架,Kafka Connect更具可移植性,因为概念是相同的,您只需为每次要集成的技术插入适当的连接器 Kafka Connect为您处理所有棘手的事情,如模式、偏移、重新启动、扩展等 Kafka Connect支持单消息转换,以便在数据通过管道屏蔽字段、删除字段、更改数据类型等时对其进行更改。对于更高级的处理,您可以使用Kafka Streams或ksqlDB之类的工具。 如果您使用的是Spark,并且它工作得很好,那么使用Kafka Connect不一定要谨慎: 卡夫卡连接器解决方案的容忍度如何…如果可能,如何使用Kafka连接器实现容错

Kafka Connect可以在分布式模式下运行,在这种模式下,节点之间有一个或多个工作进程。如果一个工作进程失败,Kafka Connect会在其余的任务之间重新平衡任务。如果在中添加一个worker,Kafka Connect将重新平衡以确保工作负载分布。这在ApacheKafka 2.3中得到了极大的改进 Kafka Connect使用Kafka consumer API并跟踪传递到Kafka自身目标系统的记录的偏移量。如果任务或辅助进程失败,您可以确保它将从正确的点重新启动。许多连接器也支持一次交付,例如HDFS、Elasticsearch等 如果您想了解更多有关卡夫卡连接的信息,请参阅和我的。请参见教程、教程和视频


免责声明:我为Confluent和Kafka Connect的忠实粉丝工作:-

这些连接器至少Kafka到HDF都是标准Kafka安装的吗,或者你需要单独安装它们。我不认为它们是vanilla Kafka binary的一部分:AFAIK Kafka connect只是一个库,用于连接和获取/推送安装,比如主题和所有你必须单独安装的内容,而不是库的一部分。我建议您阅读各自的文档。卡夫卡连接器是从卡夫卡中提取数据并推送到卡夫卡的jar文件。当你不得不从一个主题中提取大量数据时,这是最重要的方面。假设在一个场景中,您对将推送到某个主题的实时数据执行某种聚合,如果您希望保存这些数据并减少流程的代码,那么kafka连接器是最有用的!。每当ksqldb创建一个新的流聚合或表时,它的数据就是一个主题。为了更好地推动重要的聚合……连接器,这些连接器,至少卡夫卡到HDF,与标准卡夫卡安装一起提供,或者你需要单独安装它们。我不认为它们是vanilla Kafka binary的一部分:AFAIK Kafka connect只是一个库,用于连接和获取/推送安装,比如主题和所有你必须单独安装的内容,而不是库的一部分。我建议您阅读各自的文档。卡夫卡连接器是从卡夫卡中提取数据并推送到卡夫卡的jar文件。当你不得不从一个主题中提取大量数据时,这是最重要的方面。假设在一个场景中,您对将推送到某个主题的实时数据执行某种聚合,如果您希望保存这些数据并减少流程的代码,那么kafka连接器是最有用的!。每当ksqldb创建一个新的流聚合或表时,它的数据就是一个主题。为了推动这一重要的聚合井……连接器再次爆炸