Hbase作为Hadoop生态圈的常用数据库,常常需要从外部数据源导入其他的数据进来,而数据导入的几种方式,之前已经为大家做了基本的介绍。同时,为了提升工作效率,也有一些工具可用。今天的大数据培训分享,我们就来介绍一下Hbase常用数据导入工具。
HBase提供了几种数据迁移工具,其中基于API调用的有CopyTable,Export&Import。基于写HDFS的有distcp,snapshot。
从性能角度来说,CopyTable足以支撑10T以下的数据迁移,这里我们也就以CopyTable为例来具体说明:
CopyTable是HBase提供的一个数据同步工具,可以用于同步表的部分或全部数据。CopyTable通过运行Map-Reduce任务从源表读出数据再写入到目标表。
CopyTable使用只需要运行一个命令即可,命令示例:
./bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable-Dhbase.client.scanner.caching=200-Dmapreduce.local.map.tasks.maximum=16-Dmapred.map.tasks.speculative.execution=false--peer.adr=$ZK_IP1,$ZK_IP2,$ZK_IP3:/hbase$TABLE_NAME
Hbase CopyTable操作示例
1.安装HBase
CopyTable依赖于hadoop mapreduce。如果源HBase集群中开启了mapreduce则可以直接在源集群上运行。否则可以在另一个hadoop集群上安装HBase客户端并将hbase-site.xml文件中的zk地址指向源集群。
也可以单机运行,单机运行时,不需要安装hadoop,只要安装了HBase就可以使用hadoop的本地模式运行CopyTable。
2.创建目标表
使用CopyTable同步数据前,需要确保目标表存在。如果不存在需要先创建目标表。强烈建议根据数据的分布情况对目标表进行预分裂,这样能够提高写入速度。
3.其他准备工作
需要将运行CopyTable的机器ip加入HBase的ip白名单,确保可以访问到HBase。
需要修改hbase-site.xml文件中的zk地址指向源集群。
准备工作完成后,就可以运行CopyTable进行数据同步了。
命令示例
./bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable-Dhbase.client.scanner.caching=200-Dmapreduce.local.map.tasks.maximum=16-Dmapred.map.tasks.speculative.execution=false--peer.adr=$ZK_IP1,$ZK_IP2,$ZK_IP3:/hbase$TABLE_NAME
参数说明
CopyTable常用选项说明如下:
startrow开始行。
stoprow停止行。
starttime时间戳(版本号)的最小值。
endtime时间戳的最大值。如果不指定starttime,endtime不起作用。
peer.adr目标集群的地址。格式为:hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent
families要同步的列族。多个列族用逗号分隔。
all.cells删除标记也进行同步。
更多参数参见官方文档:http://hbase.apache.org/book.html#copy.table
除copytable的参数外,以下选项也建议在命令中进行设置:
(1)对于单机运行的情况,需要指定mapreduce.local.map.tasks.maximum参数,表示并行执行的最大map个数。不指定的话默认是1,所有任务都是串行执行的。(2)hbase.client.scanner.caching建议设置为大于100的数。这个数越大,使用的内存越多,但是会减少scan与服务端的交互次数,对提升读性能有帮助。
(3)mapred.map.tasks.speculative.execution建议设置为false,避免因预测执行机制导致数据写两次。
另外,如果是在E-mapreduce集群上执行CopyTable,需要注意E-mapreduce默认的hbase-site.xml文件中配置了phoenix,所以需要导入phoenix的jar包,否则运行时会报错:
-libjars$HBASE_HOME/lib/phoenix-$PhoenixVersion-HBase-$HBaseVersion-server.jar
关于大数据培训,Hbase常用数据导入工具,以上就为大家做了简单的介绍了。在Hbase的几种数据导入工具当中,CopyTable算是操作简便也高效的方式之一,10T以下的任务都可以尝试。成都加米谷大数据,专业
大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习资料可联系客服获取!