> 來源:[PennyWong](http://pennywong.gitbooks.io/hadoop-notebook/content/index.html)
主要記錄了Hadoop各個組件的基本原理,處理過程和關鍵的知識點等,包括HDFS、YARN、MapReduce等。
## 鋪墊
- 人產生數據的速度越來越快,機器則更加快,more data usually beats better algorithms,所以需要另外的一種處理數據的方法。
- 硬盤的容量增加了,但性能沒有跟上,解決辦法是把數據分到多塊硬盤,然后同時讀取。但帶來一些問題:
硬件問題:復制數據解決(RAID)
分析需要從不同的硬盤讀取數據:MapReduce
而Hadoop提供了
1.可靠的共享存儲(分布式存儲)2.抽象的分析接口(分布式分析)
## 大數據
### 概念
不能使用一臺機器進行處理的數據
大數據的核心是樣本=總體
### 特性
- **大量性(volume):** 一般在大數據里,單個文件的級別至少為幾十,幾百GB以上
- **快速性(velocity):** 反映在數據的快速產生及數據變更的頻率上
- **多樣性(variety):** 泛指數據類型及其來源的多樣化,進一步可以把數據結構歸納為結構化(structured),半結構化(semi-structured),和非結構化(unstructured)
- **易變性:** 伴隨數據快速性的特征,數據流還呈現一種波動的特征。不穩定的數據流會隨著日,季節,特定事件的觸發出現周期性峰值
- **準確性:** 又稱為數據保證(data assurance)。不同方式,渠道收集到的數據在質量上會有很大差異。數據分析和輸出結果的錯誤程度和可信度在很大程度上取決于收集到的數據質量的高低
- **復雜性:** 體現在數據的管理和操作上。如何抽取,轉換,加載,連接,關聯以把握數據內蘊的有用信息已經變得越來越有挑戰性
### 關鍵技術
1.數據分布在多臺機器
可靠性:每個數據塊都復制到多個節點
性能:多個節點同時處理數據
2.計算隨數據走
網絡IO速度 << 本地磁盤IO速度,大數據系統會盡量地將任務分配到離數據最近的機器上運行(程序運行時,將程序及其依賴包都復制到數據所在的機器運行)
代碼向數據遷移,避免大規模數據時,造成大量數據遷移的情況,盡量讓一段數據的計算發生在同一臺機器上
3.串行IO取代隨機IO
傳輸時間 << 尋道時間,一般數據寫入后不再修改