hbase工作---新特性

1.hbase的导入与导出

命令:

//导出
hbase org.apache.hadoop.hbase.mapreduce.Export test_table /opt/hbase-data-back/test_table_back
//增量导出                                                                  //这里的1是版本 //后面两个是时间 
hbase org.apache.hadoop.hbase.mapreduce.Export harve_plate /hdfs/data_back/harve_plate 1 1483200000000 1495123200000

说明:上面都是例子,以增量导入为例

        首先查看表的版本,命令:desc '表名'    就可以查看表的版本

        后面的时间是转化过去的:2017-05-19 00:00:00 1495123200000

    如果想增量导入。自己转化好时间即可

2.查看文件:

    注:上面的路径并不是我最初认为的系统目录,而是hdfs内部的目录。因此在系统中是找不到此文件的。可以通过hdfs的命令查看文件:

   hadoop fs -ls /opt/hbase-data-back/test_table_back

   以我的操作为例。查看导出数据

 

3) 获取hdfs文件到系统

将hdfs中的/opt/hbase-data-back/test_table_back,复制到系统的/opt/hbase-data-back/test_table_back中:

hadoop fs -get /opt/hbase-data-back/test_table_back /opt/hbase-data-back/test_table_back
说明:这个命令的作用是将导出的文件复制一份放到普通目录下面

4) 将备份文件添加到hdfs中

将上面的目录复制到新的机器中,通过put将文件上传到hdfs中去。

hadoop dfs -put localFile hdfsFile

如:把系统的/opt/hbase-data-back/test_table_back上传到hdfs的/opt/hbase-data-back/test_table_back2下。
说明:这个就是将上面(第3步的)普通本文件放到hdfs上。使用的很少

5) 导入:

先创建一张一样的表:

hbase org.apache.hadoop.hbase.mapreduce.Import test_table_back /opt/hbase-data-back/test_table_back

网上有人说要这么写(指定从hdfs获取数据):hdfs://l-master.data/opt/hbase-data-back/test_table_back

但不这么写默认就是从hdfs中获取数据。

后记:

      1.导出的表列族要和创建导入表的列族必须一样,否则导入将失败

      2.在import时可以指定使用bulk的方式,bulk是生成hfile格式的文件,直接导入到Region,无需经历hbase的写数据过程,从而无需消耗memstore,无        需Flush等,更加高效,如果不指定bulk文件路径(hdfs的路径)则会采用hbase 的put和delete API进行写入。

      $ bin/hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>

      使用Import工具前必须先创建表,关于hbase.import.version属性是0.96的功能。
      借鉴参考博文:https://blog.csdn.net/qq_41665356/article/details/80265656

posted @ 2018-10-24 09:50  聚云  阅读(150)  评论(0编辑  收藏  举报