连接到本地HBase

时间:2015-09-08 16:31:28

标签: scala ubuntu hbase

大家好

我尝试开发适用于HBase的Scala应用程序,并面临一个奇怪的问题。

我的环境:

Workstation - Ubuntu 14.04 x64
Java - Oracle JDK 1.7

系统变量: 〜/ .bashsr文件:

export SCALA_HOME=/usr/local/scala/scala-2.10.5
export PATH=$SCALA_HOME/bin:$PATH
export HBASE_HOME=/usr/local/hbase-0.94.18
export HBASE_CONF=/usr/local/hbase-0.94.18/conf
export PATH="$JAVA_HOME/bin:$HBASE_HOME/bin:/usr/local/bin:/usr/local/sbin:$PATH"
export SPARK_HOME=/usr/local/spark-1.3.1-hd2.4
export PATH=$PATH:$SPARK_HOME/bin


对于我的应用程序,我下载并安装了HBase 0.94.18(等同于AWS EMR 3.9.0 AMI的HBase版本)。
HBase配置文件:
1. $ HBASE_HOME / conf / hbase-env.sh包含下一个设置

export HBASE_LOG_DIR=/home/yustas/hbase/logs
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
  1. $ HBASE_HOME / CONF / HBase的-site.xml中

    <configuration>
     <property>
      <name>hbase.rootdir</name>
      <value>file:///home/yustas/hbase/data</value>
     </property>
     <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/yustas/hbase/zookeeper</value>
     </property>
     <property>
      <name>hbase.cluster.distributed</name>
      <value>false</value>
    </property>
    </configuration>
    
  2. 我可以通过命令开始结束我的本地HBase:

    start-hbase.sh
    stop-hbase.sh
    

    另外,我可以通过hbase shell打开shell并创建一个表并在此表中放入一些数据。 我可以通过Web UI查看我的HBase状态:http://localhost:60010/master-status

    Scala计划

    我在 {PROJECT} / src / main / resource 文件夹中有 hbase-site.xml 文件的副本,并将其用作资源。 我尝试运行非常sipmle代码:

    import org.apache.hadoop.hbase.{HTableDescriptor, HColumnDescriptor, HBaseConfiguration}
    import org.apache.hadoop.hbase.client.{HTable, HBaseAdmin}
    
    object DataLoad {
      var tableName: String = "table"
      var tableCF : String = "field_set"
      var hbaseAdmin: HBaseAdmin = null
    
      def main(args: Array[String]): Unit = {
        val conf = HBaseConfiguration.create()
        hbaseAdmin = new HBaseAdmin(conf)  //program stops responding in this line, and just hanging out.
        if(!hbaseAdmin.tableExists(tableName)){
          val tdesc = new HTableDescriptor(tableName)
          tdesc.addFamily(new HColumnDescriptor(tableCF));
          hbaseAdmin.createTable(tdesc)
        }
        println("HBase: table " + tableName + " available state is " + hbaseAdmin.isTableAvailable(tableName))
      }
    }
    

    问题

    我的代码已经编译并成功运行,但在行 hbaseAdmin = new HBaseAdmin(conf)程序停止响应此行,只是挂出。我等了~5分钟 - 没有变化。

    我想知道我哪里有虫子?我今天在这个和其他特定网站上找不到这个问题。

2 个答案:

答案 0 :(得分:0)

尝试在hbase-site.xml中设置此属性

<property>
 <name>hbase.master</name>
 <value>localhosts:60000</value>
</property>
<property>
 <name>hbase.zookeeper.quorum</name>
 <value>localhost</value>
</property>
<property>
 <name>hbase.zookeeper.property.clientPort</name>
 <value>2181</value>
</property>

答案 1 :(得分:0)

检查您的hbase是否运行正常;

ps -ef | grep hbase,如果hbase没有运行,请执行

$HBASE_HOME/bin/start-hbase.sh

可能是hbase没有运行