基于HBase的工业大数据存储实战汽车can总线物品追踪系统
随着工业4.0时代的到来,工业互联网和企业的智能化、信息化都将不断推进,传统的工业实时数据库和关系数据库已经难以完全胜任工业大数据的存储,以HBase为代表的NoSQL数据库正在蓬勃发展,其完全分布式特征、高性能、多副本和灵活的动态扩展等特点,使得HBase在工业大数据的存储上拥有强大的优势,打破了流程工业生产中的数据壁垒效应,促进了生产水平和管理水平的大幅提升。本期格物汇,就来给大家介绍如何利用HBase解决汽车can总线物品追踪系统中面板特征查询的问题。
了解HBase
HBase是一个高可靠性、高性能、面向列、可伸缩的大规模分布式存储系统。它可以帮助我们在廉价PC Server上搭建起结构化存储集群,即使处理成千上万行和列组成的大型数据也能保持高效。与Google Bigtable不同,HBASE利用Hadoop HDFS作为其文件存储系统,而不是GFS;同样地,它使用MapReduce进行海量数据处理,而不是Bigtable中的Chubby协同服务。
与传统数据库相比,HBASE具有以下优势:
线性扩展,可以通过添加更多节点来支持不断增长的数据量。
数据存储在hdfs上,有健全备份机制。
通过Zookeeper协调服务快速访问速度。
案例分析:汽车can总线物品追踪系统
为了更好地展示如何运用HBase,我们将以某个半导体显示企业为例,该公司需要设计一个快速查找面板特征系统。在这个场景中,每张面板有3.2k大小,并被分为不同的组,每个组包含从1到10000张面板。业务需求主要包括根据组id查找所有相关面的信息以及根据组id+面板id查找具体面的信息。
原有方案:MySQL+OSS
过去,由于业务量较小,他们使用MySQL及OSS(对象存储)来管理这些数据。这导致了两个问题:一是无法有效管理大量相同内容,但每个内容可能只出现一次的情况;二是因为MySQL不支持动态列,这意味着每个符合条件但含有多张面的组都必须创建单独的一行记录,从而导致查询过程过于复杂且耗时长。
解决方案:采用HBase
为了解决这些问题,大数据团队选择使用三个关键功能——动态列、高版本控制能力以及MOB(Medium-Sized Object)-这三项技术重新设计了整个架构:
将每个group_id作为RowKey,同时打开MOB功能,以便对小文件进行优化,如下所示:
create 'glass', {NAME=>'c', IS_MOB=>true, MOB_THRESHOLD=>2048}
使用Put方法插入新记录:
Put put = new Put(groupId.getBytes());
// 添加多条记录
put.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes(), feature1.getBytes());
// ...
table.put(put);
使用Get方法获取所有相关faces:
Get get = new Get(groupId.getByte());
Result result = table.get(get);
// 获取所有column家族CF_DEFAULT下的values
List<Cell> cells = result.getColumnCells(CF_DEFAULT, null);
for (Cell cell : cells) {
byte[] glassIdBytes = Bytes.copy(cell.getRow());
String glassId = Bytes.toString(glassIdBytes);
byte[] featureBytes = Bytes.copy(cell.getValue());
String featureValue; // 根据实际情况解码featureValue
}
以上就是基于汽车Can总线物品追踪系统中如何运用Hbase提高查询效率的一个案例分析。此外,对比对象存储云与建立表格时K/V键值对模型之间,以及稀疏表、SQL查询能力等方面,我们发现采用这种方法不仅能够提供更快捷准确的地理位置定位,还能显著降低成本并提供更好的扩展性,为行业内未来的发展奠定坚实基础。