一.Hive應(yīng)用場景
本文主要講述使用 Hive 的實(shí)踐,業(yè)務(wù)不是關(guān)鍵,簡要介紹業(yè)務(wù)場景,本次的任務(wù)是對(duì)搜索日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析果善。
集團(tuán)搜索剛上線不久诊笤,日志量并不大 。這些日志分布在 5 臺(tái)前端機(jī)巾陕,按小時(shí)保存讨跟,并以小時(shí)為周期定時(shí)將上一小時(shí)產(chǎn)生的數(shù)據(jù)同步到日志分析機(jī),統(tǒng)計(jì)數(shù)據(jù)要求按小時(shí)更新鄙煤。這些統(tǒng)計(jì)項(xiàng)晾匠,
包括關(guān)鍵詞搜索量 pv ,類別訪問量凉馆,每秒訪問量 tps 等等。
基于 Hive 亡资,我們將這些數(shù)據(jù)按天為單位建表澜共,每天一個(gè)表,后臺(tái)腳本根據(jù)時(shí)間戳將每小時(shí)同步過來的 5 臺(tái)前端機(jī)的日志數(shù)據(jù)合并成一個(gè)日志文件,導(dǎo)入 Hive 系統(tǒng)咬扇,每小時(shí)同步的日志數(shù)據(jù)
被追加到當(dāng)天數(shù)據(jù)表中,導(dǎo)入完成后来惧,當(dāng)天各項(xiàng)統(tǒng)計(jì)項(xiàng)將被重新計(jì)算并輸出統(tǒng)計(jì)結(jié)果冗栗。
以上需求若直接基于 hadoop 開發(fā),需要自行管理數(shù)據(jù)供搀,針對(duì)多個(gè)統(tǒng)計(jì)需求開發(fā)不同的 map/reduce 運(yùn)算任務(wù)隅居,對(duì)合并、排序等多項(xiàng)操作進(jìn)行定制葛虐,并檢測(cè)任務(wù)運(yùn)行狀態(tài)胎源,工作量并不小。但
使用 Hive 屿脐,從導(dǎo)入到分析涕蚤、排序、去重的诵、結(jié)果輸出万栅,這些操作都可以運(yùn)用 hql 語句來解決,一條語句經(jīng)過處理被解析成幾個(gè)任務(wù)來運(yùn)行西疤,即使是關(guān)鍵詞訪問量增量這種需要同時(shí)訪問多天數(shù)
據(jù)的較為復(fù)雜的需求也能通過表關(guān)聯(lián)這樣的語句自動(dòng)完 成烦粒,節(jié)省了大量工作量。
二.hbase應(yīng)用場景
1代赁、爬蟲網(wǎng)站URL的寫入扰她。
2、淘寶在2011年之前所有的后端持久化存儲(chǔ)基本上都是在mysql上進(jìn)行的(不排除少量oracle/bdb/tair/mongdb等)芭碍,mysql由于開源徒役,并且生態(tài)系統(tǒng)良好,本身擁有分庫分表等多種解決方案窖壕,因此很長一段時(shí)間內(nèi)都滿足淘寶大量業(yè)務(wù)的需求忧勿。
但是由于業(yè)務(wù)的多樣化發(fā)展,有越來越多的業(yè)務(wù)系統(tǒng)的需求開始發(fā)生了變化瞻讽。一般來說有以下幾類變化:
數(shù)據(jù)量變得越來越多狐蜕,事實(shí)上現(xiàn)在淘寶幾乎任何一個(gè)與用戶相關(guān)的在線業(yè)務(wù)的數(shù)據(jù)量都在億級(jí)別,每日系統(tǒng)調(diào)用次數(shù)從億到百億都有卸夕,且歷史數(shù)據(jù)不能輕易刪除层释。這需要有一個(gè)海量分布式文件系統(tǒng),能對(duì)TB級(jí)甚至PB級(jí)別的數(shù)據(jù)提供在線服務(wù)
數(shù)據(jù)量的增長很快且不一定能準(zhǔn)確預(yù)計(jì)快集,大多數(shù)應(yīng)用系統(tǒng)從上線起在一段時(shí)間內(nèi)數(shù)據(jù)量都呈很快的上升趨勢(shì)贡羔,因此從成本的角度考慮對(duì)系統(tǒng)水平擴(kuò)展能力有比較強(qiáng)烈的需求廉白,且不希望存在單點(diǎn)制約
只需要簡單的kv讀取,沒有復(fù)雜的join等需求乖寒。但對(duì)系統(tǒng)的并發(fā)能力以及吞吐量猴蹂、響應(yīng)延時(shí)有非常高的需求,并且希望系統(tǒng)能夠保持強(qiáng)一致性
通常系統(tǒng)的寫入非常頻繁楣嘁,尤其是大量系統(tǒng)依賴于實(shí)時(shí)的日志分析
希望能夠快速讀取批量數(shù)據(jù)
三.總結(jié)
hive大數(shù)據(jù)計(jì)算,基于reducemap
hbase大數(shù)據(jù)存儲(chǔ),寫入和讀取