基于HBase的工业大数据存储实战物品现场总线传输介质应用
随着工业4.0时代的到来,工业互联网和企业的智能化、信息化都将不断推进,传统的工业实时数据库和关系数据库已经难以完全胜任工业大数据的存储,以HBase为代表的NoSQL数据库正在蓬勃发展,其完全分布式特征、高性能、多副本和灵活的动态扩展等特点,使得HBase在工业大数据的存储上拥有强大的优势,打破了流程工业生产中的数据壁垒效应,促进了生产水平和管理水平的大幅提升。本期格物汇,就来给大家介绍HBase数据库及格创东智相关实战案例。
了解HBase
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它利用普通硬件配置就能处理由成千上万行和列组成的大型数据。与Google Bigtable有很多不同之处,比如使用的是Hadoop HDFS而不是GFS,以及通过MapReduce来处理海量数据,而不是Chubby协同服务。
与传统数据库相比,HBASE具备多重优势:
线性扩展,可以根据需求增加节点。
数据存储在hdfs上,有健全备份机制。
通过zookeeper协调访问速度快。
HBase实战案例
为了更好地展示如何利用HBase在人工智能场景下进行应用,我们将以某半导体显示企业为例,分析格创东智大数据团队是如何设计一个快速查找面板特征系统的。
案例背景
该公司业务场景中含有大量面板相关特征,每张面板约3.2k字节,这些面板又被分组,每个面板属于某一组。现有的业务需求主要包括两个方面:
根据组id查找该组下的所有面板;
根据组id+面板id查找具体面的数据;
原有方案:MySQL+OSS
之前由于业务量较小,用MySQL以及OSS进行存储。相关表主要包括group表(group_id)及glass表(glass_id, group_id, feature)。现在需要根据face_id查询特定玻璃,但这种设计存在问题:每个玻璃可能包含10000张图片,所以这个方案会导致MySQL中出现许多冗余行,并且查询效率低下。
HBase解决方案
针对这些问题,我们可以采用以下步骤:
将group id作为Rowkey创建表并打开MOB功能,如create 'glass', {NAME=>'c', IS_MOB=>true, MOB_THRESHOLD=>2048};
使用Put插入或更新单元格;例如put.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes(), feature1.getBytes());
用户可以使用Get方法获取所有匹配Rowkey的一切列值,如get(groupId.getBytes())
这样我们就用了一张表替换了原来的三张表,同时保持了良好的查询效率。在实际操作中,将会发现这套解决方案不仅能够满足当前业务需求,而且还能适应未来可能出现的问题,因为其架构具有很强的地图扩展能力。