我最近部署了大数据集群。我用了Apache·Kafka和zookeeper。但我仍然不了解它在集群中的用法。什么时候两者都需要?目的是什么?
jljoyd4f1#
kafka是一个为高吞吐量而优化的分布式消息传递系统。它有一个持久性队列,消息被附加到具有磁盘结构的文件中,即使使用非常普通的硬件,它的执行也是一致的。简而言之,您将使用kafka将数据加载到您的大数据集群中,并且您将能够以高速完成此操作,即使在使用普通硬件时,因为kafka的分布式特性也是如此。关于zookeeper,它是一个用于大型分布式系统的集中式分布式配置服务和命名注册表。它是健壮的,因为持久化的数据分布在多个节点之间,并且一个客户机连接到其中任何一个节点,如果一个节点发生故障则进行迁移;只要绝大多数节点都在工作。所以简而言之,zookeeper确保大数据集群保持在线,即使它的一些节点处于离线状态。
jexiocij2#
关于Kafka,我想补充几点。Kafka把自己描述成一个日志而不是一个队列。日志是一个仅附加的、完全按时间排序的记录序列。在严格的数据结构意义上,队列是设计用来保存数据的fifo集合,但是一旦它从队列中取出,就无法将其取回。jaco确实描述了它是一个持久队列,但是使用了不同的术语(queue v。日志)有助于理解。Kafka的日志保存在磁盘上,而不是保存在内存中。Kafka的设计师之所以选择这一点,是因为1。他们希望避免在数据结构中存储东西时产生大量jvm开销。2他们希望消息能够持久存在,即使java进程由于某种原因死亡。kafka是为多个用户(kafka术语)从同一个日志中读取数据而设计的。每个消费者在日志中跟踪自己的偏移量,消费者a可能在偏移量2处,消费者b可能在偏移量8处,等等。通过偏移量跟踪消费者消除了Kafka方面的许多复杂性。阅读第一个链接将解释kafka和其他消息服务之间的许多区别。
tcbh2hod3#
我在简化这里的概念。你可以在这篇文章中找到详细的解释kafka是一种快速的、可扩展的、分布式的、分区的和复制的提交日志服务。它有独特的设计。特定类型的消息流被定义为主题。制作人可以是任何可以将消息发布到某个主题的人。发布的消息随后存储在一组称为代理或kafka集群的服务器上。使用者可以订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。zookeeper是一个分布式、分层的文件系统,有助于客户机之间的松散耦合。zookeeper通过运行多个zookeeper服务器(称为集成)来实现高可用性。zookeeper用于管理、协调Kafka经纪人。每个Kafka经纪人都使用zookeeper与其他Kafka经纪人进行协调。zookeeper服务会通知生产者和消费者kafka系统中存在新的代理或代理失败。
3条答案
按热度按时间jljoyd4f1#
kafka是一个为高吞吐量而优化的分布式消息传递系统。它有一个持久性队列,消息被附加到具有磁盘结构的文件中,即使使用非常普通的硬件,它的执行也是一致的。简而言之,您将使用kafka将数据加载到您的大数据集群中,并且您将能够以高速完成此操作,即使在使用普通硬件时,因为kafka的分布式特性也是如此。
关于zookeeper,它是一个用于大型分布式系统的集中式分布式配置服务和命名注册表。它是健壮的,因为持久化的数据分布在多个节点之间,并且一个客户机连接到其中任何一个节点,如果一个节点发生故障则进行迁移;只要绝大多数节点都在工作。所以简而言之,zookeeper确保大数据集群保持在线,即使它的一些节点处于离线状态。
jexiocij2#
关于Kafka,我想补充几点。
Kafka把自己描述成一个日志而不是一个队列。日志是一个仅附加的、完全按时间排序的记录序列。
在严格的数据结构意义上,队列是设计用来保存数据的fifo集合,但是一旦它从队列中取出,就无法将其取回。jaco确实描述了它是一个持久队列,但是使用了不同的术语(queue v。日志)有助于理解。
Kafka的日志保存在磁盘上,而不是保存在内存中。Kafka的设计师之所以选择这一点,是因为1。他们希望避免在数据结构中存储东西时产生大量jvm开销。2他们希望消息能够持久存在,即使java进程由于某种原因死亡。
kafka是为多个用户(kafka术语)从同一个日志中读取数据而设计的。每个消费者在日志中跟踪自己的偏移量,消费者a可能在偏移量2处,消费者b可能在偏移量8处,等等。通过偏移量跟踪消费者消除了Kafka方面的许多复杂性。
阅读第一个链接将解释kafka和其他消息服务之间的许多区别。
tcbh2hod3#
我在简化这里的概念。你可以在这篇文章中找到详细的解释
kafka是一种快速的、可扩展的、分布式的、分区的和复制的提交日志服务。它有独特的设计。
特定类型的消息流被定义为主题。
制作人可以是任何可以将消息发布到某个主题的人。
发布的消息随后存储在一组称为代理或kafka集群的服务器上。
使用者可以订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。
zookeeper是一个分布式、分层的文件系统,有助于客户机之间的松散耦合。
zookeeper通过运行多个zookeeper服务器(称为集成)来实现高可用性。
zookeeper用于管理、协调Kafka经纪人。
每个Kafka经纪人都使用zookeeper与其他Kafka经纪人进行协调。
zookeeper服务会通知生产者和消费者kafka系统中存在新的代理或代理失败。