标签: apache-zookeeper

Apache ZooKeeper:写入如何工作

Apache ZooKeeper是一种用于小型对象的高可用数据存储.ZooKeeper集群由一些节点组成,这些节点都将整个数据集保存在其内存中.数据集称为"始终一致",因此每个节点每次都有相同的数据.

根据文档和博客文章,群集中的每个节点都可以回答读取和接受写入.

  • 节点始终在本地回答读取,因此不涉及与群集的通信.
  • 写入被转发到指定的"领导者"节点,该节点将写入请求转发到所有节点并等待他们的回复.如果至少有一半节点应答,则认为写入成功.

问题:为什么领导者等待一半的节点回复呢?如果有人连接到没有收到更新的其中一个节点,他会得到一个过时的结果(只有本地读取到本地值).

replication synchronization apache-zookeeper

21
推荐指数
1
解决办法
9566
查看次数

Kafka 1.0因FATAL SHUTDOWN错误而停止.日志目录失败

我刚刚升级到Kafka 1.0和zookeeper 3.4.10.首先,一切都开始了.独立的生产者和消费者按预期工作.在我运行代码大约10分钟后,Kafka失败并出现此错误:

[2017-11-07 16:48:01,304] INFO在目录C:\ Kafka\kafka_2.12-1.0.0\kafka-logs(kafka.log.LogManager)中停止提供日志

[2017-11-07 16:48:01,320]致命关闭代理,因为C:\ Kafka\kafka_2.12-1.0.0\kafka-logs中的所有日志都失败了(kafka.log.LogManager)

我重新安装并重新配置了Kafka 1.0,同样的事情发生了.如果我尝试重新启动,则会发生相同的错误.

删除日志文件有助于启动Kafka,但在短期运行后它会再次失败.

我已经运行了0.10.2版本很长一段时间,从来没有遇到过这样的事情,它在很长一段时间内非常稳定.

我试图找到解决方案,并按照文档中的说明进行操作.

这还不是一个生产环境,它是一个相当简单的设置,一个生产者,一个消费者从一个主题阅读.

我不确定这是否与zookeeper有任何关系.

**更新:**问题已在已发布的Apache JIRA板 的共识到目前为止似乎是,这是一个Windows的问题.

apache-kafka apache-zookeeper

21
推荐指数
3
解决办法
2万
查看次数

执行kafka-console-consumer.sh时,zookeeper不是公认的选项

我从这个链接学习如何使用kafka (除了我在zookeeper中使用端口2182),

但它显示:

zookeeper不是公认的选择

执行后:

sudo ./bin/kafka-console-consumer.sh --topic test --zookeeper localhost:2182

我做了一些搜索,似乎有一个未答复的重复问题,但它已被删除.

有人知道怎么解决吗?

ENV:

kafka_2.11-2.1.0
zookeeper-3.4.10
Run Code Online (Sandbox Code Playgroud)

java apache-kafka apache-zookeeper

21
推荐指数
3
解决办法
1万
查看次数

20
推荐指数
2
解决办法
3万
查看次数

如何使用Curator检查Zookeeper中是否存在路径?

我目前处于开发的早期阶段,将Zookeeper的东西集成到我的应用程序中.我正在使用Netflix的Curator作为处理Zookeeper的API.我得到了大部分的要点(比如添加ZNodes和诸如此类的东西).

但是你怎么检查ZNode是否存在?看起来像它的代码是:

client.checkExists().forPath(path);
Run Code Online (Sandbox Code Playgroud)

... ... client的实例在哪里com.netflix.curator.framework.CuratorFramework

但是,此调用返回一个org.apache.zookeeper.data.Stat对象.

使用此对象,如何判断路径是否存在?

谢谢

java apache-zookeeper apache-curator

20
推荐指数
1
解决办法
1万
查看次数

HBase独立无法连接(无法创建表)

我试图在本文之后以独立模式部署Hbase:http://hbase.apache.org/book.html#quickstart .版本是0.92.1-cdh4.1.2

但是在尝试创建表时我遇到了这些错误:

错误信息:

    13/04/01 14:07:10 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
13/04/01 14:07:10 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode /hbase/master
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1021)
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:154)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.watchAndCheckExists(ZKUtil.java:226)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.start(ZooKeeperNodeTracker.java:82)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:580)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:569)
Run Code Online (Sandbox Code Playgroud)

输出日志:

13/04/01 14:06:39 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection
13/04/01 14:06:39 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 10231@localhost
13/04/01 14:06:39 INFO zookeeper.ClientCnxn: Opening socket connection to …
Run Code Online (Sandbox Code Playgroud)

java hadoop hbase nosql apache-zookeeper

20
推荐指数
1
解决办法
3万
查看次数

Kafka + Zookeeper:无法建立与节点-1的连接.经纪人可能无法使用

我在我的locahost运行Zookeeper和Kafka(每个1个实例).

我从kafka成功创建了一个主题:

./bin/kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic Hello-Nicola

Created topic "Hello-Nicola".
Run Code Online (Sandbox Code Playgroud)

卡夫卡原木显示:

[2017-12-06 16:00:17,753] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
[2017-12-06 16:03:19,347] INFO [ReplicaFetcherManager on broker 0] Removed fetcher for partitions Hello-Nicola-0 (kafka.server.ReplicaFetcherManager)
[2017-12-06 16:03:19,393] INFO Loading producer state from offset 0 for partition Hello-Nicola-0 with message format version 2 (kafka.log.Log)
[2017-12-06 16:03:19,406] INFO Completed load of log Hello-Nicola-0 with 1 log segments, log start offset 0 and log end offset 0 in 35 ms (kafka.log.Log)
[2017-12-06 …
Run Code Online (Sandbox Code Playgroud)

apache-kafka apache-zookeeper

20
推荐指数
5
解决办法
3万
查看次数

Zookeeper - 三个节点,只有错误

我有三个zookeeper节点.所有港口都是开放的.IP地址是正确的.下面是我的配置文件.由chef引导的所有节点都具有相同的安装和配置文件.

# The number of milliseconds of each tick
tickTime=3000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/var/lib/zookeeper
# Place the dataLogDir to a separate physical disc for better performance
# dataLogDir=/disk2/zookeeper

# the port at which the clients will connect
clientPort=2181

server.1=111.111.111:2888:3888
server.2=111.111.112:2888:3888
server.3=111.111.113:2888:3888
Run Code Online (Sandbox Code Playgroud)

这是其中一个节点的错误.所以...我对如何得到错误感到困惑,因为配置相当香草.所有三个节点都在做同样的事情.

2012-07-16 …
Run Code Online (Sandbox Code Playgroud)

apache-zookeeper

19
推荐指数
2
解决办法
3万
查看次数

关于动物园管理员锁定食谱的担忧

在阅读ZooKeeper的锁定配方时,我感到困惑.似乎这个分布式锁定的配方无法保证"任何两个客户端认为它们持有相同锁定的任何快照".但是由于ZooKeeper被如此广泛采用,如果参考文档中存在这样的错误,有人应该在很久以前就指出它,那么我误解了什么呢?

引用分布式锁的配方:

完全分布式锁,全局同步,意味着在任何快照时,没有两个客户端认为它们拥有相同的锁.这些可以使用ZooKeeeper实现.与优先级队列一样,首先定义一个锁定节点.

  1. 使用路径名" locknode/guid-lock-" 调用create(),并设置序列和短暂标志.
  2. 在锁定节点上调用getChildren()而不设置监视标志(这对于避免群体效应很重要).
  3. 如果在步骤1中创建的路径名具有最低序列号后缀,则客户端具有锁,并且客户端退出协议.
  4. 客户端调用exists(),并在lock目录中的路径上设置watch标志,并使用下一个最低序列号.
  5. 如果exists()返回false,则转到步骤2.否则,在转到步骤2之前,等待上一步中路径名的通知.

考虑以下情况:

  • Client1成功获取了锁(在步骤3中),使用ZooKeeper节点"locknode/guid-lock-0";
  • Client2创建了节点"locknode/guid-lock-1",无法获取锁,现在正在观看"locknode/guid-lock-0";
  • 后来,由于某种原因(比如网络拥塞),Client1无法按时向ZooKeeper集群发送心跳消息,但Client1仍在工作,错误地假设它仍然保持锁定.
  • 但是,ZooKeeper可能会认为Client1的会话超时了

    1. 删除"locknode/guid-lock-0",
    2. 向Client2发送通知(或者先发送通知?),
    3. 但无法及时向Client1发送"会话超时"通知(例如,由于网络拥塞).
  • Client2获取通知,转到步骤2,获取它自己创建的唯一节点""locknode/guid-lock-1";因此,Client2假定它持有锁.
  • 但与此同时,Client1认为它持有锁.

这是一个有效的场景吗?

apache-zookeeper

19
推荐指数
1
解决办法
7377
查看次数

处理时得到用户级KeeperException

我知道之前有人问过这个问题,所以请原谅我再问一次,但是那个帖子指出的解决方案都没有对我有用.

我正在尝试0.10.20按照文档设置Kafka .当我启动ZooKeeper时,我得到以下日志:

$ bin/zookeeper-server-start.sh config/zookeeper.properties 
[2017-04-22 12:25:15,810] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2017-04-22 12:25:15,814] INFO autopurge.snapRetainCount set to 3 (org.apache.zookeeper.server.DatadirCleanupManager)
[2017-04-22 12:25:15,815] INFO autopurge.purgeInterval set to 0 (org.apache.zookeeper.server.DatadirCleanupManager)
[2017-04-22 12:25:15,815] INFO Purge task is not scheduled. (org.apache.zookeeper.server.DatadirCleanupManager)
[2017-04-22 12:25:15,815] WARN Either no config or no quorum defined in config, running  in standalone mode (org.apache.zookeeper.server.quorum.QuorumPeerMain)
[2017-04-22 12:25:15,837] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2017-04-22 12:25:15,837] INFO Starting server (org.apache.zookeeper.server.ZooKeeperServerMain)
[2017-04-22 12:25:15,855] …
Run Code Online (Sandbox Code Playgroud)

apache-kafka apache-zookeeper

19
推荐指数
1
解决办法
2万
查看次数