【问题标题】:How to use ZooKeeper with Hadoop for sharing a read/write variable among reducers如何使用 ZooKeeper 和 Hadoop 在 reducer 之间共享读/写变量
【发布时间】:2015-07-02 16:47:44
【问题描述】:

我的问题是: 如何将 ZooKeeper 与 Hadoop 一起使用,以便所有 reducer 都可以 getData() / setData() 到一个共享 znode?​​p>

我的用例是我需要在 MapReduce 作业中的 reducer 之间共享一个全局读/写变量。我正在尝试为此目的使用 ZooKeeper。 我创建了一个 ZooKeeper 对象,该对象创建了一个 znode 并给它一个初始值。下一步是我需要所有reducer 能够为这个znode 获取getData() / setData()。这需要将 ZooKeeper 对象传递给所有 reducer,我不知道该怎么做。我尝试序列化 ZooKeeper 对象并将其传递给 reducer(通过配置属性或通过分布式缓存),但 ZooKeeper 类不可序列化。

ZooKeeper 教程和我能找到的所有示例都说明了 ZooKeeper 与多线程应用程序,但没有一个显示如何将 ZooKeeper 与映射器或减速器一起使用。

【问题讨论】:

  • 这不是一个答案,但可能是一个有用的链接zookeeper.apache.org/doc/r3.1.2/…
  • 非常感谢 Arun 的帮助,我之前已经遇到过这个例子。 harpun 的回答纠正了我的一个误解并解决了我的问题

标签: hadoop mapreduce apache-zookeeper


【解决方案1】:

您不能将ZooKeeper 对象本身传递给映射器/缩减器。只需确定在 mapper/reducer 中实例化 ZooKeeper 对象所需的配置(如 connectionString)并通过 Configuration 属性传递它。

mapper/reducers 中与 ZooKeeper 的交互与通常的 Java 程序没有区别。

【讨论】:

  • 非常感谢 harpun。由于我是 ZooKeeper 的新手,所以我有一些误解。你的回答让我明白了,解决了我的问题
  • 不客气! :) 顺便提一句。请记住对您认为对 SO 有用的任何答案进行投票。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-11
  • 2022-08-14
  • 2018-11-20
  • 1970-01-01
  • 2020-04-08
  • 2012-10-27
  • 2018-04-25
  • 2020-09-11
相关资源
最近更新 更多