hbase 命令与 hadoop 命令

发布于 2024-11-01 09:36:02 字数 293 浏览 2 评论 0原文

O'Reilly Elephant 书中对 hbase 的一点描述显示了如何使用“hbase”命令行包装器来使用 hbase 运行映射缩减作业。

但是,我们的代码有很长的类路径,因此我们希望使用由 JobConf.setClassByJar 和 'hadoop' 命令启用的 hadoop 的 lib 目录功能。虽然我们可能搞砸了一些事情,但在我们看来,这不适用于 hbase 命令。

普通的hadoop作业可以调用hbase API吗? hbase 命令行到底有什么作用?

(hadoop 0.20.2,hbase对应)

The little bit of description of hbase in the O'Reilly Elephant book shows the use of the 'hbase' command line wrapper to run a map-reduce job using hbase.

However, our code has a long classpath, so we want to use the lib directory feature of hadoop enabled by JobConf.setClassByJar and the 'hadoop' command. While we may have messed something up, it seemed to us that this did not work with the hbase command.

Can ordinary hadoop jobs call the hbase API? Just what does the hbase command-line do?

(hadoop 0.20.2, hbase corresponding)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情独悲 2024-11-08 09:36:02

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

以下是在作业中使用 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);

显然不是完整的片段,但是通过正确的 import 并提供正确的值,您的工作(我只有一个映射器)可以访问 HBase API。

希望有帮助。

You can use the HBase API in a Hadoop job.

Here are some code snippets for using HBase API in a Job.

Imports

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;

This is inside a @Override function in my code

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);

Obviously not complete snippets, but with the right imports and providing the correct values your job (I only had a mapper) can access the HBase API.

Hope that helps.

橘亓 2024-11-08 09:36:02

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

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

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

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

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

Yes, it will work. How we do it is, package everything (including the HBase jar) in a fat jar and run the Hadoop command.

The hbase command line utility can be used for:

  1. Tables access - this lets you scan your tables, run compactions, enable/disable tables, etc.It is like any other database shell, but more powerful because as in my next point

  2. You can run jruby scripts with the command:

    hbase org.jruby.Main <your_script>
    
  3. You can even run your Java stuff while you are in the shell. This can be helpful for printing out cluster properties, etc.
    examples here:
    http://wiki.apache.org/hadoop/Hbase/Shell

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文