Hadoop架構及集群

来源:https://www.cnblogs.com/gllyun/archive/2020/02/17/12302195.html

Hadoop是一個由Apache基金會所開發的分散式基礎架構,Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce則為海量的數據提供了計算,特點是:高可靠性,高擴展性,高效性,高容錯性。 Hadoop與Google三篇論文 Googl ...


Hadoop是一個由Apache基金會所開發的分散式基礎架構,Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce則為海量的數據提供了計算,特點是:高可靠性,高擴展性,高效性,高容錯性。

Hadoop與Google三篇論文

 Hadoop架構

Hadoop1.x與Hadoop2.x的區別:

 

 

   

 Hadoop整體框架來看:

Hadoop1.0由分散式存儲系統HDFS和分散式計算框架MapReduce組成,其中HDFS由一個NameNode和多個DateNode組成,MapReduce由一個JobTracker和多個TaskTracker組成。

1.x與2.x區別

HDFS角度來看:

  1. Hadoop2.x新增了HDFS HA增加了standbynamenode進行熱點備份,解決了1.x的單點故障
  2. Hadoop2.x新增了HDFS federation,解決了 HDFS的水平擴展能力。 

        

 Mapreduce角度來看:

2.x相比與1.x新增了YRAN框架,Mapreduce的運行環境發生了變化

在1.0中:由一個JobTracker和若幹個TaskTracker兩類服務組成,其中JobTracker負責資源管理和所有作業的控制,TaskTracker負責接收來自JobTracker的命令並執行它。所以MapReduce即是任務調度框架又是計算框架,1.0中會出現JobTracker大包大攬任務過重,而且存在單點故障問題,並且容易出現OOM問題,資源分配不合理等問題。

在2.0中:MASTER端由ResourceManager進行資源管理調度,有ApplicationMaster進行任務管理和任務監控。SLAVE端由NodeManager替代TaskTracker進行具體任務的執行,所以MapReduce2.0只是一個計算框架,具體資源調度全部交給Yarn框架。

2.X和3.X最主要區別:

對比

2.X特性

3.X特性

License

Hadoop 2.x - Apache 2.0,開源

Hadoop 3.x - Apache 2.0,開源

支持的最低Java版本

java的最低支持版本是java 7

java的最低支持版本是java 8

容錯

可以通過複製(浪費空間)來處理容錯。

可以通過Erasure編碼處理容錯。

數據平衡

對於數據,平衡使用HDFS平衡器。

對於數據,平衡使用Intra-data節點平衡器,該平衡器通過HDFS磁碟平衡器CLI調用。

存儲Scheme

使用3X副本Scheme

支持HDFS中的擦除編碼。

存儲開銷

HDFS在存儲空間中有200%的開銷。

存儲開銷僅為50%。

存儲開銷示例

如果有6個塊,那麼由於副本方案(Scheme),將有18個塊占用空間。

如果有6個塊,那麼將有9個塊空間,6block3塊用於奇偶校驗。

YARN時間線服務

使用具有可伸縮性問題的舊時間軸服務。

改進時間線服務v2並提高時間線服務的可擴展性和可靠性。

預設埠範圍

Hadoop 2.0中,一些預設埠是Linux臨時埠範圍。所以在啟動時,他們將無法綁定。

但是在Hadoop 3.0中,這些埠已經移出了短暫的範圍。

工具

使用HivepigTezHamaGiraph和其他Hadoop工具。

可以使用HivepigTezHamaGiraph和其他Hadoop工具。

相容的文件系統

HDFS(預設FS),FTP文件系統:它將所有數據存儲在可遠程訪問的FTP伺服器上。 Amazon S3(簡單存儲服務)文件系統Windows Azure存儲BlobWASB)文件系統。

 

 

它支持所有前面以及Microsoft Azure Data Lake文件系統。

Datanode資源

 Datanode資源不專用於MapReduce,我們可以將它用於其他應用程式。

此處數據節點資源也可用於其他應用程式。

MR API相容性

Hadoop 1.x程式相容的MR API,可在Hadoop 2.X上執行

此處,MR API與運行Hadoop 1.x程式相容,以便在Hadoop 3.X上執行

支持Microsoft Windows

它可以部署在Windows上。

它也支持Microsoft Windows

插槽/容器

Hadoop 1適用於插槽的概念,但Hadoop 2.X適用於容器的概念。通過容器,我們可以運行通用任務。

 

它也適用於容器的概念。

單點故障

具有SPOF的功能,因此只要Namenode失敗,它就會自動恢復。

具有SPOF的功能,因此只要Namenode失敗,它就會自動恢復,無需人工干預就可以剋服它。

HDFS聯盟

Hadoop 1.0中,只有一個NameNode來管理所有Namespace,但在Hadoop 2.0中,多個NameNode用於多個Namespace

 Hadoop 3.x還有多個名稱空間用於多個名稱空間。

可擴展性

我們可以擴展到每個群集10,000個節點。

更好的可擴展性。 我們可以為每個群集擴展超過10,000個節點。

更快地訪問數據

由於數據節點緩存,我們可以快速訪問數據。

這裡也通過Datanode緩存我們可以快速訪問數據。

HDFS快照

Hadoop 2增加了對快照的支持。 它為用戶錯誤提供災難恢復和保護。

Hadoop 2也支持快照功能。

平臺

可以作為各種數據分析的平臺,可以運行事件處理,流媒體和實時操作。

這裡也可以在YARN的頂部運行事件處理,流媒體和實時操作。

群集資源管理

對於群集資源管理,它使用YARN。 它提高了可擴展性,高可用性,多租戶。

對於集群,資源管理使用具有所有功能的YARN


3.x的新特性參考:https://www.cnblogs.com/smartloli/p/9028267.html ;https://www.cnblogs.com/smartloli/p/8827623.html

 HDFS(Hadoop Distributed File System)架構概述

  • NameNode(NN):存儲文件的元數據,如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件許可權),以及每個文件的塊列表和所在的DataNode等。
  • DataNode(DN):在本地文件系統存儲的文件數據,以及塊數據的校驗和。
  • Secondary NameNode(2NN):用來監控HDFS狀態的輔助後臺程式,每隔一段時間獲取HDFS元數據的快照。

 YARN架構概述

MapReduce將計算過程分為兩個階段:MapReduce,如圖2-25所示

1Map階段並行處理輸入數據

2Reduce階段對Map結果進行彙總

 

 

 大數據技術生態體系

圖中涉及的技術名詞解釋如下:

1SqoopSqoop是一款開源的工具,主要用於在Hadoop、Hive與傳統的資料庫(MySql)間進行數據的傳遞,可以將一個關係型資料庫(例如 :MySQL,Oracle 等)中的數據導進到HadoopHDFS中,也可以將HDFS的數據導進到關係型資料庫中。

2FlumeFlumeCloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。

3KafkaKafka是一種高吞吐量的分散式發佈訂閱消息系統,有如下特性:

1)通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。

2)高吞吐量:即使是非常普通的硬體Kafka也可以支持每秒數百萬的消息

3)支持通過Kafka伺服器和消費機集群來分區消息。

4)支持Hadoop並行數據載入。

4StormStorm用於連續計算,對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。

5SparkSpark是當前最流行的開源大數據記憶體計算框架。可以基於Hadoop上存儲的大數據進行計算。

6OozieOozie是一個管理Hdoop作業(job)的工作流程調度管理系統。

7HbaseHBase是一個分散式的、面向列的開源資料庫。HBase不同於一般的關係資料庫,它是一個適合於非結構化數據存儲的資料庫。

8HiveHive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

10R語言:R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、源代碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。

11Mahout:Apache Mahout是個可擴展的機器學習和數據挖掘庫。

12ZooKeeperZookeeperGoogleChubby一個開源的實現。它是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分散式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和性能高效、功能穩定的系統提供給用戶。

推薦系統框架圖

 Hadoop集群搭建

虛擬機環境準備 -----/etc/hosts:

  • 克隆虛擬機
  • 修改克隆虛擬機的靜態IP
  • 修改主機名
  • 關閉防火牆
  • 創建用戶gll
  • 配置gll用戶具有root許可權
  • 在/opt目錄下創建文件夾         
1)在/opt目錄下創建module、software文件夾   

 [[email protected] opt]$ sudo mkdir module
 [[email protected] opt]$ sudo mkdir software     

(2)修改module、software文件夾的所有者cd   

 [[email protected] opt]$ sudo chown atguigu:atguigu module/ software/
 [[email protected] opt]$ ll

 總用量 8
 drwxr-xr-x. 2 atguigu atguigu 4096 1月  17 14:37 module
 drwxr-xr-x. 2 atguigu atguigu 4096 1月  17 14:38 software

安裝JDK

卸載現有JDK

1)查詢是否安裝Java軟體:
 [[email protected] opt]$ rpm -qa | grep java

(2)如果安裝的版本低於1.7,卸載該JDK:
 [[email protected] opt]$ sudo rpm -e 軟體包

(3)查看JDK安裝路徑:
 [[email protected] ~]$ which java

Linux系統下的opt目錄中查看軟體包是否導入成功

[[email protected] opt]$ cd software/
[[email protected] software]$ ls
hadoop-2.7.2.tar.gz  jdk-8u144-linux-x64.tar.gz

解壓JDK/opt/module目錄下

  [[email protected] software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

配置JDK環境變數

1)先獲取JDK路徑
  [[email protected] jdk1.8.0_144]$ pwd
  /opt/module/j

您的分享是我們最大的動力!

更多相關文章
  • WPF支持真正的透明效果。這意味著,如果在一個性質或元素上層疊另外幾個形狀或元素,並讓所有這些形狀和元素具有不同的透明度,就會看到所期望的效果。通過該特性能夠創建透過上面的元素可以看到的的圖像背景,這是最簡單的情形。最複雜的情形是,使用該特性可創建多層動畫和其他效果,對於其他框架來說這是很難實現的。 ...
  • redis集群搭建--參考微信公眾號(詩情畫意程式員):https://mp.weixin.qq.com/s/s5eJE801TInHgb8bzCapJQ 這是來自redis官網的一段介紹,大概意思就是: Redis是一個開源(BSD許可)的記憶體數據結構存儲,用作資料庫、緩存和消息代理。它支持諸如字 ...
  • 外部SRAM註意事項為使外部SRAM器件達到出最佳性能,建議遵循以下原則:使用與連接的主系統控制器的介面數據帶寬相同的SRAM。如果管腳使用或板上空間的限制高於系統性能要求,可以使用較連接的控制器的數據帶寬小一些的SRAM設備,以便減少管腳數量並減少PCB板上可能的存儲器數量。然而這種變化將導致降低 ...
  • [toc] I am a 程式猿兒,新年第一篇,今天推薦一下那些大神平常使用的電腦軟體和工具類網站,讓你秒變大神。 下麵的整理前面部分是基礎的軟體,做不做技術都需要安裝的一些,後面部分是對程式猿推薦的一些開發軟體和插件。 操作系統 1、微軟正版win10系統安裝:bai度搜索 下載Windows10 ...
  • 通過前面文章的學習已經掌握了Linux系統配置管理的知識,本文講解Centos7網路配置知識。 ...
  • 作為一名後端開發,MySQL的使用必不可少,合理的使用索引和索引調優是後端開發者必須掌握的技能之一。 ...
  • 1 環境 樹莓派: mysql: 2 指令 以下是從命令行中連接mysql伺服器的簡單實例: [[email protected]]# mysql -u root -p Enter password:****** 或者: [email protected]:~ $ sudo mysql 查看資料庫: mysql> SHO ...
  • HDFS(Hadoop Distributed File System) 分散式文件系統,HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用.由NameNode,若幹DataNode,以及Secondary NameNode組成。 ...
一周排行
  • 前幾天發佈了 "抄抄《CSS 故障藝術》的動畫" 這篇文章,在這篇文章里介紹瞭如何使用Win2D繪製文字然後配合BlendEffect製作故障藝術的動畫。本來打算就這樣收手不玩這個動畫了,但後來又發現性能不符合理想。明明只是做做Resize動畫和用BlendEffect混合,為什麼性能會這麼差呢? ...
  • 控制條控制項: progressBar 不能按照你程式的進程自動變化,需認為計算,調整變化量 private void progressBar1_Click(object sender, EventArgs e) { this.progressBar1.Maximum = 100;//設置進度條最大長 ...
  • 首先創建一個asp.net core web應用程式 第二步 目前官方預置了7種模板項目供我們選擇。從中我們可以看出,既有我們熟悉的MVC、WebAPI,又新添加了Razor Page,以及結合比較流行的Angular、React前端框架的模板項目。 空項目模板 Program.cs using S ...
  • 對閉包的理解 1.對於成員變數和局部變數:成員變數就是方法外部,類的內部定義的變數;局部變數就是方法或語句塊內部定義的變數。局部變數必須初始化。 形式參數是局部變數,局部變數的數據存在於棧記憶體中。棧記憶體中的局部變數隨著方法的消失而消失。成員變數存儲在堆中的對象裡面,由垃圾回收器負責回收。 成員變數它 ...
  • Xamarin.Forms讀取並展示Android和iOS通訊錄 TerminalMACS客戶端 本文同步更新地址: https://dotnet9.com/11520.html https://terminalmacs.com/861.html 閱讀導航: 一、功能說明 二、代碼實現 三、源碼獲取 ...
  • 做下對文件複製操作相關的筆記: /// <summary> /// 文件幫助類 /// </summary> public class FileHelper { /// <summary> /// 複製一個目錄下所有文件到一個新目錄下 /// </summary> /// <param name=" ...
  • 前言 有一個東西叫做鴨子類型,所謂鴨子類型就是,只要一個東西表現得像鴨子那麼就能推出這玩意就是鴨子。 C 裡面其實也暗藏了很多類似鴨子類型的東西,但是很多開發者並不知道,因此也就沒法好好利用這些東西,那麼今天我細數一下這些藏在編譯器中的細節。 不是只有 和 才能 在 C 中編寫非同步代碼的時候,我們經 ...
  • [toc] 1.應用背景 底端設備有大量網路報文(位元組數組):心跳報文,數據採集報文,告警報文上報。需要有對應的報文結構去解析這些位元組流數據。 2.結構體解析 由此,我第一點就想到了用結構體去解析。原因有以下兩點: 2.1.結構體存在棧中 類屬於引用類型,存在堆中;結構體屬於值類型,存在棧中,在一個 ...
  • 《深入淺出 C#》 (第3版) [作者] (美) Andrew Stellman (美) Jennifer Greene[譯者] (中) 徐陽 丁小峰 等譯[出版] 中國電力出版社[版次] 2016年08月 第1版[印次] 2018年04月 第4次 印刷[定價] 148.00元 【引子】 要學習編程 ...
  • 記錄使用對象初始值設定項初始化對象。 using System; using System.Collections.Generic; namespace ConsoleApp2 { class Program { static void Main(string[] args) { // 使用構造函數 ...
x