基于HBase的工業(yè)大數(shù)據(jù)存儲(chǔ)實(shí)戰(zhàn)
HBase解決方案:
MySQL + OSS的設(shè)計(jì)方案有兩個(gè)問(wèn)題:第一,原本屬于同一條數(shù)據(jù)的內(nèi)容由于數(shù)據(jù)本身大小的原因無(wú)法存儲(chǔ)到一行里面,導(dǎo)致后續(xù)查下需要訪(fǎng)問(wèn)兩個(gè)存儲(chǔ)系統(tǒng);第二,由于MySQL不支持動(dòng)態(tài)列的特性,所以屬于同一個(gè)面板組的數(shù)據(jù)被拆成多行存儲(chǔ)。
針對(duì)這兩個(gè)問(wèn)題,格創(chuàng)東智的大數(shù)據(jù)團(tuán)隊(duì)進(jìn)行了分析,認(rèn)為這是 HBase 的典型場(chǎng)景,原因如下:
——HBase 擁有動(dòng)態(tài)列的特性,支持萬(wàn)億行,百萬(wàn)列;
——HBase 支持多版本,所有的修改都會(huì)記錄在 HBase 中;
——HBase 2.0 引入了MOB(Medium-Sized Object)特性,支持小文件存儲(chǔ)。
HBase 的 MOB 特性針對(duì)文件大小在 1k~10MB 范圍的,比如圖片,短視頻,文檔等,具有低延遲,讀寫(xiě)強(qiáng)一致,檢索能力強(qiáng),水平易擴(kuò)展等關(guān)鍵能力。
格創(chuàng)東智的大數(shù)據(jù)團(tuán)隊(duì)使用這三個(gè)功能重新設(shè)計(jì)上面 MySQL + OSS 方案。結(jié)合應(yīng)用場(chǎng)景的兩大查詢(xún)需求,將面板組 id 作為 HBase 的 Rowkey,在創(chuàng)建表的時(shí)候打開(kāi) MOB 功能,如下:
create 'glass', {NAME => 'c', IS_MOB => true, MOB_THRESHOLD => 2048}
上面我們創(chuàng)建了名為 glass 的表,IS_MOB 屬性說(shuō)明列簇 c 將啟用 MOB 特性,MOB_THRESHOLD 是 MOB 文件大小的閾值,單位是字節(jié),這里的設(shè)置說(shuō)明文件大于 2k 的列都當(dāng)做小文件存儲(chǔ)。大家可能注意到上面原始方案中采用了 OSS 對(duì)象存儲(chǔ),那我們?yōu)槭裁床恢苯邮褂?OSS 存儲(chǔ)面板特征數(shù)據(jù)呢,如果有這個(gè)疑問(wèn),可以看看下面表的性能測(cè)試:
對(duì)比屬性對(duì)象存儲(chǔ)云 HBase建模能力KVKV、表格、稀疏表、SQL、全文索引、時(shí)空、時(shí)序、圖查詢(xún)查詢(xún)能力前綴查找前綴查找、過(guò)濾器、索引性能優(yōu)優(yōu),特別對(duì)小對(duì)象有更低的延遲;在復(fù)雜查詢(xún)場(chǎng)景下,比對(duì)象存儲(chǔ)有10倍以上的性能提升成本按流量,請(qǐng)求次數(shù)計(jì)費(fèi),托管式,在高并發(fā),高吞吐場(chǎng)景有更低的成本適合訪(fǎng)問(wèn)頻率低的場(chǎng)景擴(kuò)展性?xún)?yōu)優(yōu)適用對(duì)象范圍通用<10MB
String CF_DEFAULT = "c";根據(jù)上面的對(duì)比,使用 HBase MOB特性來(lái)存儲(chǔ)小于10MB的對(duì)象相比直接使用對(duì)象存儲(chǔ)有一些優(yōu)勢(shì)。
我們現(xiàn)在來(lái)看看具體的表設(shè)計(jì),使用面板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);
用戶(hù)如果需要根據(jù)面板組id獲取所有面板數(shù)據(jù),可以使用下面方法:
Get get = new Get(groupId.getBytes());
Result re=table.get(get);
這樣我們可以拿到某個(gè)組id對(duì)應(yīng)的所有面板數(shù)據(jù)。如果需要根據(jù)組id+面板id查找某個(gè)面板的具體數(shù)據(jù),看可以使用下面方法:
Get get = new Get(groupId.getBytes());
get.addColumn(CF_DEFAULT.getBytes(), glassId1.getBytes())
Result re=table.get(get);
經(jīng)過(guò)上面的改造,在2臺(tái) HBaseWorker 節(jié)點(diǎn)內(nèi)存為32GB,核數(shù)為8,每個(gè)節(jié)點(diǎn)掛載四塊大小為 250GB 的 SSD 磁盤(pán),并寫(xiě)入100W 行,每行有1W列,讀取一行的時(shí)間在100ms-500毫秒左右。在每行有1000個(gè)face的情況下,讀取一行的時(shí)間基本在20-50毫秒左右,相比之前的10秒提升200~500倍。
從下面這張對(duì)比表,我們可以清楚的看到HBase方案的巨大優(yōu)勢(shì)。
對(duì)比屬性對(duì)象存儲(chǔ)MySQL+對(duì)象存儲(chǔ)HBase MOB讀寫(xiě)強(qiáng)一致YNY查詢(xún)能力弱強(qiáng)強(qiáng)查詢(xún)響應(yīng)時(shí)間高高低運(yùn)維成本低高低水平擴(kuò)展YYY
現(xiàn)在,我們已經(jīng)將面板特征數(shù)據(jù)存儲(chǔ)在Cloudera HBase 之中,這個(gè)只是數(shù)據(jù)應(yīng)用的第一步,如何將隱藏在這些數(shù)據(jù)背后的價(jià)值發(fā)揮出來(lái)?這就得借助于數(shù)據(jù)分析,在這個(gè)場(chǎng)景就需要采用機(jī)器學(xué)習(xí)的方法進(jìn)行操作。我們可以借助大數(shù)據(jù)分析工具Spark 對(duì)存儲(chǔ)于 HBase 之中的數(shù)據(jù)進(jìn)行分析,而且 Spark 本身支持機(jī)器學(xué)習(xí)的。最后,用戶(hù)就可以通過(guò)訪(fǎng)問(wèn) HBase 里面已經(jīng)挖掘好的特征數(shù)據(jù)進(jìn)行其他的應(yīng)用了。
本文作者:格創(chuàng)東智大數(shù)據(jù)工程師王子超(轉(zhuǎn)載請(qǐng)注明作者及來(lái)源)
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
- 2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書(shū) | 附獨(dú)家榜單
- EK工業(yè)多聯(lián)加持"國(guó)家級(jí)高新技術(shù)企業(yè)",見(jiàn)證軸承行業(yè)新奇跡
- 全數(shù)會(huì)2024中國(guó)深圳智能制造與機(jī)器人展覽會(huì)|走進(jìn)先臨三維
- 實(shí)地案例:必看,紅外熱成像在LED行業(yè)的應(yīng)用全在這里!
- 速領(lǐng)免費(fèi)門(mén)票!一文揭秘2024全數(shù)會(huì)亮點(diǎn):展商名錄、展商新品、同期會(huì)議、演講嘉賓、采購(gòu)名單
最新活動(dòng)更多
-
即日-11.30免費(fèi)預(yù)約申請(qǐng)>>> 燧石技術(shù)-紅外熱成像系列產(chǎn)品試用活動(dòng)
-
11月8日立即預(yù)約>> 筑夢(mèng)啟光 礪行致遠(yuǎn) | 新天激光數(shù)字化產(chǎn)研基地奠基儀式
-
11月29日立即預(yù)約>> 【上海線(xiàn)下】設(shè)計(jì),易如反掌—Creo 11發(fā)布巡展
-
11月30日立即試用>> 【有獎(jiǎng)試用】愛(ài)德克IDEC-九大王牌安全產(chǎn)品
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線(xiàn)峰會(huì)
-
限時(shí)免費(fèi)下載立即下載 >>> 2024“機(jī)器人+”行業(yè)應(yīng)用創(chuàng)新發(fā)展藍(lán)皮書(shū)
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷(xiāo)售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷(xiāo)售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專(zhuān)家 廣東省/江門(mén)市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市