我使用的是hbase.1.1.2版本。我可以从hbase shell和hbase restapi做任何事情。我有一个vmware和ubuntu,其中hadoop&hbase已经配置好了,我正在windows机器上执行java程序。
note:- i 没有安装单独的zookeeper我正在使用hbase内置zookeeper。
jps输出:-
3824 SecondaryNameNode
4194 NodeManager
7154 HMaster
9092 Jps
3300 NameNode
3510 DataNode
3975 ResourceManager
下面是my hbase-site.xml:-
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://XX.XX.XX.XX:9000/hbase</value>
</property>
//Here you have to set the path where you want HBase to store its built in zookeeper files.
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/prag/Desktop/hadoop_data/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
- xx.xx.xx.xx是我安装了hbase的ubuntu vm的ip地址,我可以从windows ping。
下面是我的java代码:-
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class HBaseConnection {
public HBaseConnection() {
}
public static void main(String[] args){
try{
Configuration config=HBaseConfiguration.create();
HBaseAdmin.checkHBaseAvailable(config);
config.set("hbase.zookeeper.quorum", "00.00.00.00");
}catch(Exception e){
e.printStackTrace();
}
}
}
下面是我从java程序中得到的一个例外:-
org.apache.hadoop.hbase.ZooKeeperConnectionException: Can't connect to ZooKeeper
at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2813)
at com.sag.hbase.HBaseConnection.main(HBaseConnection.java:17)
Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1073)
at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2806)
... 1 more
2条答案
按热度按时间xjreopfe1#
为了从客户端连接到hbase,客户端还需要知道zookeeper仲裁正在哪里运行。这与zookeeper连接信息相同。zookeeper默认使用端口
2181
,因此在配置中,仲裁配置应设置为XX.XX.XX.XX:2181
:当然,用真正的ip地址替换xxs。可以使用hbase zkclki命令验证设置。在打电话之前,您还需要移动这条线路
checkHBaseAvailable
.zf9nrax12#
为了帮助其他人,我想回答我的问题。解决这个问题的方法是,你不应该在你的主机文件中有localhost的条目。