天天看點

Hadoop The First Day!!!

Hadoop :内部工作機制非常複雜,是一個集分布式系統理論、實際工程理論和常識于一體的系統。

提供用于建構分布式系統的每一個工具(用于資料存儲、資料分析和協調處理)都非常簡單。這些工具都非常抽象,對偶爾有大量資料需要存儲的程式員、有大量資料需要分析的額程式員、有大量計算機需要管理的程式員等時期利用Hadoop建構基礎平台,滿足需要。

我特麼才發現,需要點java基礎,如果要看Hadoop的話。

學前篇:

2006年數字世界(digital universe)項目統計的出全球資料總量為0.18ZB并預測在2011年将達到1.8ZB。

小姿勢:1ZB=10^21位元組=1000EB(exabytes)

資料來源可能為2007年

紐約證交所曾有段時間統計資料:一天交易資料多達1TB

FaceBook 存儲的照片至少100億張,存儲容量約為1PB

Ancestry.com存儲的資料約為2.5PB

網際網路檔案館(The Internet Archive)存儲的資料量約為2PB,并以每月至少20TB的速度持續增長

瑞士日内瓦附近的大型強子對撞機每年産生的資料約為15PB

MyLifeBits:微軟研究院的一個研究項目,研究顯示,在不久的将來,個人資訊檔案将日益普及。MyLifeBits的一個實驗是擷取和儲存每個人的對外聯系情況,供日後存取。收集的資料包括每分鐘拍攝的照片等,資料量每月約為1GB。當存儲成本急劇下降以至于可以存儲音頻和視訊時,MyLifeBits項目在未來的存儲的資料量将是現在的很多倍。

生活中我們一般遇到的問題:

在硬碟存儲容量多年來不斷提升的同時,通路速度(硬碟資料讀取速度)卻沒有與時俱進。1990年,一個普通硬碟可以存儲1370MB資料,傳輸速度為4.4MB/s,是以隻需要5分鐘就可以讀完整個硬碟中的資料,20年過去了,1TB的硬碟已然成為主流,但其資料傳輸速度約為100MB/s,讀完整個硬碟中的資料至少得話2.5小時。現實中我們産生的資料量成幾何倍數增長,但是對資料的處理速度卻受到硬體裝置很大的限制和影響,很難提升。

對硬碟中的資料并行進行讀寫資料,有許多問題:第一個需要解決硬體故障問題;第二個是大多數分析任務需要以某種凡是結合大部分資料來共同完成分析,即從一個硬碟讀取的資料可能需要與從另外99個硬碟中讀取的資料結合使用。

讀到這裡恍然發現:Hadoop即為我們常說的分布式存儲系統的一種。

MapReduce看似采用了一種蠻力方法。每個查詢選喲處理整個資料內建或至少資料集的絕大部分。有差別與傳統的關系型資料庫。即MapReduc為資料庫的一種。(暫時了解)

和關系型資料庫進行比較:

類型 傳統關系型資料庫 MapReduce

資料大小 GB PB

資料存取 互動式和批處理 批處理

更新 多次讀寫 一次寫入,多次讀取

結構 靜态模式 動态模式

完整性 高 低

橫向擴充 非線性的 線性的

MapReduce和關系型資料庫之間的另一個差別在于它們所操作的資料集的結構化程度。結構化資料(structured data)是具有既定格式的實體化資料,如xml文檔或滿足特定預定一個是的資料庫表等。半結構化資料(semi-structured data)比較松散,雖然可能有格式,但經常被忽略,是以它隻能作為對資料結構的一般性指導。非結構化資料(unstructured data)沒有什麼特别的内部結構,例如純文字或圖像資料。MapReduce對非結構化或半結構化資料非常有效,因為它是在處理資料是才對資料進行解釋。換句話說,MapReduce輸入的鍵和值并不是資料固有的屬性,而是有分析資料的人來選的。

關系型資料庫往往是規範的,以保持資料的完整性且不含備援。規範給MapReduce帶來問題,因為它使記錄讀取成為非本地操作。而MapReduce的核心假設之一就是可以進行(高速的)流讀寫操作。

web伺服器日志是典型的非規範化資料記錄,MapReduce非常适用于分析各種日志檔案

MapReduce是一種線性的可伸縮程式設計模型。程式員需要寫兩個函數,分别為map函數和reduce函數,每個函數定義從一個鍵值對集合到另一個鍵值對集合的映射。這些函數不必關注資料集及其所用叢集的大小,可以原封不動地應用于小規模資料集或大規模的資料集。更重要的是,如果輸入的資料量是原來的兩倍,那麼運作時間頁需要兩倍。但如果叢集是原來的兩倍,作業的運作速度卻仍然與原來一樣。

next:1.3.2

來源:Hadoop權威指南