基于HBase的工业大数据存储实战现场总线技术应用200例在物品管理中的应用
随着工业4.0时代的到来,工业互联网和企业的智能化、信息化都将不断推进,传统的工业实时数据库和关系数据库已经难以完全胜任工业大数据的存储,以HBase为代表的NoSQL数据库正在蓬勃发展,其完全分布式特征、高性能、多副本和灵活的动态扩展等特点,使得HBase在工业大数据的存储上拥有强大的优势。今天,我们就来详细介绍HBase数据库及其在格创东智相关实战案例中的应用。
了解HBase
HBase是一个高可靠性、高性能、面向列、可伸缩的大型分布式存储系统。它利用Hadoop HDFS作为其文件存储系统,并且能够处理由成千上万行和列组成的大型数据集。与Google Bigtable不同,HBASE使用Apache ZooKeeper作为协同服务,而不是Chubby。
与传统数据库相比,HBASE具有以下几大优势:
线性扩展:随着数据量增加,可以通过节点扩展进行支撑。
数据存储在hdfs上,备份机制健全。
通过zookeeper协调访问速度快。
HBase实战案例
为了更好地理解如何运用HBase在人工智能场景中,我们将以某半导体显示企业为案例分析格创东智大数据团队是如何设计出一个快速查找面板特征系统。
该公司业务场景中包含了很多面板相关特征数据,每张面板数据约为3.2k字节,这些面板被分成了不同的组,每个面板属于某个组。在这个业务场景下,我们需要根据组id查找该组下的所有面板,以及根据组id+面板id查找某个具体面的屏幕上的特定信息。这两种查询需求对现有的MySQL+OSS方案提出了挑战,因为每个群体包含的玻璃数量非常不均匀,从1到10000之间变化,因此 MySQL表中存在大量冗余,即使是相同群体也会占用大量空间。此外,由于每次查询都需要从MySQL读取大量行并从OSS获取相应特征,这导致整个查询时间长达10秒左右,对于快速发展的事业来说是不够用的。
解决方案
为了解决这些问题,大数据团队采用了基于MOB(Medium-Sized Object)功能重新设计了这个方案。由于MOB支持小文件存储(如图片或视频),可以提供低延迟读写能力,同时保证一致性和检索能力。因此,他们选择使用MOB功能创建名为glass表,并开启动态列功能,将group_id作为Rowkey,同时打开MOB功能,如下所示:
create 'glass', {NAME=>'c', IS_MOB=>true, MOB_THRESHOLD=>2048}
这样做允许我们将group_id用于rowkey,并且设置了MOB_THRESHOLD=2048,即当任何列值超过2048字节时,该列被视为小文件而不是普通文件。这意味着即使有很大的group_id,它们也能有效地被管理并保持良好的性能。此外,由于只有一行记录用于一个group_id,它减少了之前方案中的冗余,并简化了一次查询操作所需扫描过滤器数量,从而提高了效率。
性能测试
比较属性对象存储云(Hbase建模能力KVKV、表格、稀疏表、SQL全文索引/时空/时序图查询前缀查找前缀查找过滤器索引性能优先级特别适合小对象低延迟成本按流量请求次数计费托管式高并发吞吐量适合访问频率低场景扩展性优先通用<10MB StringCF_DEFAULT=c;我们看到使用hbase mob 特性来保存小于10MB 的对象,比直接使用对象存储有几个优势。在实际操作中,无论是否启用mob 功能,插入方法与正常方式相同,只是在配置方面进行调整。
最后,我们看到了用户如何通过get方法根据group id 获取所有face_data:
Get get = new Get(groupId.getBytes());
Result result = table.get(get);
List<Cell> cells = result.getColumnCells(CF_DEFAULT);
for (Cell cell : cells) {
byte[] valueBytes = cell.getValueArray();
// 处理valueBytes内容
}
总结一下,本期格物汇介绍了基于hbase实现的一个简单但强大的解决方案,它结合了解决两个主要问题:(1) 提高复杂性的查询效率;(2) 减少对mysql资源消耗以及简化后续逻辑处理流程;这项技术革新极大地提升了行业生产水平及生产管理水平,为未来更多复杂任务奠定坚实基础。