目錄
HDFS(Hadoop Distribute File System)
該系列文檔是由學習 尚硅谷大數據課程之Hive 整理而來。若有不足之處,煩請批評指正!
Hadoop
Apache基金會所開發的分佈式系統基礎框架
用於解決 海量數據的存儲和分析 問題
Hadoop生態圈:Hive、HBase、HDFS、Zookeeper...
優勢:
-
高可靠性:底層維護多個數據副本
-
高擴展性:可方便擴展和縮減節點
-
高效性:MapReduce,並行計算,加快任務處理速度
-
高容錯性:自動將失敗的任務重新分配
Hadoop 2.x組成:
-
Common(輔助工具)
-
HDFS(數據存儲)
-
MapReduce(計算)
-
Yarn(資源調度)
Hadoop 1.x,沒有Yarn,MapReduce負責計算+資源調度
HDFS(Hadoop Distribute File System)
產生背景:隨着數據量增大,一個操作系統存不下所有的數據,迫切需要一種系統來管理多個機器上的文件
分佈式文件管理系統:
-
文件系統:用於存儲文件,通過目錄樹來定位文件
-
分佈式:由很多服務器聯合起來實現功能,集羣中的服務器由各自的角色
使用場景:
-
適合一次寫入,多次讀出的場景,且不支持文件的修改
-
適合用來做數據分析,並且不適合用來做網盤應用
優點:
-
高容錯性:數據自帶保存多個副本
-
適合處理大數據,數據規模大,PB級別 ;文件規模大,百萬以上的文件數量
-
可構建在廉價機器上,通過多副本機子,提高可靠性
缺點:
-
不適合低延時數據訪問
-
無法高效的對大量小文件進行存儲,尋址時間會超過讀取時間
-
不支持併發寫入、文件隨機修改,支持文件追加
MapReduce
分佈式運算程序的編程框架,相當於運行在操作系統之上的應用程序
將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的分佈式運算程序,併發運行在Hadoop集羣上
優點:
-
易於編程:簡單的實現一些接口,就可以完成一個分佈式程序
-
良好的擴展性:擴展機器
-
高容錯性:將失敗的任務轉移到另外一個節點上運行,不至於這個任務失敗
-
適合PB級以上海量數據的離線處理
缺點:
-
不擅長實時計算
-
不擅長流式計算:流式計算的輸入數據是動態的,而MapReduce的輸入集是靜態的,不能動態變化
-
不擅長有向圖計算:即多個應用程序之間存在依賴關係,後一個程序的輸入爲前一個的輸出。每個MapReduce的輸出結果都會寫入磁盤,會造成大量的磁盤IO,導致性能非常低下
核心思想:
-
Map階段(分):默認按塊的大小進行拆分,將數據集拆分成幾個文件
-
Reduce階段(合):數據依賴MapTask併發實例的輸出,數據結果輸出到文件
-
併發運行,互不相干
進程:一個完整的MapReduce程序在分佈式運行時有三類實例進程
-
MrAppMaster:負責整個程序的過程調度及狀態協調
-
MapTask:負責Map階段的整個數據處理流程
-
ReduceTask:負責reduce階段的整個數據處理流程
Yarn
資源調度平臺,負責爲運算程序提供服務器運算資源,相當於一個分佈式的操作系統平臺
Spark
基於內存的快速、通用、可擴展的大數據分析引擎
背景:
-
Hadoop 1.x MapReduce的缺點
-
MR是基於數據集的計算,所以面向數據
-
從存儲介質中獲取(採集)數據,然後進行計算,最後將結果存儲到介質中,所以主要應用於一次性計算,不適合數據挖掘和機器學習這樣的迭代計算和圖像挖掘計算
-
基於文件存儲介質,所以性能非常慢
-
MR和Haddop緊密耦合在一起,無法動態替換
-
-
Spark(2016年6月)先Yarn出來,基於Hadoop 1.x架構思想,採用自己的方式改善Hadoop 1.x的問題
計算基於內存,並且基於Scala語法開發,天生適合迭代計算
資源和計算分開,Master、Executer
使用Hadoop的存儲框架HDFS
特點:
-
快
-
易用:可快速構建不同的應用
-
通用:提供了統一的解決方案
-
兼容性:可以方便地與其他開源產品進行融合