1.hdfs 分布式檔案系統
hadoop分布式檔案系統hdfs是針對谷歌分布式檔案系統(google file system,gfs)的開源實現,它是hadoop兩大核心組成部分之一,提供了在廉價伺服器集群中進行大規模分布式檔案儲存的能力。
hdfs具有很好的容錯能力,並且相容廉價的硬體裝置,因此,可以以較低的成本利用現有機器實現大流量和大資料量的讀寫。
hdfs採用了主從(master/sl**e)結構模型,乙個hdfs集群包括乙個名稱節點和若干個資料節點。名稱節點作為中心伺服器,負責管理檔案系統的命名空間及客戶端對檔案的訪問。
集群中的資料節點一般是乙個節點執行乙個資料節點程序,負責處理檔案系統客戶端的讀/寫請求,在名稱節點的統一排程下進行資料塊的建立、刪除和複製等操作。
客戶端訪問檔案機制
使用者在使用 hdfs 時,仍然可以像在普通檔案系統中那樣,使用檔名去儲存和訪問檔案。
實際上,在系統內部,乙個檔案會被切分成若干個資料塊,這些資料塊被分布儲存到若干個資料節點上。
當客戶端需要訪問乙個檔案時,首先把檔名傳送給名稱節點,名稱節點根據檔名找到對應的資料塊(乙個檔案可能包括多個資料塊),再根據每個資料塊資訊找到實際儲存各個資料塊的資料節點的位置,並把資料節點位置傳送給客戶端,最後,客戶端直接訪問這些資料節點獲取資料。在整個訪問過程中,名稱節點並不參與資料的傳輸。
這種設計方式,使得乙個檔案的資料能夠在不同的資料節點上實現併發訪問,大大提高了資料的訪問速度。
2.mapreduce
mapreduce 是一種分布式並行程式設計模型,用於大規模資料集(大於1tb)的並行運算,它將複雜的、執行於大規模集群上的平行計算過程高度抽象到兩個函式:map和reduce。
mapreduce極大方便了分布式程式設計工作,程式設計人員在不會分布式並行程式設計的情況下,也可以很容易將自己的程式執行在分布式系統上,完成海量資料集的計算。
平行計算流程
在mapreduce中,乙個儲存在分布式檔案系統中的大規模資料集,會被切分成許多獨立的小資料塊,這些小資料塊可以被多個map任務並行處理。mapreduce框架會為每個map任務輸入乙個資料子集,map任務生成的結果會繼續作為reduce任務的輸入,最終由reduce任務輸出最後結果,並寫入分布式檔案系統。
涉及理念:計算向資料靠攏
mapreduce 設計的乙個理念就是「計算向資料靠攏」,而不是「資料向計算靠攏」,因為移動資料需要大量的網路傳輸開銷,尤其是在大規模資料環境下,這種開銷尤為驚人,所以,移動計算要比移動資料更加經濟。本著這個理念,在乙個集群中,只要有可能,mapreduce框架就會將map程式就近地在 hdfs 資料所在的節點執行,即將計算節點和儲存節點放在一起執行,從而減少了節點間的資料移動開銷。
3.yarn
yarn 是負責集群資源排程管理的元件。yarn 的目標就是實現「乙個集群多個框架」,即在乙個集群上部署乙個統一的資源排程管理框架yarn,在yarn之上可以部署其他各種計算框架,比如mapreduce、tez、storm、giraph、spark、openmpi等,由yarn為這些計算框架提供統一的資源排程管理服務(包括 cpu、記憶體等資源),並且能夠根據各種計算框架的負載需求,調整各自占用的資源,實現集群資源共享和資源彈性收縮。
通過這種方式,可以實現乙個集群上的不同應用負載混搭,有效提高了集群的利用率,同時,不同計算框架可以共享底層儲存,在乙個集群上整合多個資料集,使用多個計算框架來訪問這些資料集,從而避免了資料集跨集群移動,最後,這種部署方式也大大降低了企業運維成本。
yarn支援的計算框架
目前,可以執行在yarn之上的計算框架包括離線批處理框架mapreduce、記憶體計算框架spark、流計算框架storm和dag計算框架tez等。和yarn一樣提供類似功能的其他資源管理排程框架還包括mesos、torca、corona、borg等。
4.hbase
hbase 是針對谷歌 bigtable 的開源實現,是乙個高可靠、高效能、面向列、可伸縮的分布式資料庫,主要用來儲存非結構化和半結構化的鬆散資料。
hbase可以支援超大規模資料儲存,它可以通過水平擴充套件的方式,利用廉價計算機集群處理由超過10億行元素和數百萬列元素組成的資料表
hbase利用mapreduce來處理hbase中的海量資料,實現高效能計算;利用 zookeeper 作為協同服務,實現穩定服務和失敗恢復;使用hdfs作為高可靠的底層儲存,利用廉價集群提供海量資料儲存能力,當然,hbase也可以在單機模式下使用,直接使用本地檔案系統而不用 hdfs 作為底層資料儲存方式,不過,為了提高資料可靠性和系統的健壯性,發揮hbase處理大量資料等功能,一般都使用hdfs作為hbase的底層資料儲存方式。此外,為了方便在hbase上進行資料處理,sqoop為hbase提供了高效、便捷的rdbms資料匯入功能,pig和hive為hbase提供了高層語言支援。
5.hive
hive是乙個基於hadoop的資料倉儲工具,可以用於對儲存在hadoop檔案中的資料集進行資料整理、特殊查詢和分析處理。
hive的學習門檻比較低,因為它提供了類似於關聯式資料庫sql語言的查詢語言——hiveql,可以通過hiveql語句快速實現簡單的mapreduce統計,hive自身可以自動將hiveql語句快速轉換成mapreduce任務進行執行,而不必開發專門的mapreduce應用程式,因而十分適合資料倉儲的統計分析。
6.flume
flume 是 cloudera 公司開發的乙個高可用的、高可靠的、分布式的海量日誌採集、聚合和傳輸系統。
flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,flume提供對資料進行簡單處理,並寫到各種資料接收方的能力。
7.sqoop
sqoop是sql-to-hadoop的縮寫,主要用來在hadoop和關聯式資料庫之間交換資料,可以改進資料的互操作性。
通過sqoop,可以方便地將資料從mysql、oracle、postgresql等關聯式資料庫中匯入hadoop(比如匯入到hdfs、hbase或hive中),或者將資料從hadoop匯出到關聯式資料庫,使得傳統關聯式資料庫和hadoop之間的資料遷移變得非常方便。
3.如何實現hadoop與spark的統一部署?
spark可執行於yarn之上,與hadoop進行統一部署,即「spark on yarn」,資源管理和排程依賴yarn,分布式儲存則依賴hdfs。
1 大資料概述作業
一.列舉hadoop生態的各個元件及其功能 以及各個元件之間的相互關係,以圖呈現並加以文字描述。hadoop生態系統元件有hdfs mapreduce zoopker hbase hive pig mahout sqoop flume spark yarn等功能元件。1 hdfs是乙個分布式檔案系統...
1 大資料概述
大資料時代的三種標誌 大資料,雲計算,物聯網。雲計算概念 通過網路以服務的方式為使用者提供非常廉價的it資源。雲計算通俗點講就是把以前需要本地處理器計算的任務交到了遠端伺服器上去做。幾個雲計算的應用例項 第二是網頁遊戲。這其實也是一種雲計算應用,把以前需要在本地安裝的客戶端放到了網頁上,通過基於網頁...
1 大資料概述
1.借鑑網圖 2.兩者的各方面比較 1 spark對標於hadoop中的計算模組mr,但是速度和效率比mr要快得多 2 spark沒有提供檔案管理系統,所以,它必須和其他的分布式檔案系統進行整合才能運作,它只是乙個計算分析框架,專門用來對分布式儲存的資料進行計算處理,它本身並不能儲存資料 3 spa...