【大數據】瞭解Hadoop框架的基礎知識

来源:https://www.cnblogs.com/Javame/archive/2018/11/09/9935177.html
-Advertisement-
Play Games

介紹 此Refcard提供了Apache Hadoop,這是最流行的軟體框架,可使用簡單的高級編程模型實現大型數據集的分散式存儲和處理。我們將介紹Hadoop最重要的概念,描述其架構,指導您如何開始使用它以及在Hadoop上編寫和執行各種應用程式。 簡而言之,Hadoop是Apache Softwa ...


介紹

此Refcard提供了Apache Hadoop,這是最流行的軟體框架,可使用簡單的高級編程模型實現大型數據集的分散式存儲和處理。我們將介紹Hadoop最重要的概念,描述其架構,指導您如何開始使用它以及在Hadoop上編寫和執行各種應用程式。

簡而言之,Hadoop是Apache Software Foundation的一個開源項目,可以安裝在伺服器集群上,以便這些伺服器可以通信並協同工作來存儲和處理大型數據集。Hadoop近年來因其有效處理大數據的能力而變得非常成功。它允許公司將所有數據存儲在一個系統中,並對這些數據進行分析,否則傳統解決方案不可能或非常昂貴。

圍繞Hadoop構建的許多配套工具提供了各種各樣的處理技術。與輔助系統和實用程式的集成非常出色,使Hadoop的實際工作更輕鬆,更高效。這些工具共同構成了Hadoop生態系統。

您可以將Hadoop視為大數據操作系統,從而可以在所有龐大的數據集上運行不同類型的工作負載。其範圍從離線批處理到機器學習再到實時流處理。

熱門提示:訪問http://hadoop.apache.org以獲取有關項目的更多信息並訪問詳細文檔。

要安裝Hadoop,您可以從http://hadoop.apache.org獲取代碼或(更推薦)使用其中一個Hadoop發行版。三種最廣泛使用的來自Cloudera(CDH),Hortonworks(HDP)和MapR。Hadoop發佈是Hadoop生態系統捆綁在一起的一組工具,由相應的供應商保證,可以很好地協同工作。此外,每個供應商都提供工具(開源或專有)來配置,管理和監控整個平臺。

設計理念

為瞭解決處理和存儲大型數據集的挑戰,Hadoop是根據以下核心特征構建的:

  • 分發 - 存儲和處理不是構建一臺大型超級電腦,而是分佈在一組通信和協同工作的小型機器上。

  • 橫向可擴展性 - 只需添加新電腦即可輕鬆擴展Hadoop集群。每台新機器都會按比例增加Hadoop集群的總存儲和處理能力。

  • 容錯 - 即使少數硬體或軟體組件無法正常工作,Hadoop仍可繼續運行。

  • 成本優化 - Hadoop不需要昂貴的高端伺服器,無需商業許可即可正常工作。

  • 編程抽象 - Hadoop負責處理與分散式計算相關的所有混亂細節。藉助高級API,用戶可以專註於實現解決現實問題的業務邏輯。

  • 數據位置 - Hadoop不會將大型數據集移動到運行應用程式的位置,而是運行數據已經存在的應用程式。

Hadoop組件

Hadoop分為兩個核心組件:

  • HDFS - 分散式文件系統。

  • YARN - 集群資源管理技術。

熱門提示:許多執行框架在YARN之上運行,每個框架都針對特定用例進行了調整。最重要的內容將在下麵的“YARN Applications”中討論。

讓我們仔細看看他們的架構並描述他們如何合作。

HDFS

HDFS是一個Hadoop分散式文件系統。它可以在您需要的任意數量的伺服器上運行 - HDFS可以輕鬆擴展到數千個節點和數PB的數據。

HDFS設置越大,某些磁碟,伺服器或網路交換機出現故障的概率就越大。HDFS通過在多個伺服器上複製數據來幸免於這些類型的故障。HDFS自動檢測給定組件是否已發生故障,並採取對用戶透明的必要恢復操作。

HDFS設計用於存儲數百兆位元組或千兆位元組的大型文件,併為它們提供高吞吐量的流數據訪問。最後但同樣重要的是,HDFS支持一次寫入多次讀取模型。對於這個用例,HDFS就像一個魅力。但是,如果您需要存儲大量具有隨機讀寫訪問許可權的小文件,那麼其他系統(如RDBMS和Apache HBase)可以做得更好。

註意:HDFS不允許您修改文件的內容。只支持在文件末尾附加數據。但是,Hadoop設計的HDFS是眾多可插拔存儲選項之一 - 例如,使用專有文件系統MapR-F,文件完全可讀寫。其他HDFS替代品包括Amazon S3,Google Cloud Storage和IBM GPFS。

HDFS的體繫結構

HDFS由在選定群集節點上安裝和運行的以下守護程式組成:

  • NameNode - 負責管理文件系統命名空間(文件名,許可權和所有權,最後修改日期等)以及控制對存儲在HDFS中的數據的訪問的主進程。如果NameNode已關閉,則無法訪問您的數據。幸運的是,您可以配置多個NameNode,以確保此關鍵HDFS進程的高可用性。

  • DataNodes - 安裝在集群中每個工作節點上的從屬進程,負責存儲和提供數據。

圖1說明瞭在4節點集群上安裝HDFS。其中一個節點托管NameNode守護程式,而其他三個運行DataNode守護程式。

註意:NameNode和DataNode是在Linux發行版之上運行的Java進程,例如RedHat,Centos,Ubuntu等。他們使用本地磁碟存儲HDFS數據。

HDFS將每個文件拆分為一系列較小但仍然較大的塊(預設塊大小等於128MB - 較大的塊意味著更少的磁碟搜索操作,從而導致更大的吞吐量)。每個塊都冗餘地存儲在三個DataNode上以實現容錯(每個文件的副本數量是可配置的)。

圖2說明瞭將文件拆分為塊的概念。文件X被分成塊B1和B2,文件Y僅包括一個塊B3。所有塊都在群集中複製兩次。

與HDFS交互

HDFS提供了一個簡單的POSIX類介面來處理數據。您使用hdfs dfs命令執行文件系統操作。

熱門提示:要開始使用Hadoop,您不必完成設置整個群集的過程。Hadoop可以在一臺機器上以所謂的偽分散式模式運行。您可以下載已安裝所有HDFS組件的沙盒虛擬機,並立即開始使用Hadoop!只需按照以下鏈接之一:

http://www.mapr.com/products/mapr-sandbox-hadoop

http://hortonworks.com/products/hortonworks-sandbox/#install

https://www.cloudera.com/downloads/quickstart_vms/5-12.html

以下步驟說明瞭HDFS用戶可以執行的典型操作:

列出主目錄的內容:

$ hdfs dfs -ls /user/adam

將文件從本地文件系統上傳到HDFS:

$ hdfs dfs -put songs.txt /user/adam

從HDFS讀取文件的內容:

$ hdfs dfs -cat /user/adam/songs.txt

更改文件的許可權:

$ hdfs dfs -chmod 700 /user/adam/songs.txt

將文件的複製因數設置為4:

$ hdfs dfs -setrep -w 4 /user/adam/songs.txt

檢查文件的大小:

`$ hdfs dfs -du -h /user/adam/songs.txt

在主目錄中創建一個子目錄。請註意,相對路徑始終引用執行命令的用戶的主目錄。HDFS上沒有“當前”目錄的概念(換句話說,沒有相當於“cd”命令):

$ hdfs dfs -mkdir songs

將文件移動到新創建的子目錄:

$ hdfs dfs -mv songs.txt songs/

從HDFS中刪除目錄:

$ hdfs dfs -rm -r songs

註意:已刪除的文件和目錄將移至回收站(HDFS上主目錄中的.Trash)並保留一天,直到它們被永久刪除。您只需將它們從.Trash複製或移動到原始位置即可恢復它們。

熱門提示:您可以在不使用任何參數的情況下鍵入hdfs dfs,以獲取可用命令的完整列表。

如果您更喜歡使用圖形界面與HDFS交互,您可以查看免費和開源的HUE(Hadoop用戶體驗)。它包含一個方便的“文件瀏覽器”組件,允許您瀏覽HDFS文件和目錄並執行基本操作。

您還可以使用HUE通過“上傳”按鈕直接從電腦將文件上傳到HDFS。

 

YARN(Yet Another Resource Negotiator)負責管理Hadoop集群上的資源,並支持運行處理存儲在HDFS上的數據的各種分散式應用程式。

與HDFS類似,YARN遵循主從設計,ResourceManager進程充當主設備,多個NodeManager充當工作者。他們有以下責任:

的ResourceManager

  • 跟蹤實時NodeManagers以及群集中每台伺服器上的可用計算資源量。

  • 為應用程式分配可用資源。

  • 監視Hadoop集群上所有應用程式的執行情況。

節點管理器

  • 管理Hadoop集群中單個節點上的計算資源(RAM和CPU)。

  • 運行各種應用程式的任務,並強制它們在指定的計算資源的限制範圍內。

YARN以資源容器的形式將集群資源分配給各種應用程式,資源容器表示RAM量和CPU核心數量的組合。

在YARN群集上執行的每個應用程式都有自己的ApplicationMaster進程。在群集上調度應用程式並協調此應用程式中所有任務的執行時,此過程開始。

圖3說明瞭YARN守護程式在運行兩個應用程式的4節點集群上的合作,這些應用程式總共產生了7個任務。

Hadoop = HDFS + YARN

在同一群集上運行的HDFS和YARN守護程式為我們提供了一個用於存儲和處理大型數據集的強大平臺。

DataNode和NodeManager進程在同一節點上並置以啟用數據位置。這種設計使得能夠在存儲數據的機器上執行計算,從而最小化通過網路發送大塊數據的必要性,這導致更快的執行時間。

YARN應用程式

YARN只是一個資源管理器,它知道如何將分散式計算資源分配給在Hadoop集群上運行的各種應用程式。換句話說,YARN本身不提供任何可以分析HDFS中數據的處理邏輯。因此,必須將各種處理框架與YARN集成(通過提供ApplicationMaster的特定實現)以在Hadoop集群上運行並處理來自HDFS的數據。

下麵列出了最流行的分散式計算框架的簡短描述,這些框架可以在由YARN支持的Hadoop集群上運行。

  • MapReduce - Hadoop的傳統和最古老的處理框架,將計算表示為一系列map和reduce任務。它目前正被Spark或Flink等更快的引擎所取代。

  • Apache Spark - 一種用於大規模數據處理的快速通用引擎,可通過在記憶體中緩存數據來優化計算(後面部分將詳細介紹)。

  • Apache Flink - 高吞吐量,低延遲的批處理和流處理引擎。它以其強大的實時處理大數據流的能力而著稱。您可以在這篇全面的文章中找到Spark和Flink之間的差異:https://dzone.com/articles/apache-hadoop-vs-apache-spark

  • Apache Tez - 一個旨在加快Hive執行SQL查詢的引擎。它可以在Hortonworks數據平臺上獲得,它將MapReduce替換為Hive的執行引擎。

監控YARN應用程式

可以使用ResourceManager WebUI跟蹤在Hadoop集群上運行的所有應用程式的執行,預設情況下,該管理程式在埠8088上公開。

對於每個應用程式,您都可以閱讀一些重要信息。

如果單擊“ID”列中的條目,您將獲得有關所選應用程式執行的更詳細的指標和統計信息。

熱門提示:使用ResourceManager WebUI,您可以檢查可用於處理的RAM總量和CPU核心數以及當前的Hadoop集群負載。查看頁面頂部的“群集指標”。

————————————————————

推薦閱讀:

老王講架構:負載均衡

支付寶系統架構內部剖析

大數據Spark與Storm技術選型

【贊】用Python實現Zabbix-API 監控

程式員怎麼留住健康?

大數據智慧平臺技術方案

大數據聚合平臺解決方案

 


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

-Advertisement-
Play Games
更多相關文章
  • 最終效果為 div元素從右向左出現, 然後從左向右消失。 transition標簽包裹要移動的元素: css 樣式: 其中: 1: 為div元素顯示時的狀態 2: 為div元素移動的過程 (進入的過程,離開的過程) (直線運動,運動0.3s) 3: 為div元素移動之前和離開後的轉態 (三個參數分別 ...
  • 1:打開Visual studio 2017後 按圖片操作新建項目 也可以使用快捷鍵Ctrl+Shift+N 進入創建項目頁面 2:選擇JavaScript 里的Node.js創建對應的Vue項目 如果沒有javaScript對應的node.js選項 打開最下麵的visual studio安裝程式 ...
  • HTML表單: (🐖:本文部分代碼需要在W3School平臺上運行) 表單用於搜集不同類型的用戶輸入 Content 元素:<form>*,<input>,<fieldset>,<legend>,<select>,<textarea>,<button>,<datalist>,<keygen>,<o ...
  • 使用對象池 Object Pool產生炸彈,首先創建一個對象組 this.exploadGroup = this.add.group(); 然後用對象組的.get重覆應用對象池而不是用.create,this.exploadGroup.get(x,y,'explode'); 最後銷毀的時候不是用.d... ...
  • 前言 學學忘忘 閑來做個筆記 整理下數組常用方法。 Array 數組常用方法 創建數組的基本方式有兩種 1.第一種是使用Array構造函數, var arr = new Array(); 使用構造函數方式的話 var arr = new Array(20),則表示創建了一個lenght值為20的數組 ...
  • 之前一直用 vue 做一些小項目,最近接觸了一個項目是用 react 做前端,雖然本身是做後端開發的,但是前端還是要瞭解一點的。 現在的項目基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好 ...
  • JavaScript: 知識點回顧篇(十三):DOM -- Console 對象 ...
  • 非常值得推薦的一本書,不僅僅是學習設計模式,也是在推薦你編程能力的鍛煉。簡單易懂的例子,能讓你學到非常多的知識。需要學習的朋友可以通過網盤免費下載pdf版 (先點擊普通下載 再選擇普通用戶就能免費下載了)http://putpan.com/fs/0yiabe3ns2hu69f37/ 《Head Fi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...