HBase实操 | 如何使用HBase存储图片

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介:
1.文档编写目的



Fayson在前面的文章中介绍了《如何使用HBase存储文本文件》和《如何使用Lily HBase Indexer对HBase中的数据在Solr中建立索引》,实现了文本文件保存到HBase中,并基于Solr实现了文本文件的全文检索。如果我们碰到的是图片文件呢,该如何保存或存储呢。本文主要描述如何将图片文件转成sequence file,然后保存到HBase。



内容概述

1.文件处理流程

2.准备上传文件的Java代码

3.运行代码

4.Hue中查询验证



测试环境

1.RedHat7.4

2.CM5.14.3

3.CDH5.14.2

4.集群未启用Kerberos



2.图片处理流程
5e587c5a7b0069012d84801b8d4a20155ed631bc
1.如上图所示,Fayson先在本地准备了一堆图片文件,并上传到HDFS。
47ab49be47d04e9f955b443848ec836915742315
上传到HDFS

07523088efdd5be2c64c6a16f057dc826fcdf40d

2.然后通过Java程序遍历所有图片生成一个Sequence File,然后把Sequence File入库到HBase,在入库过程中,我们读取图片文件的文件名作为Rowkey,另外将整个图片内容转为bytes存储在HBase表的一个column里。


3.最后可以通过Hue来进行查看图片,当然你也可以考虑对接到你自己的查询系统。




3.准备上传文件的Java代码




1.首先是准备Maven文件


34b57de8d64b1eb6cd256a4853621542aa4a3742

239d6a4c773feabdcb1566ba3b200ba7bd116f22

fd9a9fa1e066ef7544ab1bda6fc47e0a690d7fe3


.2、准备上传文件到HBase的Java代码


1f78b3e9b6164690961f09cefb06772be9d1f868

241c4fe5fcad21b19a08eb1f137713c98c1b7114

52f8323c1801478162e3f744e7e1b2bbaa19dd6a

447db976dc2c2833d5bc78459b7f830f58076e01

0d73dc6331c790669d8511620e50843f28fac6c2


4.运行代码




1.首先我们在HBase中建一张表用来保存文本文件


978dbd69ebbcf02a6a3483135abfd7b1c85d8f35

2.注意修改代码中的配置项,如文本文件所在的HDFS目录,集群的Zookeeper地址等。将代码打成jar包并上传到集群服务器节点。该过程略。


3.准备执行脚本


2.注意修改代码中的配置项,如文本文件所在的HDFS目录,集群的Zookeeper地址等。将代码打成jar包并上传到集群服务器节点。该过程略。


3.准备执行脚本


8b70dc0bbeb065f4302c07d5ef15867edbb8698a


4.执行脚本


ddf18c2e8aa294bbdcdd37a5382f9c13137f51f1


脚本执行完毕,成功入库


13015e7ef2e064be38d45c2c6bf8852fe4c08056


5.使用HBase shell检查,入库12条,全部入库成功。


c8508176c4481fd4a076cd949461c8ceb248252f


5.Hue中查询验证




1.从Hue中进入HBase的模块


ec52462f124106ffd717d6b0533f6be47e20709b


单击某个column,可以查看整个图片


d3566df9b3dee58b20f5f19e4c4630d763f59b4d


2.查询某一个Rowkey进行测试


ac491ecb5be6be41bca934e87ab665d2d8cc1590


本文所使用的代码源码GitHub地址:

https://github.com/fayson/cdhproject/blob/master/hbasedemo/src/main/java/com/cloudera/hbase/SequenceFileTest.java


d3f2f0da5b6761a64c7049db7719525a2c492a0c

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。


096973d69f34b1380151180fd0a8ff2cade5bced


HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入:https://dwz.cn/Fvqv066s

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
231 0
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的重要机制和原理的存储原理
HBase是一个分布式数据库系统,基于Google的BigTable和Apache Hadoop的HDFS构建。它提供了一个高性能、可扩展的数据库平台,适用于大规模的数据存储和处理。在阿里云开发者社区中,很多开发者都会使用HBase进行数据存储和处理。本文将介绍HBase的存储原理和重要机制。
339 0
|
存储 前端开发 Cloud Native
基于 HBase 快速构架海量订单存储系统|学习笔记
快速学习基于 HBase 快速构架海量订单存储系统
343 0
基于 HBase 快速构架海量订单存储系统|学习笔记
|
存储 缓存 分布式计算
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
108 0
Hadoop原理与技术——Hbase实操
|
存储 搜索推荐 Java
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
快速学习如何基于 HBase 构建图片、视频数据的统一存储检索方案
746 0
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
|
存储 缓存 NoSQL
HBase与HDFS之间的WAL(HLog)存储机制答疑解惑
HBase与HDFS之间的WAL(HLog)存储机制答疑解惑
|
存储 分布式数据库 Hbase
《实战-如何基于HBase构建图片视频数据的统一存储检索方案》电子版地址
实战-如何基于HBase构建图片视频数据的统一存储检索方案
132 0
《实战-如何基于HBase构建图片视频数据的统一存储检索方案》电子版地址
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
82 0