The BigData,Hadoop組成及生態

引言

隨着科技的發展,咱們在網上留下的數據愈來愈多,大到網上購物、商品交易,小到瀏覽網頁、微信聊天、手機自動記錄平常行程等,能夠說,在現在的生活裏,只要你還在,你就會每時每刻產生數據,可是這些數據能稱爲大數據麼?不,這些還不能稱爲大數據。那麼大數據數據究竟是什麼呢?node

大數據概述

定義

百度百科的定義:大數據是指沒法在必定時間範圍內用常規的軟件工具進行捕捉、管理和處理的大數據集合,是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。web

能夠總結出大數據的特色:數據庫

數據量大,需用採起某些工具才能採集,進而作分析計算。編程

舉個例子來解釋下:服務器

Simon是個成龍影片的愛好者,他在網站上搜集到了100G的成龍經典電影**(採集),爲了收藏這些電影,他決定把這些電影都存儲起起來(存儲),有一天Simon忽然想當作龍的主演的「十二生肖」,這部電影就在他存儲的100G影片中,因此Simon按照上映年份(分析計算)**找出了這部電影並觀看了它。微信

所以,咱們能夠把大數據的定義凝練以下:網絡

大數據主要解決的是海量數據的採集存儲分析計算問題架構

所謂大數據,數據的規模是怎麼衡量呢?併發

數據單位

衡量數據的規模,須要先認識數據的單位。按照數據單位的從小到大劃分,依次爲:bit、Byte、KB、MB、GB、TBPBEB、ZB、YB、BB、NB、DB框架

單位之間的換算以下:

1 Byte =8 bit

1 KB = 1,024 Bytes = 8192 bit

1 MB = 1,024 KB = 1,048,576 Bytes

1 GB = 1,024 MB = 1,048,576 KB

1 TB = 1,024 GB = 1,048,576 MB

1 PB = 1,024 TB = 1,048,576 GB

對於咱們來說,接觸最多的多是KB、MB、GB等單位。

可是因爲計算機計算性能的不一樣,若是放在上古時代的計算機,讓它們處理GB級別的數據就已經算是極限了;對於如今內存廣泛是128G的服務器,多臺並行處理EB級別的數據也不在話下。

數據意義與價值

每一個時代都有對數據的定義,關鍵的目標是要挖掘出數據背後的意義和價值

數據量那麼大,格式又各不相同,咱們處理數據的意義何在呢?

試想下,再大的數據也是由許許多多的小數據組成,大數據能夠認爲是數據的集合,咱們能夠從這些數據中推理出一個近似客觀的規律,利用這個規律能夠預測產生數據的本體下一次要發生的機率。如一個用戶常常在某電影網站上觀當作龍的電影,那麼當該用戶下一次訪問電影網站時,將有關成龍的電影放在推薦列表中比較靠前的位置,由於咱們經過用戶的瀏覽的數據發現他很喜歡成龍的電影,而且相信相信該用戶的興趣短時內不會發生變化。

這是大數據在生活中的一個簡單應用--挖掘用戶的偏好,創建推薦模型

數據時代,咱們的數據具備海量,多樣性,實時性,不肯定性等特色。那麼,咱們要存儲,處理這些特色的海量數據,用什麼樣的方式或說什麼樣的平臺比較適合呢,通過多年的技術發展和天然選擇,Hadoop分佈式模型脫穎而出。

所以,學習大數據確定繞不開Hadoop,可是對於接觸大數據時間較短或者還沒有接觸過大數據的同窗來講,若是問他們咱們應該學習Hadoop的那些內容,分佈式存儲計算必定會說出來,可是僅僅這兩個概念仍是太籠統了,那麼咱們應該怎樣把控Hadoop的學習呢,莫慌,且聽Simon郎慢慢道來。

Hadoop概述

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構,它主要解決的是海量數據的存儲和海量數據的分析計算問題,從廣義上來講,Hadoop一般是指Hadoop生態圈

image-20210322164226320

咱們先看Hadoop的組成結構,而後介紹Hadoop生態圈

Hadoop組成

Hadoop的組成結構在1.x2/3.x有所不一樣,以下圖所示

image-20210520215604023

Hadoop主要是由:就計算資源調度數據存儲輔助工具組成。

  • 在Hadoop1.x時代,Hadoop中的MapReduce同時處理業務邏輯運算和資源調度,耦合性較大。

  • 在Hadoop2/3.x時代,增長了YarnYarn只負責資源的調度,MapReduce只負責運算

Note:資源調度指的是CPU、內存、服務器計算的選擇等

接下來,咱們分別介紹:

  • 用於存儲的HDFS

  • 用於資源調度的YARN

  • 用於計算的MapReduce

HDFS架構概述

Hadoop Distributed File System,簡稱HDFS,是一個分佈式文件系統 ,HDFS的結構圖以下:

image-20210520221117080

HDFS架構包含一個NameNode、DataNode和備用SecondaryNode

  • NameNode(nn)

NameNode(nn)就是Master,它是一個主管,管理者,它主要有如下功能:

①管理HDFS的名稱空間

②配置副本策略(如數據配置幾個副本)

③管理數據塊(block)的映射信息

數據存在Datanode的哪些數據塊中,分佈式存儲的

④處理客戶端的請求

  • DataNode(dn)

DataNode就是Slave,NameNode下達命令,DataNode執行實際的操做。

①存儲實際的數據塊

②執行數據塊的讀/寫操做

  • Secondary NameNode(2nn)

①輔助NameNode,分擔其工做量,好比按期合併Fsimage和Edits,並推送給NameNode

②在緊急狀況下,可輔助恢復NameNode。

NOTE:Secondary NameNode並不是NameNode的熱備,即當NameNode掛掉的時候,它並不 能立刻替換NameNode並提供服務。

YARN架構概述

Yet Another Resource Negotiator 簡稱YARN,它是Hadoop的資源管理器,負責爲運算程序提供服務器運算資源,至關於一個分佈式的操做系統平臺,而 MapReduce 等運算程序則至關於運行於操做系統之上的應用程序。以下圖所示:

image-20210520230922949

YARN 主要由 ResourceManagerNodeManagerApplicationMasterContainer 等組件構成。

  • ResourceManager(RM):整個集羣資源(內存、cpu等)的老大

  • NodeManager(NM):單個節點服務器資源的老大

  • ApplicationMaster(AM):單個任務運行的老大

  • Container:容器,至關於一臺獨立的服務器,裏面封裝了任務運行所需的資源,如內存、CPU、磁盤、網絡等。

NOTE:

ResourceManager是一個Master,在每個子節點如下都有一個NodeManager,由RM給NM分配資源。在每個節點中還會有ApplicationMaster(後面簡稱AM)的東西。他會負責與RM通訊以獲取資源,還會與NM通訊來啓動或者是中止任務。

MapReduce架構概述

MapReduce是一個分佈式運算程序的編程框架,是用戶開發「基於Hadoop的數據分析應用」的核心框架。他的核心功能是將用戶編寫的業務邏輯代碼自帶默認組件整合成一個完整的分佈式運算程序,併發運行在一個Hadoop集羣上。

MapReduce將計算過程分爲兩個階段:Map和Reduce

image-20210520231933220

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

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

三者之間的關係

HDFS、YARN、MapReduce三者之間的關係

image-20210520233912648

  • 從HDFS中讀取數據

  • Yarn資源調度處理這些數據

  • MapReduce收到Yarn的指令後開啓相應的MapTask任務和ReduceTask任務

  • 處理後的數據被存儲在HDFS中

你覺得Hadoop結束了,NO! NO! NO! Hadoop生態圈瞭解一波~

好吧,繼續學!

Hadoop生態圈

先看一張Hadoop生態體系的腦圖。

image-20201201224043405

媽耶,咋那麼多內容啊,快把我幹懵逼了。千萬別懵,雖然看起來不少,可是能夠用一句總結:Hadoop是一個分佈式計算開源框架,提供了一個分佈式系統子項目(HDFS)和支持MapReduce分佈式計算軟件架構。既然腦圖的內容有點多,我們就介紹幾個在Hadoop生態圈中佔有地位較高的幾個組件,若是小夥伴對其它組件感興趣,能夠自行查閱。

  • Hive

Hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

  • Hbase

Hbase是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用Hbase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。

  • Sqoop

Sqoop是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,能夠將一個關係型數據庫(MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也能夠將HDFS的數據導進到關係型數據庫中

  • Zookeeper

Zookeeper 是一個爲分佈式應用所設計的分佈的、開源的協調服務,它主要是用來解決分佈式應用中常常遇到的一些數據管理問題,簡化分佈式應用協調及其管理的難度,提供高性能的分佈式服務。

  • Ambari

Ambari是一種基於Web的工具,支持Hadoop集羣的供應、管理和監控。

  • Oozie

Oozie是一個工做流引擎服務器, 用於管理和協調運行在Hadoop平臺上(HDFS、Pig和MapReduce)的任務。

  • Hue

Hue是一個基於WEB的監控和管理系統,實現對HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操做和管理。

.........

Hadoop生態體系先介紹這麼多,對其它內容感興趣的同窗自行補充。

相關文章
相關標籤/搜索