基于HBase的工业大数据存储实战物品追踪系统中的多种通讯协议选择

基于HBase的工业大数据存储实战物品追踪系统中的多种通讯协议选择

随着工业4.0时代的到来,工业互联网和企业的智能化、信息化都将不断推进,传统的工业实时数据库和关系数据库已经难以完全胜任工业大数据的存储,以HBase为代表的NoSQL数据库正在蓬勃发展,其完全分布式特征、高性能、多副本和灵活的动态扩展等特点,使得HBase在工业大数据的存储上拥有强大的优势,打破了流程工业生产中的数据壁垒效应,促进了生产水平和管理水平的大幅提升。本期格物汇,就来给大家介绍HBase数据库及格创东智相关实战案例。

了解HBase

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它利用Hadoop HDFS作为其文件存储系统,将海量数据处理成结构化格式,从而实现快速查询与高效分析。与Google Bigtable相比,虽然两者都是基于Bigtable设计,但有显著差异:前者采用Apache Hadoop生态系统,而后者依赖于Google自家的技术栈;前者使用ZooKeeper协调服务,而后者则是Chubby。

与传统数据库相比,HBASE具备以下几重优势:

线性扩展:随着数据量增多,可以通过节点扩展进行支撑。

数据持久性:通过Zookeeper协调查找并维护大量行记录,同时提供良好的容错能力。

读写速度快:由于其架构设计,它能够提供极佳的事务处理能力。

HBase实战案例

为了更好地展示如何在人工智能场景中应用HBase,我们以某半导体显示企业为案例,并分析如何利用HBase设计一个快速查找面板特征系统。在该公司业务场景中,每张面板含有3.2k字节二进制特征,这些特征被分组存在不同的组中。我们重点关注两个查询需求:

根据组id查找该组下所有面的面板;

根据组id加上面板id查找某个具体面的特色;

原有方案是MySQL+OSS(对象存储),但这导致了两个问题:

数据分散在MySQL表中的不同行内,这样对于需要访问众多行的情况会造成长时间延迟;

MySQL不支持动态列,所以同一群面的内容被拆分成多行记录。

针对这些问题,大数据团队决定采用新的解决方案——使用Hbase。这涉及到三个关键功能:

动态列允许万亿行数百万列数;

多版本控制可以追踪每次修改;

MOB(Medium-Sized Object)功能适用于小文件,如图片或短视频等,对于小尺寸文件提供低延迟读写能力以及检索力度强,有利于水平扩展。

实施方案

首先,他们创建名为glass表并打开MOB功能:

create 'glass', {NAME=>'c', IS_MOB=>true, MOB_THRESHOLD=>2048}

然后,他们重新设计表结构,将每个玻璃ID作为Rowkey,并将MOB Threshold设置为2048字节,即任何超过这个大小的小文件都会被当作MOB处理。这意味着所有小于10MB且未超过2048字节的小型对象都能直接保存在单个文件中,不再需要拆分成多个较小部分。此外,由于使用的是一个表代替之前三张表,现在可以直接访问整个玻璃ID所对应的一系列相关属性,而不是像之前那样从MySQL获取group ID,然后再去OSS获取实际特征值,从而减少了操作步骤并提高了整体效率。

最后,在代码层面,只需简单调整Put方法即可完成新旧方案之间转换:

Put put = new Put(groupId.getBytes());

put.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes(), feature1.getBytes());

put.addColumn(CF_DEFAULT.getBytes(), glassId2.getBytes(), feature2.GetBytes());

// ...

table.put(put);

用户如果要根据Group ID获得所有玻璃ID,可以通过Get方法轻松实现:

Get get = new Get(groupId.getByteS());

Result result = table.get(get);

List<String> ids = Lists.newArrayList();

for (Cell cell : result.rawCells()) {

byte[] idBytes = Bytes.copy(cell.getRowArray(), 0, cell.getRowOffset() + cell.getRowLength() - Bytes.SIZEOF_BYTE);

String id = Bytes.toString(idBytes);

ids.add(id);

}

return ids;

总结来说,本次改进主要是在优化现有的业务需求,以更有效地管理海量复杂关系型网络图形上的各种通讯协议,以及满足未来可能出现的大规模、大复杂性的要求。这种模式不仅简化了原始三张表成为一张,还进一步提高了查询速度,并使得整个过程更加高效。此外,该项目还展示了一种如何运用工具如Apache Hbase来优雅地解决类似的问题集,同时保持成本最低。一旦实施,该策略预计能够显著提升业务流程中的执行速度,为客户带来更多价值。