我尝试开发适用于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="
$ 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>
我可以通过命令开始结束我的本地HBase:
start-hbase.sh
stop-hbase.sh
另外,我可以通过hbase shell打开shell并创建一个表并在此表中放入一些数据。 我可以通过Web UI查看我的HBase状态:http://localhost:60010/master-status
我在 {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分钟 - 没有变化。
我想知道我哪里有虫子?我今天在这个和其他特定网站上找不到这个问题。
答案 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没有运行