hadoop初學



Hadoop 學習筆記(一) 緩存

最近在學習Hadoop分佈式系統,在這裏與你們分享一下:

什麼是Hadoop分佈式系統? 服務器

從命名名稱上看,首先能夠認爲他是一個工具,可能有人認爲是廢話,可是這個理念對我來講很重要,由於他是我認真學習下去的一個重要的理由,既然是工具我相信就能把他掌握。
他是一個 分佈式系統 基礎架構,由Apache基金會開發,他的產生由Google公司的三篇著名的論文而來,也是Google提出雲計算概念的由來,你們有時間能夠閱讀一下這三篇經典的論文。他是一種用戶在沒必要要分析底層的狀況下,利用集羣實現的一種處理高併發數據的計算和存儲的框架。他實現的功能就是讓用戶沒必要使用昂貴的服務器,利用平時的小型主機就能夠完成海量數據的查詢與存儲的基礎框架。
Hadoop 分佈式有哪些優勢
高可靠性
Hadoop 分佈式具備很好的容錯機制,假設一臺機器出現故障他維護的副本機器會直接替換掉出現故障的機器,以保證系統的正常運行。
高擴展性
Hadoop 能夠利用計算機簇集成進行計算,能夠很輕鬆的擴展到數千的計算機節點。
高效性
Hadoop 充分利用其分佈式集羣的特色,將海量數據分塊處理,並細分給每一臺小型計算機進行計算,保證了他的高效率並行計算。
Hadoop 採用JAVA語言開發,因此跨平臺性很是好,等等還有不少優勢,在這裏就不和你們一一介紹了。
Hadoop 核心之—— MapReduce


     MapReduce工做原理(如圖) 架構

MapReduce的工做原理大體分爲以下4個階段:
客戶端:提交MapReduce做業。
Jobtracker:協調做業程序。Jobtracker是一個Java程序,他的主類是JobTracker.
Tasktracker:運行做業分配後的任務,他也是一個Java應用程序,他的主類是TaskTracker.
分佈式文件系統:通常爲HDFS,用來實現實體間的共享做業文件。
做業提交
JobClientRunJob()方法用於建立JobClient實例,並調用submitJob()方法的便捷方式,調用runJob()方法對做業進行輪詢,若是發現做業有變化,他自動將做業提交到控制檯。若是提交成功他會把做業計數提交到控制檯,若是失敗的話他會將錯誤記錄提交到控制檯。
做業初始化
JobTracker經過調用其submitJob()獲得做業後,會放進內部的做業隊列當中,交由做業調度器(job scheduler)進行調度,並對其進行初始化。初始化包括,建立一個正在運行的業務對象,任務和記錄,這樣就方便程序跟蹤任務的運行狀態和進程。
做業的分配
tasktarcker運行一個簡單的循環,按期發送‘心跳’給JobTracker,他會告訴JobTrackertasktracker是否還活着,同時也充當二者之間溝通的橋樑。
任務執行
tasktracker已經被分配了一個任務,下一步就是運行了,首先,他會經過共享文件系統把做業Jar文件複製到tasktracker所在的文件系統,從而實現做業的JAR文件的本地化,tasktracker,將應用程序,從分佈式緩存複製到本地磁盤中並進行解壓,而後建立任務實例,並運行。
進度和狀態
MapReduce做業是常時間批量做業,運行時間從幾秒到幾小時甚至更長,這麼長的時間用戶確定須要掌握做業的進展狀況,一個做業和他的每一個任務都有一個狀態,包括做業或任務的狀態如:運行狀態,成功狀態,失敗狀態,mapreduce的進度,做業計數器的值,狀態消息,或描述等等。這些狀態都是隨着做業時間的改變而不斷變化。
做業完成
JobTracker收到做業最後一個任務已經完成的通知後,便把做業狀態改成成功,而後JobClient查詢狀態時,便知道執行的任務已經執行成功了。因而JobClient端會打印給客戶消息告知客戶,而後從runJob()方法返回。
併發

相關文章
相關標籤/搜索