【问题标题】:How does HBase mapreduce job communicate with server? (newbie question)HBase mapreduce 作业如何与服务器通信? (新手问题)
【发布时间】:2011-06-27 15:43:50
【问题描述】:

我是 Hadoop 和 HBase 的新手,即使我已经阅读了 allot,但我仍然不了解 map reduce 作业 API 的基本层次结构和工作流程。

据我了解,我需要使用 java API 来实现某些类并将它们传递给 hbase,hbase 将协调拆分和分发过程。对吗?

如果是这样,应用程序如何与服务器通信以传递 map reduce 作业的相关代码?我这里缺少一个链接....

谢谢

【问题讨论】:

    标签: java hadoop hbase


    【解决方案1】:

    当您运行 HBase MapReduce 作业时,您的类路径必须包含 HBase 和 MapReduce 配置文件。配置文件将包含 JobTracker 的位置、HDFS NameNode 和 HBase 主节点等设置。然后运行时会自动从配置文件中获取所有这些设置,以便您的工作知道要联系哪些服务器。

    【讨论】:

      【解决方案2】:

      我认为您应该通过basic tutorial 来解决问题,这应该会让事情变得清晰。我发现最快的入门方法是使用Cloudera VM

      另外,我不确定您对 HBase 的引用;您应该将 Java 类传递给 Hadoop,而不是 HBase。

      但是,为了回答您的问题,应在集群中的所有节点上安装 Hadoop。 Hadoop 框架将负责耕种地图并将任务减少到节点。

      【讨论】:

      • 阿德里安,谢谢。我阅读了教程和书籍以及许多其他内容。我认为这是一件显而易见的事情,似乎没有人提及。
      • 我看到了通过 Eclipse 执行代码的示例,而不仅仅是通过 Hadoop 命令行,所以我不明白它是如何工作的。
      • 您意识到您需要直接在 Hadoop 服务器上运行 mapreduce 作业?
      • 恐怕我对 Eclipse 集成一无所知。
      • 这是我的想法,但请看这里sujee.net/tech/articles/hbase-map-reduce-freq-counter
      【解决方案3】:

      使用 HBase 执行 M/R 作业的标准方式与执行非 HBase m/r 作业的方式相同: ${HADOOP_HOME}/bin/hadoop jar .jar [args]

      这会将您的 jar 复制到所有任务跟踪器(通过 HDFS),以便它们可以执行您的代码。

      使用 HBase,您通常还会使用 HBase 实用程序: TableMapReduceUtil.initTableReducerJob

      这使用内置算法来拆分 HBase 表(使用表的区域),以便计算可以分布在 m/r 作业上。如果您想要不同的拆分,则必须修改拆分的计算方式,这意味着您无法使用内置实用程序。

      您可以指定的另一件事是返回的行的条件。如果您使用内置的扫描条件,那么您不必做任何特别的事情。但是,如果要创建自定义比较器,则必须确保区域服务器在其类路径中具有此代码,以便它们可以执行它。在你走这条路之前,请仔细检查内置的比较器,因为它们非常强大。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 2015-01-01
        • 1970-01-01
        相关资源
        最近更新 更多