sockets - 通过套接字将 Reducers 中的全局变量/资源更新到 Hadoop 作业跟踪器

标签 sockets hadoop

我需要一个可以在 reducer 中同时读取/设置的全局变量(我知道这种设计的瓶颈和性能问题)。我尝试使用 Hadoop Configuration get()/set(),但我发现在提交 mapreduce 作业之前需要设置配置属性,并且在 reducer 中使用 Configuration.set() 实际上不会更新全局属性的值.

我能找到的最接近的方法是使用全局参数,而不是通过 Hadoop 作业跟踪器的套接字读取/设置,但我找不到任何说明如何完成此操作的资源。

我的问题是:

  1. 如何通过 Hadoop 作业的套接字读取/设置全局变量 跟踪器。
  2. 是否有另一种方法来保存全局变量 (无论性能下降如何)

注意事项:

  • Hadoop 计数器无法为我工作,因为它们不支持 set() 函数
  • DistributedCache 将无法工作,因为它用于分发只读数据,而在我的例子中,我需要 reducer 来更新全局变量的值,其他正在运行的 reduce 任务可以同时读取该值。

最佳答案

通常在 Hadoop 集群中存储可靠一致的全局变量的位置是 Apache ZooKeeper .

也就是说,在 MapReduce 作业中很少需要可变全局变量。如果您分享您的用例,则很有可能会有更简单的解决方案。

关于sockets - 通过套接字将 Reducers 中的全局变量/资源更新到 Hadoop 作业跟踪器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28606635/

相关文章:

php - 在单独的服务器上,PHP 和 MySQL 之间可以有多少连接/秒?

C 客户端服务器连接被拒绝

linux - dbus (glib) 和 TCP 的第二个套接字

Hadoop快照查询-删除&元数据信息

java - 执行./bin/start-hbase.sh时发生Hbase错误(Windows)

java - 学习核心 Java 后的客户端-服务器数据库编程

sockets - 一个系统(计算机)可以处理多少个 TCP/IP 套接字连接?

azure - 在处理数据时如何在 Azure HDInsight 中实现数据分布

hadoop - 了解配置单元查询计划

hadoop - 运行hadoop作业后生成的空输出文件