一、 背景
最近再弄Hbase,Hbase底层数据都是Bytes数组来存储半结构化,非结构化数据。那么是否可以把Oracle中Blob数据存储到Hbase中呢?不如实战一把。
使用工具kettle
使用kettle打通Oracle,Hbase。用kettle抽取Oracle中图片数据,再接入Hbase中。(以前使用kettle把数据接入到Hadoop的文本中,再调用load命令完成入hive库改进 kettle直接入hive库,效率提升20多倍)。本次不同了,不能用数据文件作为过渡。对数据抽取工具的依赖加大了,所以数据抽取工具需要考究。
二、 架构图

三、 配置说明
1) 配置hadoop集群
需要考虑hadoop的版本,我这边hadoop2.8,hbase2.0。选用kettle 8.3。Kettle主界面
“工具栏”—>“Hadoop Distribution”—> “HortonWorks HDP 3.0.X”

安装目录:
data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp30
配置:core-site.xml,hbase-site.xml,hdfs-site.xml, hive-site.xml,mapred-site.xml,yarn-site.xml文件,也可以直接在hadoop中拷出来覆盖。


选中的选项重点关注。点击“测试”。重点关注的地方配置正确就行了。
2) 配置数据源

3) 配置“映射”到hbase表
Hbase中建表:create 'T_IMG', 'info';建一个T_IMG表,info列族。按照图中顺序配置(参考官方文档)


四,数据接入到Hbase中

数据源5条数据,Hbase中也接入了5条数据。
五、验证
我这边验证方案简单,图片是否损坏。可以用java来查询hbase中图片,这里把Hbase图片再抽回Oracle中看图片是否完整。回抽过程配置雷同。


图片是完整的。。。。。
结束语:
Oracle中5条图片数据,通过kettle抽取到hbase中, 再接回到Oracle。图片数据并没有损坏。




