HBase系列 1:开发环境搭建

Hbase单机部署

需事先准备安装好hadoop 2.x,单机版部署即可。之后,HBase单机部署只需两步:
1. 编辑hosts文件,给本机ip定义一个host name
2. 编辑 conf/hbase-site.xml并添加

```
 
     hbase.rootdir
     hdfs://localhost:9000/hbase
 
```

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。

你可能感兴趣的:(java,hbase)