基于HBase的工业大数据存储实战
HBase解决方案:
MySQL + OSS的设计方案有两个问题:第一,原本属于同一条数据的内容由于数据本身大小的原因无法存储到一行里面,导致后续查下需要访问两个存储系统;第二,由于MySQL不支持动态列的特性,所以属于同一个面板组的数据被拆成多行存储。
针对这两个问题,格创东智的大数据团队进行了分析,认为这是 HBase 的典型场景,原因如下:
——HBase 拥有动态列的特性,支持万亿行,百万列;
——HBase 支持多版本,所有的修改都会记录在 HBase 中;
——HBase 2.0 引入了MOB(Medium-Sized Object)特性,支持小文件存储。
HBase 的 MOB 特性针对文件大小在 1k~10MB 范围的,比如图片,短视频,文档等,具有低延迟,读写强一致,检索能力强,水平易扩展等关键能力。
格创东智的大数据团队使用这三个功能重新设计上面 MySQL + OSS 方案。结合应用场景的两大查询需求,将面板组 id 作为 HBase 的 Rowkey,在创建表的时候打开 MOB 功能,如下:
create 'glass', {NAME => 'c', IS_MOB => true, MOB_THRESHOLD => 2048}
上面我们创建了名为 glass 的表,IS_MOB 属性说明列簇 c 将启用 MOB 特性,MOB_THRESHOLD 是 MOB 文件大小的阈值,单位是字节,这里的设置说明文件大于 2k 的列都当做小文件存储。大家可能注意到上面原始方案中采用了 OSS 对象存储,那我们为什么不直接使用 OSS 存储面板特征数据呢,如果有这个疑问,可以看看下面表的性能测试:
对比属性对象存储云 HBase建模能力KVKV、表格、稀疏表、SQL、全文索引、时空、时序、图查询查询能力前缀查找前缀查找、过滤器、索引性能优优,特别对小对象有更低的延迟;在复杂查询场景下,比对象存储有10倍以上的性能提升成本按流量,请求次数计费,托管式,在高并发,高吞吐场景有更低的成本适合访问频率低的场景扩展性优优适用对象范围通用<10MB
String CF_DEFAULT = "c";根据上面的对比,使用 HBase MOB特性来存储小于10MB的对象相比直接使用对象存储有一些优势。
我们现在来看看具体的表设计,使用面板id作为列名。我们只使用了HBase 的一张表就替换了之前方面的三张表!虽然我们启用了 MOB,但是具体插入的方法和正常使用一样,代码片段如下:
Put put = new Put(groupId.getBytes());
put.addColumn(CF_DEFAULT.getBytes(),glassId1.getBytes(), feature1.getBytes());
put.addColumn(CF_DEFAULT.getBytes(),glassId2.getBytes(), feature2.getBytes());
……
put.addColumn(CF_DEFAULT.getBytes(),glassIdn.getBytes(), featuren.getBytes());
table.put(put);
用户如果需要根据面板组id获取所有面板数据,可以使用下面方法:
Get get = new Get(groupId.getBytes());
Result re=table.get(get);
这样我们可以拿到某个组id对应的所有面板数据。如果需要根据组id+面板id查找某个面板的具体数据,看可以使用下面方法:
Get get = new Get(groupId.getBytes());
get.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes())
Result re=table.get(get);
经过上面的改造,在2台 HBaseWorker 节点内存为32GB,核数为8,每个节点挂载四块大小为 250GB 的 SSD 磁盘,并写入100W 行,每行有1W列,读取一行的时间在100ms-500毫秒左右。在每行有1000个face的情况下,读取一行的时间基本在20-50毫秒左右,相比之前的10秒提升200~500倍。
从下面这张对比表,我们可以清楚的看到HBase方案的巨大优势。
对比属性对象存储MySQL+对象存储HBase MOB读写强一致YNY查询能力弱强强查询响应时间高高低运维成本低高低水平扩展YYY
现在,我们已经将面板特征数据存储在Cloudera HBase 之中,这个只是数据应用的第一步,如何将隐藏在这些数据背后的价值发挥出来?这就得借助于数据分析,在这个场景就需要采用机器学习的方法进行操作。我们可以借助大数据分析工具Spark 对存储于 HBase 之中的数据进行分析,而且 Spark 本身支持机器学习的。最后,用户就可以通过访问 HBase 里面已经挖掘好的特征数据进行其他的应用了。
本文作者:格创东智大数据工程师王子超(转载请注明作者及来源)

图片新闻
最新活动更多
-
6月13日立即参评>> 【评选】维科杯·OFweek2025中国工业自动化及数字化行业年度评选
-
即日-6.16立即报名>> 【在线会议】olution Talks |Computex 2025关键趋势深读
-
7月22-29日立即报名>> 【线下论坛】第三届安富利汽车生态圈峰会
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
7月30-31日报名参会>>> 全数会2025中国激光产业高质量发展峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
- 1 智造赋能,生态共融:大联大携手产业伙伴,共绘新质工业宏伟蓝图
- 2 数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕
- 3 谁将成为行业榜样?维科杯·OFweek2025中国工业自动化及数字化行业年度评选等您来参与!
- 4 【重磅来袭】6月17日上海见!全球智造巨头聚首,60余场前沿论坛,制造业数字化盛会邀您共启数智破局之旅!
- 5 安森美正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 6 当数智工业邂逅大湾区,看PHIIDF2025如何破界,链动全球!
- 7 抢先解锁!全数会2025机器人及智能工厂展览会核心亮点速递
- 8 iEi威强电邀您共襄AIAE Expo 2025北京国际工业自动化盛会,探索智能工业新边界!
- 9 欧姆龙正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 10 世界计量日盛会启幕,聚焦测量体系变革:质量、效率与动力
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论