1.1 數(shù)據(jù)
1、數(shù)據(jù)快速增長:
1)個人產(chǎn)生的數(shù)據(jù)日益增長洗做,包括電話弓叛、郵件、文件竭望、音頻邪码、視頻
2)物聯(lián)網(wǎng)數(shù)據(jù),包括機器日志咬清、GPS闭专、零售交易數(shù)據(jù)、傳感器旧烧、RFID讀卡器
不同來源數(shù)據(jù)信息綜合處理分析影钉,發(fā)掘數(shù)據(jù)價值
大數(shù)據(jù)勝于好算法,基于小數(shù)據(jù)的推薦效果往往不如基于大量可用數(shù)據(jù)的一般算法推薦效果
1.2 存儲與分析
存儲訪問速度的提升遠遠落后于存儲容量的提升掘剪,90年代平委,1G盤讀取速度4MB/s,約5分鐘才能讀完夺谁,當前廉赔,1TB盤讀取速度100MB/s,約3小時才能讀完
解決方式:多磁盤讀取匾鸥,如磁盤陣列蜡塌,RAID 0,并行讀寫勿负,大大縮短數(shù)據(jù)分析時間馏艾,且從統(tǒng)計角度來看,用戶分析任務都是在不同時點進行。
多硬盤讀寫數(shù)據(jù)琅摩,需解決以下問題:
1)硬件故障铁孵,數(shù)據(jù)多副本,RAID01 RAID5 HDFS等
2)數(shù)據(jù)分析正確性房资,從一個硬盤讀取的數(shù)據(jù)需要結(jié)合其他硬盤數(shù)據(jù)一起進行分析蜕劝,MapReduce編程模型抽象了數(shù)據(jù)讀寫問題,并轉(zhuǎn)換為對一個key-value數(shù)據(jù)集的計算志膀。
1.3 查詢所有數(shù)據(jù)
MapReduce批處理熙宇,每次數(shù)據(jù)分析需要處理整個數(shù)據(jù)集或至少一個數(shù)據(jù)集的大部分鳖擒,合理時間范圍內(nèi)返回結(jié)果
1.4 不僅僅是批處理
批處理系統(tǒng)溉浙,不適合交互分析,一般用于離線分析蒋荚。
然而戳稽,hadoop目前用于指代一個由更大的、多項目組成的生態(tài)期升,而不僅僅HDFS和MapReduce惊奇。
Hbase,提供在線訪問的NoSQL數(shù)據(jù)庫播赁,既提供在線單行記錄讀寫訪問颂郎,也提供數(shù)據(jù)塊的讀/寫批操作。
- 交互式SQL
- 迭代處理
- 流處理
- 搜索
1.5 優(yōu)勢
1.5.1 關(guān)系型數(shù)據(jù)庫
配有大量磁盤DB做大數(shù)據(jù)分析容为?
- 磁盤尋址(磁頭移動到磁盤特定位置以讀/寫數(shù)據(jù))時間遠遠大于傳輸時間乓序,是磁盤操作延遲的主要原因,傳輸速率取決于磁盤帶寬坎背。若數(shù)據(jù)訪問模式包含了大量磁盤尋址替劈,讀取大量數(shù)據(jù)會花更長時間(相對流數(shù)據(jù)讀取模式,取決于傳輸速率)
- 數(shù)據(jù)庫系統(tǒng)傳統(tǒng)的B+樹(受限于磁盤尋址速率)對小部分數(shù)據(jù)更新非常有優(yōu)勢得滤,若大量更新,效率明顯落后于MapReduce,因為需要“排序/合并(sort/merge)”來重建數(shù)據(jù)庫
MapReduce被視為對RDBMS補充缰揪,適于分析整個數(shù)據(jù)集竹握,一次寫入、多次讀取
RDBMS適于索引后數(shù)據(jù)集的點查和更新沮协,提供對小數(shù)據(jù)集的低延遲數(shù)據(jù)檢索和快速更新龄捡,更適合持續(xù)更新的數(shù)據(jù)集
對比 | DB | MapReduce |
---|---|---|
數(shù)據(jù)大小 | GB | PB |
數(shù)據(jù)存取 | 交互式和批處理 | 批處理 |
更新 | 多次讀/寫 | 一次寫,多次讀 |
事務 | 支持 | 不支持 |
結(jié)構(gòu) | 寫時模式 | 讀時模式 |
完整性 | 高 | 低 |
橫向擴展 | 非線性 | 線性 |
關(guān)系型DB與Hadoop區(qū)別越來越模糊皂股,一方面DB借鑒Hadoop一些思想墅茉,另一方面,諸如hive不僅具有交互性,而且增加了事務和索引就斤。
- 結(jié)構(gòu)化數(shù)據(jù) 既定格式悍募,如XML文檔或滿足預先定義格式
- 半結(jié)構(gòu)化數(shù)據(jù) 比較松散,可能有格式洋机,但易被忽略
- 非結(jié)構(gòu)化數(shù)據(jù) 沒有特別的內(nèi)部結(jié)構(gòu)坠宴,如純文本、圖像數(shù)據(jù)
Hadoop對半結(jié)構(gòu)绷旗、非結(jié)構(gòu)化數(shù)據(jù)處理非常高效喜鼓,處理數(shù)據(jù)時才對數(shù)據(jù)進行解釋(讀時模式),靈活且避免了RDBMS數(shù)據(jù)加載的高開銷衔肢,Hadoop只做文件拷貝庄岖。
1.5.2 網(wǎng)格計算
高性能計算(High Performance Computing, HPC)和網(wǎng)格計算(Grid Computing)主要使用類似于消息傳遞接口(Message Passing Interface, MPI)的API。HPC將作業(yè)分散到各臺機器角骤,這些機器訪問SAN(存儲區(qū)域網(wǎng)絡(luò))組成的共享文件系統(tǒng)隅忿,適用于計算密集型作業(yè),數(shù)據(jù)量大場景邦尊,網(wǎng)絡(luò)帶寬成瓶頸背桐。Hadoop盡量在計算節(jié)點存儲數(shù)據(jù),實現(xiàn)快速訪問蝉揍,數(shù)據(jù)本地化(data locality)链峭,網(wǎng)絡(luò)帶寬最珍貴。
HPC相對Hadoop又沾,需關(guān)注底層功能模塊和高層數(shù)據(jù)分析算法弊仪,Hadoop則在更高層次上執(zhí)行任務,采用share-nothing(無共享)架構(gòu)捍掺,任務彼此獨立撼短,框架檢測到任務失敗并重新執(zhí)行,MPI需管理檢查點和恢復機制挺勿。
1.5.3 志愿計算
CPU高度密集型任務分解為工作單元曲横,分發(fā)到全球志愿者電腦進行分析,計算所耗時間遠遠超出工作單元數(shù)據(jù)網(wǎng)絡(luò)傳輸時間不瓶,為防欺詐禾嫉,每個單元分發(fā)到3臺不同機器,最少2臺結(jié)果相同才被接受蚊丐。
MapReduce三大設(shè)計目標:(1)為幾分鐘或幾小時就可以完成的作業(yè)提供服務熙参;(2)運行于同一個內(nèi)部有高速網(wǎng)絡(luò)的數(shù)據(jù)中心;(3)數(shù)據(jù)中心內(nèi)計算機是可靠麦备、專用的孽椰。
1.6 Hadoop發(fā)展簡史
起源于開源網(wǎng)絡(luò)搜索引擎Nutch昭娩,后基于谷歌三大論文進行改造且商用
排序
2008年4月,910節(jié)點黍匾,209秒栏渺, 1TB
2008年4月,谷歌MapReduce, 68秒锐涯,1TB
2014年磕诊,207節(jié)點Spark,1406秒纹腌,100TB 約14秒/TB