1. 程式人生 > 實用技巧 >Apache Hadoop的重要組成

Apache Hadoop的重要組成

Hadoop的廣義和狹義之分

狹義的Hadoop:指的是一個框架,Hadoop是由三部分組成:HDFS:分散式檔案系統–》儲存;
MapReduce:分散式離線計算框架–》計算;Yarn:資源排程框架
廣義的Hadoop:廣義Hadoop是不僅僅包含Hadoop框架,除了Hadoop框架之外還有一些輔助框
架。Flume:日誌資料採集,Sqoop:關係型資料庫資料的採集;
Hive:深度依賴Hadoop框架完成計算(sql),Hbase:大資料領域的資料庫(mysql)
Sqoop:資料的匯出
廣義Hadoop指的是一個生態圈
大資料的特點
大資料的特點可以用 IBM 曾經提出的 “5V” 來描述,如下

在這裡插入圖片描述

  • 大量
    採集、儲存和計算的資料量都非常大。
    計算機儲存單位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB、NB、DB來表示,
    它們之間的關係是
    1GB = 1024 MB
    1TB = 1024 GB
    1PB = 1024 TB
    1EB = 1024 PB
    1ZB = 1024 EB
    1YB = 1024 ZB
    1BB = 1024 YB
    1NB = 1024 BB
    1DB = 1024 NB
    以PB為例,PB級資料量有多大?是怎樣的一個概念?
    假如手機播放MP3的速度為平均每分鐘1MB,而1首歌曲的平均時長為4分鐘,那麼1PB存量的歌曲可以連續播放2000年。
    1PB 也相當於50%的全美學術研究圖書館藏書諮詢內容
    (1)1986年,全球只有0.02EB也就是約21000TB的資料量
    (2)2007年,全球就是280EB也就是約300000000TB的資料量,翻了14000倍
    (3)近些年,由於移動網際網路及物聯網的出現,各種終端裝置的接入,各種業務形式的普及,平均每40個月,全球的資料量就會翻倍!2012年,每天會產生2.5EB的資料量
    (4)基於IDC的報告預測,從2013年到2020年,全球資料量會從4.4ZB猛增到44ZB!而到了2025年,全球會有163ZB的資料量!
    全球的資料量已經大到爆了!而傳統的關係型資料庫根本處理不了如此海量的資料
  • 高速
    在大資料時代,資料的建立、儲存、分析都要求被高速處理,比如電商網站的個性化推薦儘可能要求實時完成推薦,這也是大資料區別於傳統資料探勘的顯著特徵。
  • 多樣
    資料形式和來源多樣化。包括結構化、半結構化和非結構化資料,具體表現為網路日誌、音
    頻、視訊、圖片、地理位置資訊等等,多型別的資料對資料的處理能力提出了更高的要求
  • 真實
    確保資料的真實性,才能保證資料分析的正確性
  • 低價值
    資料價值密度相對較低,或者說是浪裡淘沙卻又彌足珍貴。網際網路發展催生了大量資料,資訊海量,但價值密度較低,如何結合業務邏輯並通過強大的機器演算法來挖掘資料價值,是大資料時代最需要解決的問題,也是一個有難度的課題

Hadoop=HDFS(分散式檔案系統)+MapReduce(分散式計算框架)+Yarn(資源協調框架)+Common模組

  1. Hadoop HDFS:(Hadoop Distribute File System )一個高可靠、高吞吐量的分散式檔案系統
    比如:100T資料儲存,
    “分而治之”
    分:拆分–》資料切割,100T資料拆分為10G一個數據塊由一個電腦節點儲存這個資料塊。
    資料切割、製作副本、分散儲存
    在這裡插入圖片描述
    圖中涉及到幾個角色
  • NameNode(nn):儲存檔案的元資料,比如檔名、檔案目錄結構、檔案屬性(生成時間、副本數、檔案許可權),以及每個檔案的塊列表和塊所在的DataNode等。

  • SecondaryNameNode(2nn):輔助NameNode更好的工作,用來監控HDFS狀態的輔助後臺程式,每隔一段時間獲取HDFS元資料快照。

  • DataNode(dn):在本地檔案系統儲存檔案塊資料,以及塊資料的校驗
    注意:NN,2NN,DN這些既是角色名稱,程序名稱,代指電腦節點名稱!

2. Hadoop MapReduce:一個分散式的離線平行計算框架

拆解任務、分散處理、彙整結果
MapReduce計算 = Map階段 + Reduce階段
Map階段就是“分”的階段,並行處理輸入資料;
Reduce階段就是“合”的階段,對Map階段結果進行彙總
在這裡插入圖片描述

3. Hadoop YARN:作業排程與叢集資源管理的框架

在這裡插入圖片描述
Yarn中有如下幾個主要角色,同樣,既是角色名、也是程序名,也指代所在計算機節點名稱

  • ResourceManager(rm):處理客戶端請求、啟動/監控ApplicationMaster、監控NodeManager、資源分配與排程
  • NodeManager(nm):單個節點上的資源管理、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令
  • ApplicationMaster(am):資料切分、為應用程式申請資源,並分配給內部任務、任務監控與容錯。
  • Container:對任務執行環境的抽象,封裝了CPU、記憶體等多維資源以及環境變數、啟動命令等任務執行相關的資訊

ResourceManager是老大,NodeManager是小弟,ApplicationMaster是計算任務專員
在這裡插入圖片描述
4. Hadoop Common:支援其他模組的工具模組(Configuration、RPC、序列化機制、日誌操作)