博客园  :: 首页  :: 联系 :: 管理

HBase(三): Azure HDInsigt HBase表数据导入本地HBase

Posted on 2016-09-03 05:46  天戈朱  阅读(1185)  评论(0编辑  收藏  举报

目录:

  • hdfs 命令操作本地 hbase
  • Azure HDInsight HBase表数据导入本地 hbase

hdfs命令操作本地hbase:


  • 参见  HDP2.4安装(五):集群及组件安装 , 创建本地 hbase集群后,使用hadoop hdfs 命令在访问 hbase 存储数据时,数据在hdfs文件中的路径依赖于 hbase-site.xml 配置中hbase.rootdir参数,默认如下图:
  • hdp2.4默认的目录地址为: hdfs://mycluster/apps/hbase/data ,使用 hdfs 命令如下效果(绝对地址或相对地址),目录太深,操作不方便,可修改配置
  • 将目录地址修改为:/hbase 表示hdfs主目录的相对路径,完整的路径由 hdfs core-site.xml配置中 fs.defaultFS 参数决定,如下图
  • 修改完目录参数后,重启依赖于该参数的相关服务, 在 hdfs 中访问hbase路径如下:
  • 注意: 修改 root.dir 参数后,原hbase数据库中已经存在的数据并未移过来,需要手工将 /hbase/data/default 目录 copy 至新的 hdfs 目录下,再用 hbase hbck -repair 命令进行修复,详细见下面的介绍

Azure HDInsight HBase表数据导入本地 hbase


  • 不同hbase群集之间数据导入导出的方式有很多, 这节介绍效率最高的一种方法,
  • 在HDinsight hbase集群上,通过 hdfs dfs -du -h /hbase/data/default  以如下图大小为3+G的数据作为测试例子进行验证
  • 第一步使用 hdfs 命令将 hdinsight hbase 中要复制的表数据文件导出至本地,导出命令及文件如下图:
  • 命令: hdfs dfs -get /hbase/data/default/TrackLog c:/zhu
  • 将下载到HDInsight本地的文件 copy 至本地 linux 机器的任一目录,如:/zhu,通过然后通过 hdfs 命令 put 至 hdfs :
  • 命令:hdfs dfs -put /zhu/TrackLog hdfs://mycluster/hbase/data/default , 如下图:
  • 此时,物理文件虽然存在,但hbase 的metadata表中并没有注册表的信息,通过如下的命令处理,切换到 hbase安装目录 bin 目录下
  • 命令:./hbase hbck -repair -ignorePreCheckPermission   执行成功后,如下图:
  • 进入hbase shell   查看结果,hbase 表已经成功创建
  • 查询表数据,如下图则OK