我的问题是:如何将zookeeper与hadoop结合使用,以便所有的reducer都可以将getdata()/setdata()转换为一个共享znode?
我的用例是,我需要在mapreduce作业中的reducer之间共享一个全局读/写变量。我正试着用zookeeper来达到这个目的。我创建了一个zookeeper对象来创建znode并给它一个初始值。下一步是,我需要所有的reducer都能够为这个znode获取getdata()/setdata()。这需要将zookeeper对象传递给所有的reducer,我不知道怎么做。我尝试序列化zookeeper对象并将其传递给还原器(通过配置属性或分布式缓存),但zookeeper类是不可序列化的。
zookeeper教程和我能找到的所有示例都演示了zookeeper和多线程应用程序,但没有一个演示如何将zookeeper与Map器或还原器结合使用。
1条答案
按热度按时间nhhxz33t1#
你不能通过考试
ZooKeeper
对象本身到Map器/还原器。只需确定示例化ZooKeeper
对象(如connectionString
)把它传过去Configuration
属性。在mapper/reducer中与zookeeper的交互与通常的java程序没有区别。