研究生階段將要接觸大資料和深度學習的知識,在網上找的教程大多一上來就是一堆名詞又解釋不清楚,對新手相當不友好,在慕課網看到乙個教程,利用部落格記錄下自己學習的過程。
關於hadoop 最好的介紹莫過於官網的文件,hadoop的官網如下,
我們一句一句來看看hadoop官網是怎麼介紹的。
the apache™ hadoop® project develops open-source software for reliable, scalable, distributed computing.這段話說hadoop是乙個開源的軟體,並且是可靠性的(reliable)、可擴充套件性的(scalable)、分布式計算的(distributed computing)軟體。這三個特點我們後面會進行詳細解釋。
這段話的意思是,hadoop是乙個框架,用來幹什麼事呢?可以允許分布式處理大資料集(big data sets),而且這個資料集是橫跨在集群的機器上的(clusters of computers)。也就是說資料可以分開地儲存在集群中的每個機器(節點)上,並且可以跨節點進行處理計算,它使用的是一種簡單的程式設計模型(using ****** programming models)。他被設計成可以從單個伺服器(single servers)擴充套件到數千台機器的的集群上,每台機器都提供本地的儲存和計算服務。也就是說當資料量小的時候,可以使用少一點的機器的集群,而面對乙個大量資料的情況時,現有的機器不足以支撐儲存運算時,只需要再新增一些機器到集群中,就能解決問題。最後,hadoop並不是依賴硬體來提供高可用性,而是它自己被設計成可以檢測和處理應用層的故障。在集群中每台機器上提供高可靠性服務,而這些機器可能會傾向於出現故障。
the project includes these modules:hadoop框架包含以下4個模組:
關於hadoop的概述就就看到這裡。
hadoop可以搭建大型資料倉儲,pb級資料的儲存、處理、分析、統計等業務。
但是它的系統並不是開源的,只是把技術成果發表出來了。那麼我們想用這個技術怎麼辦?於是hdfs應運而生,hdfs相當於gfs的轉殖版,是社群中的一些程式設計師按照gfs的技術做出的開源實現。
hdfs的全稱是hadoop distributed file system,翻譯過來就是分布式檔案系統。
那麼hdfs有什麼樣的特點呢?
hadoop會將檔案切分成指定大小的資料塊並以多副本的方式儲存在多個機器上。多副本我們知道了,檔案切分的思想其實在作業系統中也有,乙個1g的檔案,乙個1m的檔案,怎樣給他們分配記憶體空間,作業系統中採用的是分頁的方法,將檔案切分成大小相同的資料塊(比如4m),也就是分頁,然後分別放入記憶體的頁框中。hdfs也是將檔案切成固定大小,再分別備份放入不同的機器中儲存,這個預設切分大小是128m,當然也可以在配置中設定這個值的大小。
說到這,有人可能會問,那麼資料切分的工作需要我們做嗎?當然不用,乙個成熟的框架,肯定是使用者怎麼舒服怎麼來,不然別人為什麼要用你的框架。所以hadoop的資料切分,以及多副本、容錯的操作都是對使用者透明的,都是hadoop內部已經做好的,不需要使用者做了。使用者只需要像正常操作檔案一樣,比如建立檔案、刪除檔案,跟windows下或linux下的操作方式是一樣的。
下面這個圖說明了hadoop的多副本儲存機制:
我們看對於上面的兩個檔案,hdfs是怎麼儲存的,filename是檔名, numreplicas是複製的份數, blockids是檔案被切分成資料塊後,每個塊的id。file1檔案被切成2塊,每塊複製2份,file2檔案被切成3塊,每塊複製3份。我們可以看到對於每個檔案的每個塊,其儲存位置都是分散在各個節點上的。為什麼說hdfs可靠,以1號塊為例,如果1號節點上的1號塊沒了,可以再從3號節點中獲取,仍然能獲取到1號塊的內容。至於為什麼要給檔案編號這個問題應該不用多說了吧,當然是為了能組合成乙個完整的檔案。
所謂yarn,它的全稱是yet another resource negotiator,翻譯過來就是另一種資源協調者,換句話說就是資源的管理排程者,yarn負責整個hadoop集群資源的管理和排程。舉個例子,如果乙個作業要執行,那麼該占用多少cpu資源,占用多少記憶體空間,這都是由排程系統所完成的。
yarn的特點跟hdfs很相似:
mapreduce框架源自於google的mapreduce**,發表於2023年12月。同hdfs一樣,mapreduce也是google的mapreduce的轉殖版。
mapreduce的特點,擴充套件性和容錯性跟前面的差不多,還有個特點就是海量資料的離線處理,它可以處理的資料量非常大,所謂離線處理,就是把海量的資料投到這個框架中去跑,由於同一批次處理海量的資料,自然延時性比較大,比較耗時。
對於mapreduce框架的理解可以以詞頻統計的例子來說明:
問題是這樣的,給定乙個檔案,統計出這個檔案中每個單詞的出現次數。我們來看看mapreduce框架是如何處理這樣的問題的。
最終將reduce後的結果輸出到乙個檔案中就解決問題了。
我們來總結以下hadoop 比起其他的框架,它的優勢主要體現在哪些方面:
高擴充套件性
其他
到這裡我們可以說對hadoop已經有了乙個初步的認識,後面我們會就hdfs、yarn進行詳細的說明。
慕課網《10小時入門大資料》
《寫給大忙人看的hadoop2》
hadoop學習筆記之一 初識hadoop
引言 最近了解到 使用hadoop的專案多了起來,hadoop對於許多測試人員來說或許是個新鮮玩兒,因此,把自己之前整理的學習筆記整理發上來,希望通過此系列文章快速了解hadoop的基本概念和架構原理,從而助於hadoop相關專案的測試理解和溝通。hadoop簡介 hadoop 是乙個實現了 map...
Hadoop學習筆記 Hadoop初識
序言 資訊化發展到當今,網際網路的資料量是不斷地增加,那麼如何很好的處理以及利用這些資料可能是未來的乙個發展方向,這也之所以產生了各種平台的雲計算。對於網際網路而言,大資料量可分為兩種 第 一 大訪問量請求 第 二 大資料量處理。大訪問量請求這個事應用端應該思考的問題,如何很好的處理大的訪問量,如何...
hadoop筆記 HA部署
管理指令碼遠端管理節點,再集群中隨便挑一台,把公鑰發給所有 搭建ha時,namenode的zkfc需要免秘鑰,用來管理自己和對方 故障應對 邏輯物理對映 jn相關配置,資訊描述 故障發生時免秘鑰配置 還有一種是shell指令碼 記得格式化之前啟動jn 第一台格式化之後啟動,並且讓後續namenode...