引言
最近了解到**使用hadoop的專案多了起來,hadoop對於許多測試人員來說或許是個新鮮玩兒,因此,把自己之前整理的學習筆記整理發上來,希望通過此系列文章快速了解hadoop的基本概念和架構原理,從而助於hadoop相關專案的測試理解和溝通。
hadoop簡介
hadoop 是乙個實現了 mapreduce 計算模型的開源分布式並行程式設計框架,借助於 hadoop, 程式設計師可以輕鬆地編寫分布式並行程式,將其執行於計算機集群上,完成海量資料的計算。
如果你對hadoop不熟悉,下面這些名詞你或許耳熟能詳,google file system、google map/reduce模型、lucene 、nutch、阿里雲梯、雲計算等,他們都與hadoop有著或深或淺的關係,原來hadoop離我們如此之近,那麼花些時間繼續了解它吧。
hadoop的架構
先拋開hadoop,簡單地想想看,假設我們需要讀乙個10tb的資料集,怎麼辦?在傳統的系統上,這需要很長時間,因為硬碟的傳輸速度是受限的。乙個簡單的辦法是將資料儲存在多個磁碟上,同時從多個磁碟並行讀取資料,這將大大減少讀取時間。
上面的方案需要解決兩個主要問題,乙個是硬體故障,要保證其中乙個硬體壞了但資料仍然完整,hadoop的檔案系統hdfs(hadoop distributed filesystem)提供了一種解決方式。另外乙個問題是如何並行讀取資料並合併保證正確性,通過mapreduce的程式設計模型可以簡化這個問題。簡而言之,hadoop提供了乙個穩定的共享儲存和分析系統,儲存由hdfs實現,分析由mapreduce實現,這兩者構成了hadoop的核心功能。
hdfs
hdfs集群有兩種節點,以管理者-工作者模式執行,即1個名稱節點(namenode)和n個資料節點(datanode)。其底層實現是將檔案切割成塊,然後將這些塊儲存在不同的datanode上。為了容錯容災,每個塊還被複製多份儲存在不同的datanode上。namenode管理檔案系統的命名空間,記錄每個檔案被切割成了多少塊,這些塊可以從哪些datanode上獲得,以及各個datanode的狀態資訊等。下圖是hadoop集群的簡化檢視
hdfs內部通訊都是基於標準的tcp/ip協議,namenode 依賴來自每個 datanode 的定期心跳(heartbeat)訊息。每條訊息都包含乙個塊報告,namenode 可以根據這個報告驗證塊對映和其他檔案系統元資料。如果 datanode 不能傳送心跳訊息,namenode 將採取修復措施,重新複製在該節點上丟失的塊。更多hdfs的架構和設計請閱讀
mapreduce
上圖說明了用 mapreduce 來處理大資料集的過程, 這個 mapreduce 的計算過程簡而言之,就是將大資料集分解為成若干個小資料集,每個(或若干個)資料集分別由集群中的乙個結點(一般就是一台普通的計算機)進行處理並生成中間結果,然後這些中間結果又由大量的結點進行合併, 形成最終結果。
計算模型的核心是 map 和 reduce 兩個函式,這兩個函式由使用者負責實現,功能是按一定的對映規則將輸入的 對轉換成另乙個或一批 對輸出。下圖是乙個簡單的mapreduce示例,實現字數統計功能。
分布式並行運算
hadoop 的分布式並行運算有乙個作為主控的jobtracker,用於排程和管理其它的 tasktracker, jobtracker 可以執行於集群中任一台計算機上。tasktracker負責執行任務,必須執行於 datanode 上,即 datanode 既是資料儲存結點,也是計算結點,這樣可以減少資料在網路上的傳輸,降低對網路頻寬的需求。 jobtracker 將 map 任務和 reduce 任務分發給空閒的 tasktracker, 讓這些任務並行執行,並負責監控任務的運**況。如果某乙個 tasktracker 出故障了,jobtracker 會將其負責的任務轉交給另乙個空閒的 tasktracker 重新執行。
hadoop的其他子專案
上面介紹的mapreduce、hdfs、分布式並行運算是hadoop最核心的功能。還有一些子專案提供補充性服務。如hive(提供基於sql的查詢語言查詢儲存在hdfs中的資料)、hbase(一種分布式、列儲存資料庫,適用於需要實時讀寫、隨機訪問超大資料集的場景)、zookeeper(乙個分布式、高可用性的協調服務,提供分布式鎖之類的基本服務)、pig(一種資料流語言和執行環境,用以檢索非常大的資料集,使程式設計師能專注於資料而不是執行本質)等。
小結
Hadoop學習筆記(一)初識Hadoop
研究生階段將要接觸大資料和深度學習的知識,在網上找的教程大多一上來就是一堆名詞又解釋不清楚,對新手相當不友好,在慕課網看到乙個教程,利用部落格記錄下自己學習的過程。關於hadoop 最好的介紹莫過於官網的文件,hadoop的官網如下,我們一句一句來看看hadoop官網是怎麼介紹的。the apach...
Hadoop學習筆記 Hadoop初識
序言 資訊化發展到當今,網際網路的資料量是不斷地增加,那麼如何很好的處理以及利用這些資料可能是未來的乙個發展方向,這也之所以產生了各種平台的雲計算。對於網際網路而言,大資料量可分為兩種 第 一 大訪問量請求 第 二 大資料量處理。大訪問量請求這個事應用端應該思考的問題,如何很好的處理大的訪問量,如何...
Hadoop學習筆記1 初識Hadoop
資料越來越多,資料的增長越來越快,儲存和分析這些資料成為挑戰!當資料量逐漸變大時,單個磁碟的讀寫速度成為瓶頸。解決辦法是,將資料分散儲存,通過並行讀取提高讀寫資料。要達到這種目的,面臨的2個問題 hadoop的hdfs和mapreduce為這兩個問題提供了解決方案。為什麼不能用關係型資料庫 更多磁碟...