使用Perl Rest方法操作HBase
2015-10-16 14:54:12 阿炯

HBase是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。

它介于nosql和rdbms之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务。主要用来存储非结构化和半结构化的松散数据,非常适合来存储大量的记录(结构或非结构化的),尤其在记录超过10亿后,读写都没有大幅波动。

本文通过从mysql中向hbase转移老数据的示例,来介绍HBase::JSONRest的用法,也为那些想在perl环境操作hbase的人提供一些帮助,尽管hbase的生态圈中难觅perl的身影。

这里提供了两份脚本,传统的单进程流水化式的和多线程版本,后者在实际使用中(从mysql中读取61万条数据插入到hbase中)比前者效率高出3倍左右(同机非同时测试),单进程用时4356秒,多线程用时1102秒,另外这个时间是脚本的用时时间。当向hbase每写入一万条记录时,前者平均用时:70秒,后者平均用时:19秒。另外使用top工具观察cpu使用率,多线程比单进程的高出100%。

测试情况大致如下:
一台dell optiplex 990台式机(i5 4core),8GB内存。两块sata硬盘,分布存放了三台virtualbox debian 7的虚拟机,操作系统为:Debian 7.6 x64。
HBase:上述三台虚拟机为datanode,宿主的台式机为master。mysql数据库也位于宿主的台式机上。

hbase表结构设计:单列族、多列。

rowkey是文章被采集到的日期时间为数字串加4位随机数。

另外,这里的多线程中使用了队列。

下载:

perl从mysql写入hbase单进程版本


perl从mysql写入hbase多线程版本