重新启动时删除Hbase数据

时间:2018-06-30 22:40:17

标签: java hbase

我不确定发生了什么。我昨天使用以下代码在hbase中创建了表。

我使用此命令启动hbase。

hbase-2.0.0/bin$ ./start-hbase.sh

创建表的代码

private void createStudentTable(String workspace) {
        List<ColumnFamilyDescriptor> colms = new ArrayList<>();
        colms.add(ColumnFamilyDescriptorBuilder.of("id"));
        colms.add(ColumnFamilyDescriptorBuilder.of("name"));


        TableDescriptor desc = TableDescriptorBuilder.newBuilder(TableName.valueOf(workspace + "_an_data"))
                  .setColumnFamilies(colms)
                  .build();

        hbaseAdmin.createTable(desc); //class variable 
    }

我使用命令关闭了hbase

hbase-2.0.0/bin$ ./stop-hbase.sh

关闭我的系统,第二天醒来,启动hbase。

登录到shell,运行list命令会得到结果

TABLE                                                                           
0 row(s)

我误会了吗? hbase不是文件内存数据库吗?它在内存中吗?

我在DBeaver中使用了phoenix驱动程序

2 个答案:

答案 0 :(得分:1)

默认情况下,hbase.rootdir位于/ tmp中,每次重启时都会将其清除。更新hbase-site.xml以使用您选择的目录。

答案 1 :(得分:0)

举例说明@gagan的答案

配置文件:/hbase-2.0.0/conf/hbase-site.xml

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/pasu/apps/hbase-2.0.0</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/pasu/apps/hbase-2.0.0/data</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
</configuration>