Hadoop核心架構(1)

来源:https://www.cnblogs.com/dsjxb/archive/2018/08/07/9435625.html
-Advertisement-
Play Games

在大數據的發展過程中,出現了一批專門應用與大數據的處理分析工具,如Hadoop,Hbase,Hive,Spark等,我們先從最基礎的Hadoop開始進行介紹 Hadoop是apache基金會下所開發的分散式基礎架構,實現了一個分散式文件系統(HDFS),HDFS擁有高容錯性、高可靠性、高擴展性、高效 ...


在大數據的發展過程中,出現了一批專門應用與大數據的處理分析工具,如Hadoop,Hbase,Hive,Spark等,我們先從最基礎的Hadoop開始進行介紹

Hadoop是apache基金會下所開發的分散式基礎架構,實現了一個分散式文件系統(HDFS),HDFS擁有高容錯性、高可靠性、高擴展性、高效性、低成本的特性,可以讓用戶在不瞭解相關的底層源碼的情況下,在廉價的機器上搭配一臺完整的伺服器進行分散式程式開發,利用集群的高速運算和存儲處理自己的業務。

一個應用程式無非就是計算和存儲兩個部分,Hadoop也不例外,他的兩大核心設計就是HDFS和MapReduce兩個組建,HDFS實現了Hadoop的海量數據的存儲,而MapReduce則為存儲的海量數據提供了計算

核心架構:

在Hadoop官方網站上對於Hadoop項目的構成有詳細的講解,主要包括

Hadoop Common:支持其他Hadoop模塊的常用實用程式。

Hadoop分散式文件系統(HDFS™):一種分散式文件系統,可提供對應用程式數據的高吞吐量訪問。

Hadoop YARN:作業調度和集群資源管理的框架。

Hadoop MapReduce:基於YARN的系統,用於並行處理大型數據集。

 

Apache的其他Hadoop相關項目包括:

Ambari™:基於Web的工具,用於配置,管理和監控Apache Hadoop集群,包括對Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari還提供了一個用於查看群集運行狀況的儀錶板,例如熱圖,以及可視化查看MapReduce,Pig和Hive應用程式的功能,以及以用戶友好的方式診斷其性能特征的功能。

Avro™:數據序列化系統。

Cassandra™:可擴展的多主資料庫,沒有單點故障。

Chukwa™:用於管理大型分散式系統的數據收集系統。

HBase™:可擴展的分散式資料庫,支持大型表的結構化數據存儲。

Hive™:一種數據倉庫基礎架構,提供數據彙總和即席查詢。

Mahout™:可擴展的機器學習和數據挖掘庫。

Pig™:用於並行計算的高級數據流語言和執行框架。

Spark™:用於Hadoop數據的快速通用計算引擎。Spark提供了一種簡單而富有表現力的編程模型,支持廣泛的應用程式,包括ETL,機器學習,流處理和圖形計算。

Tez™:基於Hadoop YARN構建的通用數據流編程框架,它提供了一個功能強大且靈活的引擎,可以執行任意DAG任務來處理批量和互動式用例的數據。Tez正在被Hadoop生態系統中的Hive™,Pig™和其他框架以及其他商業軟體(例如ETL工具)採用,以取代Hadoop™MapReduce作為底層執行引擎。

ZooKeeper™:用於分散式應用程式的高性能協調服務

 

在知道了Hadoop集群的項目構成之後我們便開始挨個項目進行說明

Hadoop-----HDFS

[if !supportLists]1、[endif]因為HDFS實例是一個分散式的處理機制,所以可能包括成千上萬台伺服器電腦,每一個電腦存儲文件的一部分,但是,因為各種各樣的原因,每一個電腦都有可能在使用過程中出現各種問題,比如斷電等,所有這就意味著在這麼多的伺服器中總有幾個是處在無法使用的狀態,因此檢測故障並能快速的回覆保證計算的正常進行是HDFS的核心架構目標

[if !supportLists]2、[endif]HDFS的設計主要是用於批處理而不是通常的用戶的互動式的通用應用程式,數據訪問的高吞吐量是重點,所以posix放鬆了對於HDFS的監管,可以通過流式處理的方式對於文件系統中的數據進行相應的處理。

[if !supportLists]3、[endif]因為要處理的數據量特別巨大,單一的伺服器根本不可能完成這一任務,所有,HDFS被調整為支持大文件,將一個大的文件分解成多個一樣大小的小文件然後分散到各個集群的節點上進行計算

[if !supportLists]4、[endif]為了簡化數據的一致性問題以及實現高吞吐量的數據訪問,HDFS提供了一個一次寫入多次讀取的文件訪問模型,當文件寫入HDFS之後,可以被多次讀取進行計算,但是,在一次寫入之後除了追加和截斷之外,不能再次寫入,但是可以通過append方法在文件的末尾進行追加,典型的就是MapReduce應用程式

[if !supportLists]5、[endif]在應用程式請求計算的時候,如果將數據向計算移動的話,因為數據量太大會造成大量的網路延遲以及時間的浪費,並且會消耗大量的資源,但是,如果計算向數據移動,因為計算的應用程式占用的記憶體很小,在進行傳輸的過程中不會消耗太多的資源而且傳輸速度很快,不會產生網路擁塞並提高了系統的整體吞吐量

[if !supportLists]6、[endif]HDFS的設計便於在軟體和硬體兩個平臺進行移植

基於以上6點,也會發現HDFS不適合應用在要求低延遲的數據訪問、存儲大量的小文件、多用戶寫入、任意修改文件的場景,因為這幾個場景不僅僅不會體現其在數據處理方面的超強的能力,相反還會成為一個拖累,處理能力還不如普通的處理方式

HDFS具有主從架構,集群由一個NameNode和多個DataNodes構成,以及輔助節點Secondary Namenode

NameNode對集群中的文件系統命名空間的主伺服器和客戶端對於文件的訪問組成。存儲DataNode中塊的管理信息(塊管理

通過處理註冊和定期心跳來提供Datanode集群成員資格。

進程阻止報告並維護塊的位置。

支持塊相關操作,如創建,刪除,修改和獲取塊位置。

管理副本放置,阻止複製下的塊的複製,並刪除過度複製的塊。

DataNodes管理節點的存儲,每一個DataNode的上有多個block塊構成,傳入系統的大文件就被存儲在著一個個的block塊(預設大小為64MB)中並定期的向NameNode發送block塊的列表信息(

1、可以存儲大於磁碟容量的文件,將塊存儲在不同的磁碟上,提高了集群磁碟的利用率。

2、將傳入的文件轉化成塊存儲,可以實現元數據和塊的分離,用一個單獨的節點存儲塊的地址信息等,便於管理。

數據塊適合用於數據備份進而提供數據容錯能力和提高可用性

Secondary Namenode:輔助NameNode進行fsimage和edit.log的合併,減輕namenode的壓力

本文章主要翻譯於官方網站,如有雷同,純屬巧合


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

-Advertisement-
Play Games
更多相關文章
  • 轉載來自:http://emouse.cnblogs.com 1.1 開發工具與開發環境 本節所使用Keil MDK 為目前的最新版V4.21。其他版本差別不大,讀者可以根據自己使用的版本進行操作或者從Keil的官網下載新版本。使用的標準外設庫為目前最新的V3.5版本。使用的開發調試工具為JLINK ...
  • JDBC的簡單介紹 概念 JDBC : Java Database Connectivity,java連接資料庫,使用Java操作資料庫的技術。 本質 : 其實就是sun公司定義的一套操作所有關係型資料庫的規則,即介面。 各個資料庫廠商去實現這套介面,提供資料庫操作 驅動jar包 ,我們可以使用這套 ...
  • 占座 ...
  • 使用資料庫管理工具插入單條數據 打開資料庫,選則要插入數據的表-》右鍵點擊-》選擇插入前200行-》在右邊視圖中輸入要插入的數據(如果欄位設置為不為空,則必須輸入,如果欄位設置為可空,則不必須輸入,插入部分、單條、部分數據都可以)-》輸入完成後,游標移動到下一行-》如果sqlserver使用預設保存 ...
  • 一.概述 mysql 提供了很多參數來進行伺服器的設置,當服務第一次啟動的時候,所有啟動參數值都是系統預設的。這些參數在很多生產環境下並不能滿足實際的應用需求。在這個系列中涉及到了liunx 伺服器,我這裡是centos7.4, mysql 5.7,Xshell6。 1. 查看mysql serve ...
  • ETL講解(很詳細!!!) ETL講解(很詳細!!!) ETL是將業務系統的數據經過抽取、清洗轉換之後載入到數據倉庫的過程,目的是將企業中的分散、零亂、標準不統一的數據整合到一起,為企業的決策提供分析依據。 ETL是BI項目重要的一個環節。 通常情況下,在BI項目中ETL會花掉整個項目至少1/3的時 ...
  • 1、問題發現 檢查客戶資料庫的時候發現存在大量死鎖的情況 查看trace文件orcl_ora_25846.trc結果如下 2、問題分析 可以看出來241號會話持有一個TM鎖,在執行insert into pzd2018語句在等待S鎖 4468號會話持有一個TX鎖,在執行insert into pz2 ...
  • Hadoop發展到今天家族產品已經非常豐富,能夠滿足不同場景的大數據處理需求。 作為目前主流的大數據處理技術,市場上很多公司的大數據業務都是基於Hadoop開展,而且對很多場景已經具有非常成熟的解決方案。 作為開發人員掌握Hadoop及其生態內框架的開發技術,就是進入大數據領域的必經之路。 下麵詳細 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...