【问题标题】:hbase command versus hadoop commandhbase 命令与 hadoop 命令
【发布时间】:2011-04-12 21:43:00
【问题描述】:

O'Reilly Elephant 书中对 hbase 的一点描述显示了使用“hbase”命令行包装器使用 hbase 运行 map-reduce 作业。

但是,我们的代码有一个很长的类路径,所以我们想使用 JobConf.setClassByJar 和“hadoop”命令启用的 hadoop 的 lib 目录功能。虽然我们可能搞砸了,但在我们看来,这不适用于 hbase 命令。

普通的hadoop作业可以调用hbase API吗? hbase 命令行是做什么的?

(hadoop 0.20.2,hbase对应)

【问题讨论】:

    标签: hadoop hbase


    【解决方案1】:

    您可以在 Hadoop 作业中使用 HBase API。

    这里有一些代码 sn-ps 用于在 Job 中使用 HBase API。

    进口

    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.util.Bytes;
    

    这是在我的代码中的 @Override 函数中

    private HTable hTable = null;
    Configuration hConfig = HBaseConfiguration.create();
    hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_QUORUM, zkQuorum);
    hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_CLIENTPORT, zkclientPort);
    hTable = new HTable(hConfig, hbCube);
    ...
    hTable.put(subPuts);
    

    显然没有完成 sn-ps,但使用正确的 imports 并提供正确的值,您的工作(我只有一个映射器)可以访问 HBase API。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      是的,它会起作用的。我们的做法是,将所有内容(包括 HBase jar)打包在一个 fat jar 中并运行 Hadoop 命令。

      hbase 命令行实用程序可用于:

      1. 表访问 - 这使您可以扫描表、运行压缩、启用/禁用表等。它与任何其他数据库 shell 一样,但更强大,因为就像我的下一点一样

      2. 您可以使用以下命令运行 jruby 脚本:

        hbase org.jruby.Main <your_script>
        
      3. 您甚至可以在 shell 中运行您的 Java 内容。这有助于打印出集群属性等。 这里的例子: http://wiki.apache.org/hadoop/Hbase/Shell

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        • 2017-04-17
        • 2014-08-15
        • 1970-01-01
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多