hadoop學習筆記(一)
一、hadoop的概念
二、hadoop的發展歷史
三、hadoop1.x的生態系統
HBase:實時分布式數據庫
相當於關系型數據庫,數據放在文件中,文件就放在HDFS中。因此HBase是基於HDFS的關系型數據庫。實時性:延遲非常低,實時性高。
舉栗:在近18億條數據的表中查詢1萬條數據僅需1.58s,這是普通數據庫(Oracle集群,Mysql集群)無法辦到的。
HDFS:分布式文件系統
MapReduce:分布式計算框架
Zookeeper:分布式協作服務
協作HBase存儲、管理、查詢數據,Zookeeper是一個很好的分布式協作服務框架。
Hive :數據倉庫
數據倉庫:
比如給你一塊1000平方米的倉庫,讓你放水果。如果有春夏秋冬四季的水果,讓你放在某一個分類中。但是水果又要分為香蕉、蘋果等等。然後又要分為好的水果和壞的水果。。。。。
因此數據倉庫的概念也是如此,他是一個大的倉庫,然後裏面有很多格局,每個格局裏面又分小格局等等。對於整個系統來說,比如文件系統。文件如何去管理?Hive就是來解決這個問題。
Hive:
分類管理文件和數據,對這些數據可以通過很友好的接口,提供類似於SQL語言的HiveQL查詢語言來幫助你進行分析。其實Hive底層是轉換成MapReduce的,寫的HiveQL進行執行的時候,Hive提供一個引擎將其轉換成MapReduce再去執行。
Hive設計目的:方便DBA很快地轉到大數據的挖掘和分析中。
Pig:數據流處理
基於MapReduce的,基於流處理的。寫了動態語言之後,也是轉換成MapReduce進行執行。和Hive類似。
Mahout:數據挖掘庫
基於圖形化的數據碗蕨。
Sqoop:數據庫ETL工具
ELT:提取 --> 轉換 --> 加載。
從數據庫中獲取數據,並進行一系列的數據清理和清洗篩選,將合格的數據轉換成一定格式的數據進行存儲,將格式化的數據存儲到HDFS文件系統上,以供計算框架進行數據分析和挖掘。
格式化數據:
|- TSV 格式:每行數據的每列之間以制表符(tab \t)進行分割
|- CVS 格式:每行數據的每列之間以逗號進行分割
Sqoop:將關系型數據庫中的數據與HDFS(HDFS 文件,HBase中的表,Hive中的表)上的數據進行相互導入導出。
Flume:日誌收集工具
將大的集群上面的每臺機器的日誌收集起來,自動地放到你指定的HDFS文件系統的某個路徑中去。
Ambari:安裝、部署、配置和管理工具
提供一個圖形化工具對集群進行安裝、部署、配置及管理,無需手動在命令行操作。
四、hadoop2.x的生態系統
YARN:集群資源管理系統
對整個集群每臺機器的資源進行管理,對每個服務、每個job、每個應用進行調度(CPU等)。
HDFS2:分布式文件系統
增強了一些特性,最主要的就是NameNode的單節點故障和NameNode的橫向擴展。
Tez:DAG計算框架
Storm:流式計算框架
五、hadoop1.x組成
對於分布式系統和框架的架構來說,一般分為兩部分:
第一部分:管理層,用於管理應用層的。
第二部分:應用層(工作)。
HDFS核心後臺守護進程:
NameNode:元數據服務器
NameNode是主節點,存儲文件的元數據如文件名、文件目錄結構、文件屬性(生成時間,副本數,文件權限),以及每個文件的塊列表和塊所在DataNode等。
屬於管理層,用於管理數據的存儲。
Secondary NameNode:輔助元數據服務器
用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲取HDFS元數據的快照。
屬於管理層,輔助NameNode進行管理。
DataNode:塊存儲
在本地文件系統存儲文件塊數據,以及塊數據的校驗和。
屬於應用層,用於進行數據的存儲,被NameNode進行管理。要定時向NameNode進行工作匯報,執行NameNode分配分發的任務。
MapReduce,分布式進行計算框架:
JobTracker:任務調度員
負責接收用戶提交的作業,負責啟動、跟蹤任務執行。
屬於管理層,管理集群資源和對任務進行資源調度,監控任務的執行。
TaskTrackers:任務執行
負責執行由JobTracker分配的任務,管理各個任務在每個節點上的執行情況。
屬於應用層,執行JobTracker分配分發的任務,並向JobTracker匯報工作情況。
六、HDFS架構圖
七、MapReduce架構圖
hadoop學習筆記(一)