1. <ins id="t36fn"></ins>
    2. <thead id="t36fn"></thead>

        您现在的位置:中国传动网  >  技术频道首页  >  解决方案  >  基于HBase的工业大数据存储实战

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

        2018年12月25日 13:17:58 供稿:格创东智大数据 工程师王子超

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

        了解HBase

        HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

        HBASE是GoogleBigtable的开源实现,但是也有很多不同之处。比如:GoogleBigtable使用GFS作为其文件存储系统,HBASE利用HadoopHDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用HadoopMapReduce来处理HBASE中的海量数据;GoogleBigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为协同服务。

        与传统数据库的相比,HBASE具备多重优势:

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

        2)数据存储在hdfs上,备份机制健全;

        3)通过zookeeper协调查找数据,访问速度快。

        HBase实战案例

        为了更好的介绍HBase在人工智能场景下的使用,下面我们以某半导体显示企业为案例,给大家分析格创东智大数据团队如何利用HBase设计出一个快速查找面板特征的系统。

        目前,该公司的业务场景里面有很多面板相关的特征数据,每张面板数据大概3.2k。这些面板数据又被分成很多组,每个面板特征属于某个组。组和面板的数据分布如下:

        ——43%左右的组含有1张面板数据;

        ——47%左右的组含有2~9张面板数据;

        ——其余的组面板数范围为10~10000张。

        现在的业务需求主要有以下两类:

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

        ——根据组id+面板id查找某个面板的具体数据。

        原有方案:MySQL+OSS

        之前业务数据量比较小的情况使用的存储主要为MySQL以及OSS(对象存储)。相关表主要有面板组表group和面板表face。表的格式如下:

        group表:

        group_idsize12

        glass表:

        glass_idgroup_idfeature"TB7B3695BA05"1"CASBA"

        其中feature(特征)大小为3.2k,是二进制数据base64后存入的,这个就是真实的面板特征数据。现在面板组id和面板id对应关系存储在MySQL中,对应上面的group表;面板id和面板相关的特征数据存储在OSS里面,对应上面的face表。

        因为每个面板组包含的玻璃特征数相差很大(1~10000),所以基于上面的表设计,我们需要将面板组以及每张面板特征id存储在每一行,那么属于同一个面板组的数据在MySQL里面上实际上存储了很多行。比如某个组id对应的特征数为10000,那么需要在MySQL里面存储10000行。

        我们如果需要根据面板组id查找该组下面的所有面板,那么需要从MySQL中读取很多行的数据,从中获取到组和面板对应的关系,然后到OSS里面根据面板id获取所有相关的特征数据。

        这样的查询导致链路非常长。从上面的设计可看出,如果查询的组包含的面板张数比较多的情况下,那么我们需要从MySQL里面扫描很多行,然后再从OSS里面拿到这些特征数据,整个查询时间在10秒左右,远远不能满足现有业务快速发展的需求。

        HBase解决方案:

        MySQL+OSS的设计方案有两个问题:第一,原本属于同一条数据的内容由于数据本身大小的原因无法存储到一行里面,导致后续查下需要访问两个存储系统;第二,由于MySQL不支持动态列的特性,所以属于同一个面板组的数据被拆成多行存储。

        针对这两个问题,格创东智的大数据团队进行了分析,认为这是HBase的典型场景,原因如下:

        ——HBase拥有动态列的特性,支持万亿行,百万列;

        ——HBase支持多版本,所有的修改都会记录在HBase中;

        ——HBase2.0引入了MOB(Medium-SizedObject)特性,支持小文件存储。

        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

        StringCF_DEFAULT="c";根据上面的对比,使用HBaseMOB特性来存储小于10MB的对象相比直接使用对象存储有一些优势。

        我们现在来看看具体的表设计,使用面板id作为列名。我们只使用了HBase的一张表就替换了之前方面的三张表!虽然我们启用了MOB,但是具体插入的方法和正常使用一样,代码片段如下:

        Putput=newPut(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获取所有面板数据,可以使用下面方法:

        Getget=newGet(groupId.getBytes());

        Resultre=table.get(get);

        这样我们可以拿到某个组id对应的所有面板数据。如果需要根据组id+面板id查找某个面板的具体数据,看可以使用下面方法:

        Getget=newGet(groupId.getBytes());

        get.addColumn(CF_DEFAULT.getBytes(),glassId1.getBytes())

        Resultre=table.get(get);

        经过上面的改造,在2台HBaseWorker节点内存为32GB,核数为8,每个节点挂载四块大小为250GB的SSD磁盘,并写入100W行,每行有1W列,读取一行的时间在100ms-500毫秒左右。在每行有1000个face的情况下,读取一行的时间基本在20-50毫秒左右,相比之前的10秒提升200~500倍。

        从下面这张对比表,我们可以清楚的看到HBase方案的巨大优势。

        对比属性对象存储MySQL+对象存储HBaseMOB读写强一致YNY查询能力弱强强查询响应时间高高低运维成本低高低水平扩展YYY

        现在,我们已经将面板特征数据存储在ClouderaHBase之中,这个只是数据应用的第一步,如何将隐藏在这些数据背后的价值发挥出来?这就得借助于数据分析,在这个场景就需要采用机器学习的方法进行操作。我们可以借助大数据分析工具Spark对存储于HBase之中的数据进行分析,而且Spark本身支持机器学习的。最后,用户就可以通过访问HBase里面已经挖掘好的特征数据进行其他的应用了。

        本文链接:http://www.ifeishi.cn/tech/detail.aspx?id=35206

        中国传动网

        官方微信

        扫一扫,信息随手掌控

        运动与控制

        官方微信

        扫一扫,运动与控制信息随手掌控

        中国传动网

        • 地 址:深圳市福田区上梅林越华路2号1栋5楼
        • 电 话:0755-82048561 82048562
        • 网 址:http://www.ifeishi.cn
        • 传 真:0755-82048153

        相关文章

        联系我们

        广告联系:0755-82048561
        展会合作:0755-83736589
        杂志投稿:0755-82048562

        网站简介|会员服务|联系方式|帮助信息|版权信息|网站地图|友情链接|法律支持|意见反馈

        版权所有 2006-2016 中国传动网(ChuanDong.com)

        • 经营许可证
          粤B2-20150019

        • 粤ICP备
          14004826号

        • 不良信息
          举报中心

        • 网络110
          报警服务

        网站客服热线

        0755-82949541

        网站问题客服

        2737591964

        亚博安全吗 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>