基于HBase的工業(yè)大數(shù)據(jù)存儲實戰(zhàn)
HBase解決方案:
MySQL + OSS的設(shè)計方案有兩個問題:第一,原本屬于同一條數(shù)據(jù)的內(nèi)容由于數(shù)據(jù)本身大小的原因無法存儲到一行里面,導(dǎo)致后續(xù)查下需要訪問兩個存儲系統(tǒng);第二,由于MySQL不支持動態(tài)列的特性,所以屬于同一個面板組的數(shù)據(jù)被拆成多行存儲。
針對這兩個問題,格創(chuàng)東智的大數(shù)據(jù)團(tuán)隊進(jìn)行了分析,認(rèn)為這是 HBase 的典型場景,原因如下:
——HBase 擁有動態(tài)列的特性,支持萬億行,百萬列;
——HBase 支持多版本,所有的修改都會記錄在 HBase 中;
——HBase 2.0 引入了MOB(Medium-Sized Object)特性,支持小文件存儲。
HBase 的 MOB 特性針對文件大小在 1k~10MB 范圍的,比如圖片,短視頻,文檔等,具有低延遲,讀寫強一致,檢索能力強,水平易擴展等關(guān)鍵能力。
格創(chuàng)東智的大數(shù)據(jù)團(tuán)隊使用這三個功能重新設(shè)計上面 MySQL + OSS 方案。結(jié)合應(yīng)用場景的兩大查詢需求,將面板組 id 作為 HBase 的 Rowkey,在創(chuàng)建表的時候打開 MOB 功能,如下:
create 'glass', {NAME => 'c', IS_MOB => true, MOB_THRESHOLD => 2048}
上面我們創(chuàng)建了名為 glass 的表,IS_MOB 屬性說明列簇 c 將啟用 MOB 特性,MOB_THRESHOLD 是 MOB 文件大小的閾值,單位是字節(jié),這里的設(shè)置說明文件大于 2k 的列都當(dāng)做小文件存儲。大家可能注意到上面原始方案中采用了 OSS 對象存儲,那我們?yōu)槭裁床恢苯邮褂?OSS 存儲面板特征數(shù)據(jù)呢,如果有這個疑問,可以看看下面表的性能測試:
對比屬性對象存儲云 HBase建模能力KVKV、表格、稀疏表、SQL、全文索引、時空、時序、圖查詢查詢能力前綴查找前綴查找、過濾器、索引性能優(yōu)優(yōu),特別對小對象有更低的延遲;在復(fù)雜查詢場景下,比對象存儲有10倍以上的性能提升成本按流量,請求次數(shù)計費,托管式,在高并發(fā),高吞吐場景有更低的成本適合訪問頻率低的場景擴展性優(yōu)優(yōu)適用對象范圍通用<10MB
String CF_DEFAULT = "c";根據(jù)上面的對比,使用 HBase MOB特性來存儲小于10MB的對象相比直接使用對象存儲有一些優(yōu)勢。
我們現(xiàn)在來看看具體的表設(shè)計,使用面板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);
用戶如果需要根據(jù)面板組id獲取所有面板數(shù)據(jù),可以使用下面方法:
Get get = new Get(groupId.getBytes());
Result re=table.get(get);
這樣我們可以拿到某個組id對應(yīng)的所有面板數(shù)據(jù)。如果需要根據(jù)組id+面板id查找某個面板的具體數(shù)據(jù),看可以使用下面方法:
Get get = new Get(groupId.getBytes());
get.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes())
Result re=table.get(get);
經(jīng)過上面的改造,在2臺 HBaseWorker 節(jié)點內(nèi)存為32GB,核數(shù)為8,每個節(jié)點掛載四塊大小為 250GB 的 SSD 磁盤,并寫入100W 行,每行有1W列,讀取一行的時間在100ms-500毫秒左右。在每行有1000個face的情況下,讀取一行的時間基本在20-50毫秒左右,相比之前的10秒提升200~500倍。
從下面這張對比表,我們可以清楚的看到HBase方案的巨大優(yōu)勢。
對比屬性對象存儲MySQL+對象存儲HBase MOB讀寫強一致YNY查詢能力弱強強查詢響應(yīng)時間高高低運維成本低高低水平擴展YYY
現(xiàn)在,我們已經(jīng)將面板特征數(shù)據(jù)存儲在Cloudera HBase 之中,這個只是數(shù)據(jù)應(yīng)用的第一步,如何將隱藏在這些數(shù)據(jù)背后的價值發(fā)揮出來?這就得借助于數(shù)據(jù)分析,在這個場景就需要采用機器學(xué)習(xí)的方法進(jìn)行操作。我們可以借助大數(shù)據(jù)分析工具Spark 對存儲于 HBase 之中的數(shù)據(jù)進(jìn)行分析,而且 Spark 本身支持機器學(xué)習(xí)的。最后,用戶就可以通過訪問 HBase 里面已經(jīng)挖掘好的特征數(shù)據(jù)進(jìn)行其他的應(yīng)用了。
本文作者:格創(chuàng)東智大數(shù)據(jù)工程師王子超(轉(zhuǎn)載請注明作者及來源)
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
9月23-24日觀看直播>> 2025中國國際工業(yè)博覽會維科網(wǎng)·激光VIP企業(yè)展臺直播
-
9月23日立即預(yù)約>> 【COMSOL直播】多物理場仿真在傳感器中的應(yīng)用
-
10月23日火熱報名中>> 2025是德科技創(chuàng)新技術(shù)峰會
-
11月27日立即報名>> 【工程師系列】汽車電子技術(shù)在線大會
-
12月18日立即報名>> 【線下會議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.31立即下載>> 【限時下載】《2025激光行業(yè)應(yīng)用創(chuàng)新發(fā)展藍(lán)皮書》
- 1 國內(nèi)首個AI工廠投產(chǎn)!
- 2 機器人獨角獸Field AI完成4.05億美元融資!英偉達(dá)、貝佐斯押注
- 3 營收4.3億!歌爾股份、比亞迪供應(yīng)商在新三板掛牌上市
- 4 剛剛!ABB、西門子雙雙拿下自動化新訂單
- 5 綠的諧波半年報:凈利潤大漲45.87%,增長勢頭強勁
- 6 營收突破 205 億大增 26.73%,新能源業(yè)務(wù)暴漲 50%!匯川技術(shù)上半年業(yè)績亮眼
- 7 蘭劍智能上半年新增訂單 15 億元,暴漲 96% !
- 8 讀懂 | 匯川技術(shù)“1+4+X=0 ”工業(yè)零碳戰(zhàn)略
- 9 霍尼韋爾換帥!“老將回歸”拆分自動化部門
- 10 瀚川智能 | 營收向下,聚焦核心業(yè)務(wù)扭虧為盈 ?