当前位置: 智能网 > 智能制造 > 基于HBase的工业大数据存储实战

基于HBase的工业大数据存储实战

放大字体 缩小字体 发布日期:2019-05-28 20:42:04   浏览次数:175


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 里面已经挖掘好的特征数据进行其他的应用了。

本文作者:格创东智大数据工程师王子超(转载请注明作者及来源)

 

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
追根溯源:关于智能制造产业的几点思考 我国进一步深入推进首台(套)重大技术装备保险补偿机制
如何实施有效的云计算成本管理策略? 如何部署工业物联网:简要指南
推荐智能网
点击排行

 
 
新能源网 | 锂电网 | 智能网 | 环保设备网 | 联系方式