Hbase单机部署
需事先准备安装好hadoop 2.x,单机版部署即可。之后,HBase单机部署只需两步:
1. 编辑hosts文件,给本机ip定义一个host name
2. 编辑 conf/hbase-site.xml并添加
```
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
```
3. 修改conf/regionservers, 由于是单机部署,只需要填写之前在hosts文件中定义的host
4. bin/start-all.sh启动HBase,并通过hbase shell 连接hbase,进行测试。
Intellij IDEA用gradle构建工程
使用IDEA 构建一个gradle的空项目
build.gradle中添加hbase client依赖,注意版本与HBase安装版本一致
compile 'org.apache.hbase:hbase-client:1.2.6'
使用HBase api 连接HBase
代码如下:
public static void main(String[] args) throws IOException {
Configuration hConf = HBaseConfiguration.create();
hConf.set("hbase.zookeeper.quorum", "hbaseHost"); //这里使用与HBase主机相同的host
hConf.set("hbase.zookeeper.property.clientPort", "2181");
Connection connection = ConnectionFactory.createConnection(hConf);
Admin admin = connection.getAdmin();
for (TableName tableName : admin.listTableNames()){
System.out.println("Table name is :" + tableName.getNameAsString());
}
TableName tableName = TableName.valueOf("demo");
if(!admin.tableExists(tableName)){
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
HColumnDescriptor colDesc = new HColumnDescriptor("cf");
tableDesc.addFamily(colDesc);
admin.createTable(tableDesc);
System.out.println("Table demo created");
}
}
可以看出HBase client是通过连接Zookeeper来与HBase进行通信的。
调试时一个无限等待的小坑
注意hosts的配置,如果client在连接时,如果HBase主机和client所在主机,关于使用的host 所配置的ip不一致的话,client在连上zookeeper之后,就会陷入无限等待。
比如,HBase 主机(192.168.1.199) hosts配置了127.0.0.1 hbase, regionservers 配置的是hbase, HBase正常启动了。而 Client hosts配置192.168.1.100 hbase。 这时Client在连接时就会陷入无限等待。必须把HBase的host 配置改为192.168.1.100 hbase。