淺學hedoop
hadoop中有3個核心元件:
分散式檔案系統:HDFS —— 實現將檔案分散式儲存在很多的伺服器上
分散式運算程式設計框架:MapReduce —— 實現在很多機器上分散式並行運算
分散式資源排程平臺:Yarn —— 幫使用者排程大量的mapreduce程式,併合理分配運算資源
HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算
Hadoop主要元件包含:
- Hadoop:Java編寫的軟體框架,以支援資料密集型分散式應用
- ZooKeeper:高可靠性分散式協調系統
- MapReduce:針對大資料的靈活的並行資料處理框架
- HDFS:Hadoop分散式檔案系統
- Oozie:負責MapReduce作業排程
- HBase:Key-value資料庫
- Hive:構建在MapRudece之上的資料倉庫軟體包
- Pig:Pig是架構在Hadoop之上的高階資料處理層。Pig Latin語言為程式設計人員提供了更直觀的定製資料流的方法。
HDFS 的工作機制:
- 客戶把一個檔案存入hdfs,其實hdfs會把這個檔案切塊後,分散儲存在N臺linux機器系統中(負責儲存檔案塊的角色:data node)<準確來說:切塊的行為是由客戶端決定的
- 一旦檔案被切塊儲存,那麼,hdfs中就必須有一個機制,來記錄使用者的每一個檔案的切塊資訊,及每一塊的具體儲存機器(負責記錄塊資訊的角色是:name node)
3、為了保證資料的安全性,hdfs可以將每一個檔案塊在叢集中存放多個副本(到底存幾個副本,是由當時存入該檔案的客戶端指定的)
綜述:一個hdfs系統,由一臺運行了namenode的伺服器,和N臺運行了datanode的伺服器組成!
MapReduce:
MapReduce的基本原理就是:將大的資料分析分成小塊逐個分析,最後再將提取出來的資料彙總分析,最終獲得我們想要的內容。當然怎麼分塊分析,怎麼做Reduce操作非常複雜,Hadoop已經提供了資料分析的實現,我們只需要編寫簡單的需求命令即可達成我們想要的資料。
Yarn :
yarn是一個分散式程式的執行排程平臺
yarn中有兩大核心角色:
- Resource Manager
接受使用者提交的分散式計算程式,併為其劃分資源
管理、監控各個Node Manager上的資源情況,以便於均衡負載
- Node Manager
管理它所在機器的運算資源(cpu + 記憶體)
負責接受Resource Manager分配的任務,建立容器、回收資源
HBASE是一個數據庫----可以提供資料的實時隨機讀寫
HBASE與mysql、oralce、db2、sqlserver等關係型資料庫不同,它是一個NoSQL資料庫(非關係型資料庫)
HBASE相比於其他nosql資料庫(mongodb、redis、cassendra、hazelcast)的特點:
Hbase的表資料儲存在HDFS檔案系統中
HBASE是一個分散式系統
其中有一個管理角色: HMaster(一般2臺,一臺active,一臺backup)
其他的資料節點角色: HRegionServer(很多臺,看資料容量)