源代碼開源(免費)
社區活躍、參與者衆多
涉及分佈式存儲和計算的方方面面
已獲得企業界驗證算法
Hadoop1.0和2.0:數據庫
Hadoop概述:apache
分佈式存儲系統HDFS(Hadoop Distributed File System)
分佈式存儲系統
提供了高可靠性、高擴展性和高吞吐率的數據存儲服務 編程
資源管理系統YARN(Yet Another Resource Negotiator)
負責集羣資源的統一管理和調度 架構
分佈式計算框架MapReduce
分佈式計算框架
具備易於編程、高容錯性和高擴展性等優勢 負載均衡
Hadoop2.0層級關係:框架
Hadoop構成 :HDFS 分佈式文件存儲機器學習
源自於Google的GFS論文
發表於2003年10月
HDFS是GFS克隆版 分佈式
HDFS特色
良好的擴展性
高容錯性
適合PB級以上海量數據的存儲 工具
基本原理
將文件切分紅等大的數據塊,存儲到多臺機器上
將數據切分、容錯、負載均衡等功能透明化
可將HDFS當作一個容量巨大、具備高容錯性的磁盤
應用場景
海量數據的可靠性存儲
數據歸檔
Hadoop構成 :YARN(資源管理系統)
YARN是什麼
Hadoop 2.0新增系統
負責集羣的資源管理和調度
使得多種計算框架能夠運行在一個集羣中
YARN的特色
良好的擴展性、高可用性
對多種類型的應用程序進行統一管理和調度
自帶了多種多用戶調度器,適合共享集羣環境
Hadoop構成 :MapReduce(分佈式計算框架)
源自於Google的MapReduce論文
發表於2004年12月
Hadoop MapReduce是Google MapReduce克隆版
MapReduce特色
良好的擴展性
高容錯性
適合PB級以上海量數據的離線處理
Hadoop生態系統介紹:1.0時代
Hadoop生態系統介紹:2.0時代
Hadoop生態系統:Hive(基於MR的數據倉庫)
由facebook開源,最初用於解決海量結構化的日誌數據統計問題;
ETL(Extraction-Transformation-Loading)工具
構建在Hadoop之上的數據倉庫;
數據計算使用MR,數據存儲使用HDFS
Hive 定義了一種類 SQL 查詢語言——HQL;
相似SQL,但不徹底相同
一般用於進行離線數據處理(採用MapReduce);
可認爲是一個HQLMR的語言翻譯器。
日誌分析
統計網站一個時間段內的pv、uv
多維度數據分析
大部分互聯網公司使用Hive進行日誌分析,包括百度、淘寶等
其餘場景
海量結構化數據離線分析
低成本進行數據分析(不直接編寫MR)
Hadoop生態系統:Pig
由yahoo !開源,設計動機是提供一種基於MapReduce的數據分析工具
構建在Hadoop之上的數據倉庫
定義了一種數據流語言——Pig Latin
一般用於進行離線分析
Hadoop生態系統:wordcount比較 mapreduce
Hadoop生態系統:wordcount比較 hive
Hadoop生態系統:wordcount比較 pig
Hadoop生態系統:Mahout(數據挖掘庫)
基於Hadoop的機器學習和數據挖掘的分佈式計算框架
實現了三大類算法
推薦(Recommendation)
聚類(Clustering)
分類(Classification)
Hadoop生態系統:HBase(分佈式數據庫)
源自Google的Bigtable論文
發表於2006年11月
HBase是Google Bigtable克隆版
HBase特色
高可靠性
高性能
面向列
良好的擴展性
Hadoop生態系統:HBase數據模型
Table:表
相似於傳統傳統數據庫中的表
Column Family:列簇
Table在水平方向有一個或者多個Column Family組成
一個Column Family中能夠由任意多個Column組成
Row Key: 行鍵
Table的主鍵
Table中的記錄按照Row Key排序
Timestamp: 時間戳
每行數據均對應一個時間戳
版本號
Hadoop生態系統:HBase架構
Hadoop生態系統:Zookeeper(分佈式協做服務)
源自Google的Chubby論文
發表於2006年11月
Zookeeper是Chubby克隆版納
解決分佈式環境下數據管理問題
統一命名
狀態同步
集羣管理
配置同步
Hadoop生態系統:Zookeeper 角色及應用
HDFS
YARN
Storm
HBase
Flume
Dubbo(阿里巴巴)
Metaq(阿里巴巴)
Hadoop生態系統:Sqoop(數據同步工具)
鏈接Hadoop與傳統數據庫之間的橋樑
支持多種數據庫,包括MySQL、DB2等
插拔式,用戶可根據須要支持新的數據庫
本質上是一個MapReduce程序
充分利用了MR分佈式並行的特色
充分利用MR容錯性
Hadoop生態系統:Flume(日誌收集工具)
Cloudera開源的日誌收集系統
Flume特色
分佈式
高可靠性
高容錯性
易於定製與擴展
Hadoop生態系統:Oozie(做業流調度系統)
目前計算框架和做業類型繁多:
MapReduce Java、Streaming、HQL、Pig等
如何對這些框架和做業進行統一管理和調度:
不一樣做業之間存在依賴關係(DAG);
週期性做業
定時執行的做業
做業執行狀態監控與報警(發郵件、短信等)
多種解決方案:
Linux Crontab
本身設計調度系統(淘寶等公司)
直接使用開源系統(Oozie)
Hadoop版本:發行版介紹
Apache Hadoop
推薦使用最新的2.x.x版本
下載地址:http://hadoop.apache.org
CDH(Cloudera Distributed Hadoop)
推薦使用最新的CDH5版本,好比CDH5.0.0
下載地址: http://archive.cloudera.com/cdh5/cdh/
HDP(Hortonworks Data Platform)
推薦使用最新的HDP 2.x版本,好比HDP 2.1版本
下載地址:http://zh.hortonworks.com/hdp/downloads/
Hadoop版本:HDP
Hadoop版本:CDH
Hadoop版本:版本選擇
不一樣發行版兼容性 架構、部署和使用方法一致,不一樣之處僅在若干內部實現 建議選擇公司發行版,好比CDH或HDP 更易維護和升級 通過集成測試,不會面臨版本兼容問題