Hadoop以及組件介紹


一、背景介紹

在接觸過大數據相關項目的時候常常都會聽到Hadoop這個東西,簡單來說,他是一個用分布式計算來處理大數據的開源軟件,下面包含了許多的組件和子項目,這篇文章將會介紹Hadoop的原理以及一些組件的應用。

 

二、准備工作

1、確認儲存規模

有很多的大數據項目其實數據量跟本沒這么大,跟本不需要到使用Hadoop這類的大數據軟件,所以,第一步應該是先確認數據量有多大,真的MySQL跑的太久再去使用Hadoop就好。

2、確認數據類型

除了結構化數據以外,現在有些大數據項目需要處理的是一些非結構化數據,例如文本、音頻、圖像、視頻之類的,針對這些非結構化的數據,需要事先做處理,再用相對應的軟件進行儲存。

3、確認數據源

數據源非常重要,首先要先確認數據是否可獲取、可用,例如微信聊天記錄這種的根本就獲取不了,而且會觸犯到隱私。有些數據需要先做持久化再導入到數據庫內儲存,如何獲取想要的數據有時候不是直接從數據庫里抓這么簡單,在獲取數據源的時候,也需要考慮數據的質量,否則會提高未來使用的難度。

 

三、Hadoop介紹

Hadoop的核心為HDFS(分布式文件系統)和MapReduce(離線計算框架)。簡單來說,HDFS就是將要儲存的文件分散在不同的硬盤上,並記錄他們的位置,而MapReduce就是將計算任務分配給多個計算單元,下面針對這兩個核心再做進一步的說明。

HDFS

HDFS已經成為現在大數據的儲存標准,他適合儲存一次寫入,多次讀取的數據,並且他有自動檢錯、快速回復數據的功能,能夠避免數據因為硬盤損壞而丟失的危險。

HDFS是由DataNode和NameNode組成的,DataNode負責儲存數據,而NameNode負責管理數據,一個NameNode對應多個DataNode,NameNode記錄着每個DataNode儲存的數據內容,並曝露給上層系統調用,也會根據上層的指令對DataNode進行增、刪、復制。

MapReduce

MapReduce是將計算任務分配給數據就近的處理節點,進行完運算后再合並導入結果,能很好的去進行大量數據的調取,但是延時較高,不適合處理實時流數據。

MapReduce可以分為Map和Reduce兩個處理步驟。首先Map將用戶輸入的指令解析出一個個的Key/Value,然后再將轉化成一組新的KV值,將原本的任務拆解成小的而且是臨近數據的,並且確保這些運算任務彼此不會影響。而Reduce則是將這些運算的結果匯總起來,將結果寫入。

 

另外YARN和Zookeepr都是用來管理的,YARN是面對計算資源的管理,而Zookeeper是面對服務器集群的管理。

YARN:資源管理框架,用來管理和調度CPU、內存的資源,避免所有的計算資源被某些任務大量占用,有點像是雲管理平台可以創造不同的容器和虛擬機,並將這些硬件資源按用戶的意願分配給計算任務。

Zookeeper:集用來做群管理,跟微服務里的功能相似,可以在集群里面選出一個leader,並保證集群里面服務器的一致性、可靠性和實時性。

 

四、Hadoop常用組件介紹

1、Hive

Hive是將Hadoop包裝成使用簡單的軟件,用戶可以用比較熟悉的SQL語言來調取數據,也就是說,Hive其實就是將Hadoop包裝成MySQL。Hive適合使用在對實時性要求不高的結構化數據處理。像是每天、每周用戶的登錄次數、登錄時間統計;每周用戶增長比例之類的BI應用。

2、HBase

HBase是用來儲存和查詢非結構化和半結構化數據的工具,利用row key的方式來訪問數據。HBase適合處理大量的非結構化數據,例如圖片、音頻、視頻等,在訓練機器學習時,可以快速的透過標簽將相對應的數據全部調出。

3、Storm

前面兩個都是用來處理非實時的數據,對於某些講求高實時性(毫秒級)的應用,就需要使用Storm。Storm也是具有容錯和分布式計算的特性,架構為master-slave,可橫向擴充多節點進行處理,每個節點每秒可以處理上百萬條記錄。可用在金融領域的風控上。

4、Impala

Impala和Hive的相似度很高,最大的不同是Impala使用了基於MPP的SQL查詢,實時性比MapReduce好很多,但是無法像Hive一樣可以處理大量的數據。Impala提供了快速輕量查詢的功能,方便開發人員快速的查詢新產生的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM