訂閱
糾錯
加入自媒體

基于HBase的工業(yè)大數(shù)據(jù)存儲實戰(zhàn)

隨著工業(yè)4.0時代的到來,工業(yè)互聯(lián)網(wǎng)和企業(yè)的智能化、信息化都將不斷推進(jìn),傳統(tǒng)的工業(yè)實時數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫已經(jīng)難以完全勝任工業(yè)大數(shù)據(jù)的存儲,以HBase為代表的NoSQL數(shù)據(jù)庫正在蓬勃發(fā)展,其完全分布式特征、高性能、多副本和靈活的動態(tài)擴(kuò)展等特點(diǎn),使得HBase在工業(yè)大數(shù)據(jù)的存儲上擁有強(qiáng)大的優(yōu)勢,打破了流程工業(yè)生產(chǎn)中的"數(shù)據(jù)壁壘"效應(yīng)的瓶頸,可以促進(jìn)工業(yè)生產(chǎn)水平和生產(chǎn)管理水平的提高。本期格物匯,就來給大家介紹HBase數(shù)據(jù)庫及格創(chuàng)東智相關(guān)實戰(zhàn)案例。

了解HBase

HBase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBASE的目標(biāo)是存儲并處理大型的數(shù)據(jù),更具體來說是僅需使用普通的硬件配置,就能夠處理由成千上萬的行和列所組成的大型數(shù)據(jù)。

HBASE是GoogleBigtable的開源實現(xiàn),但是也有很多不同之處。比如:Google Bigtable使用GFS作為其文件存儲系統(tǒng),HBASE利用HadoopHDFS作為其文件存儲系統(tǒng);Google運(yùn)行MAPREDUCE來處理Bigtable中的海量數(shù)據(jù),HBASE同樣利用Hadoop MapReduce來處理HBASE中的海量數(shù)據(jù);Google Bigtable利用Chubby作為協(xié)同服務(wù),HBASE利用Zookeeper作為協(xié)同服務(wù)。

與傳統(tǒng)數(shù)據(jù)庫的相比,HBASE具備多重優(yōu)勢

1)線性擴(kuò)展,隨著數(shù)據(jù)量增多可以通過節(jié)點(diǎn)擴(kuò)展進(jìn)行支撐;

2)數(shù)據(jù)存儲在hdfs上,備份機(jī)制健全;

3)通過zookeeper協(xié)調(diào)查找數(shù)據(jù),訪問速度快。

HBase實戰(zhàn)案例

為了更好的介紹 HBase 在人工智能場景下的使用,下面我們以某半導(dǎo)體顯示企業(yè)為案例,給大家分析格創(chuàng)東智大數(shù)據(jù)團(tuán)隊如何利用 HBase 設(shè)計出一個快速查找面板特征的系統(tǒng)。

目前,該公司的業(yè)務(wù)場景里面有很多面板相關(guān)的特征數(shù)據(jù),每張面板數(shù)據(jù)大概 3.2k。這些面板數(shù)據(jù)又被分成很多組,每個面板特征屬于某個組。組和面板的數(shù)據(jù)分布如下:

——43%左右的組含有1張面板數(shù)據(jù);

——47%左右的組含有 2 ~9張面板數(shù)據(jù);

——其余的組面板數(shù)范圍為 10 ~ 10000張。

現(xiàn)在的業(yè)務(wù)需求主要有以下兩類:

——根據(jù)組的 id 查找該組下面的所有面板數(shù)據(jù);

——根據(jù)組 id +面板id 查找某個面板的具體數(shù)據(jù)。

原有方案:MySQL+OSS

之前業(yè)務(wù)數(shù)據(jù)量比較小的情況使用的存儲主要為 MySQL 以及 OSS(對象存儲)。相關(guān)表主要有面板組表group和面板表face。表的格式如下:

group表:

group_idsize12

glass表:

glass_idgroup_idfeature"TB7B3695BA05"1"CASBA"

其中 feature(特征)大小為3.2k,是二進(jìn)制數(shù)據(jù) base64 后存入的,這個就是真實的面板特征數(shù)據(jù)。現(xiàn)在面板組 id 和面板id 對應(yīng)關(guān)系存儲在MySQL 中,對應(yīng)上面的 group 表;面板 id 和面板相關(guān)的特征數(shù)據(jù)存儲在 OSS 里面,對應(yīng)上面的 face 表。

因為每個面板組包含的玻璃特征數(shù)相差很大(1 ~ 10000),所以基于上面的表設(shè)計,我們需要將面板組以及每張面板特征id存儲在每一行,那么屬于同一個面板組的數(shù)據(jù)在MySQL 里面上實際上存儲了很多行。比如某個組id對應(yīng)的特征數(shù)為10000,那么需要在MySQL 里面存儲 10000 行。

我們?nèi)绻枰鶕?jù)面板組 id 查找該組下面的所有面板,那么需要從 MySQL 中讀取很多行的數(shù)據(jù),從中獲取到組和面板對應(yīng)的關(guān)系,然后到 OSS 里面根據(jù)面板id獲取所有相關(guān)的特征數(shù)據(jù)。

這樣的查詢導(dǎo)致鏈路非常長。從上面的設(shè)計可看出,如果查詢的組包含的面板張數(shù)比較多的情況下,那么我們需要從 MySQL 里面掃描很多行,然后再從 OSS 里面拿到這些特征數(shù)據(jù),整個查詢時間在10秒左右,遠(yuǎn)遠(yuǎn)不能滿足現(xiàn)有業(yè)務(wù)快速發(fā)展的需求。

1  2  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號