先了解一下Hadoop、Hive贯底、Spark三者的基本概念:
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)丰辣,主要就是解決數(shù)據(jù)存儲和數(shù)據(jù)分析計算的問題(通過HDFS和MapReduce實現(xiàn))。
Hive是基于Hadoop的數(shù)據(jù)倉庫工具,可以存儲笙什,查詢飘哨,分析數(shù)據(jù),方便決策人員和數(shù)據(jù)分析人員統(tǒng)計分析歷史數(shù)據(jù)琐凭。
Spark是一個基于內(nèi)存計算的開源的集群計算系統(tǒng)芽隆,目的是讓數(shù)據(jù)分析更加快速。
從Hadoop到大數(shù)據(jù)生態(tài)
廣義上Hadoop指的是圍繞Hadoop打造的大數(shù)據(jù)生態(tài)圈统屈。
Hadoop對應(yīng)于Google三駕馬車:HDFS對應(yīng)于GFS摆马,即分布式文件系統(tǒng),MapReduce即并行計算框架鸿吆,HBase對應(yīng)于BigTable囤采,即分布式NoSQL列數(shù)據(jù)庫,外加Zookeeper對應(yīng)于Chubby惩淳,即分布式鎖設(shè)施蕉毯。
Hadoop發(fā)展史:
Hadoop之父: Doug Cutting
Hadoop起源于Apache Lucene子項目: Nutch,Nutch的設(shè)計目標是構(gòu)建一個大型的全網(wǎng)搜索引擎思犁。遇到瓶頸:如何解決數(shù)十億網(wǎng)頁的存儲和索引問題
Google三篇論文
《The Google file system》 :谷歌分布式文件系統(tǒng)GFS
《MapReduce: Simpliied Data Processing on Large Clusters》 :谷歌分布式計算框架MapReduce
《Bigtable: A Distributed Storage System for Structured Data》 :谷歌結(jié)構(gòu)化數(shù)據(jù)存儲系統(tǒng)
變化:
① 在Hadoop1.x時代代虾,Hadoop中的MapReduce同時處理業(yè)務(wù)邏輯運算和資源的調(diào)度,耦合性較大激蹲。
② 在Hadoop2.x時代棉磨,增加了Yarn。Yarn只負責(zé)資源的調(diào)度学辱,MapReduce只負責(zé)運算乘瓤。
③ Hadoop3.x在組成上沒有什么變化。
現(xiàn)狀:
HDFS作為分布式文件存儲系統(tǒng)策泣,處在生態(tài)圈的底層與核心地位衙傀;
YARN作為分布式通用的集群資源管理系統(tǒng)和任務(wù)調(diào)度平臺, 支撐各種計算引擎運行萨咕,保證了Hadoop地位统抬;
MapReduce作為大數(shù)據(jù)生態(tài)圈第一代分布式計算引擎,由于自身設(shè)計的模型所產(chǎn)生的弊端危队, 導(dǎo)致企業(yè)一線幾乎不再直接使用MapReduce進行編程處理聪建,但是很多軟件的底層依然在使用MapReduce引擎來處理數(shù)據(jù)。
大數(shù)據(jù)技術(shù)生態(tài)體系
Sqoop【數(shù)據(jù)導(dǎo)入導(dǎo)出工具】: Sqoop 是一款開源的工具茫陆,主要用于在 Hadoop金麸、 Hive 與傳統(tǒng)的數(shù)據(jù)庫(MySQL)間進行數(shù)據(jù)的傳遞,可以將一個關(guān)系型數(shù)據(jù)庫(例如 : MySQL盅弛, Oracle 等)中的數(shù)據(jù)導(dǎo)進到 Hadoop 的 HDFS 中钱骂,也可以將 HDFS 的數(shù)據(jù)導(dǎo)進到關(guān)系型數(shù)據(jù)庫中叔锐。
Flume【日志數(shù)據(jù)采集框架】: Flume 是一個高可用的挪鹏,高可靠的见秽,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)讨盒,F(xiàn)lume 支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方解取,用于收集數(shù)據(jù);
Kafka: Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)
Spark: Spark 是當(dāng)前最流行的開源大數(shù)據(jù)內(nèi)存計算框架返顺≠骺啵可以基于 Hadoop 上存儲的大數(shù)據(jù)進行計算。
Flink: Flink 是當(dāng)前最流行的開源大數(shù)據(jù)內(nèi)存計算框架遂鹊。 用于實時計算的場景較多振乏。
Oozie【工作流調(diào)度框架】: Oozie 是一個管理 Hadoop 作業(yè)(job)的工作流程調(diào)度管理系統(tǒng)。
Hbase【基于HADOOP的分布式海量數(shù)據(jù)庫】: HBase 是一個分布式的秉扑、面向列的開源數(shù)據(jù)庫慧邮。 HBase 不同于一般的關(guān)系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫舟陆。
Hive【基于大數(shù)據(jù)技術(shù)(文件系統(tǒng)+運算框架)的SQL數(shù)據(jù)倉庫工具】: Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具误澳,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的 SQL 查詢功能秦躯,可以將 SQL 語句轉(zhuǎn)換為 MapReduce 任務(wù)進行運行忆谓。其優(yōu)點是學(xué)習(xí)成本低,可以通過類 SQL 語句快速實現(xiàn)簡單的 MapReduce 統(tǒng)計踱承,不必開發(fā)專門的 MapReduce 應(yīng)用倡缠,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
ZooKeeper【分布式協(xié)調(diào)服務(wù)基礎(chǔ)組件】:它是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)茎活,提供的功能包括:配置維護毡琉、名字服務(wù)、分布式同步妙色、組服務(wù)等桅滋。
附錄:
HDFS:分布式文件系統(tǒng)
MAPREDUCE:分布式運算程序開發(fā)框架
HIVE:基于大數(shù)據(jù)技術(shù)(文件系統(tǒng)+運算框架)的SQL數(shù)據(jù)倉庫工具
HBASE:基于HADOOP的分布式海量數(shù)據(jù)庫
ZOOKEEPER:分布式協(xié)調(diào)服務(wù)基礎(chǔ)組件
Mahout:基于mapreduce/spark/flink等分布式運算框架的機器學(xué)習(xí)算法庫
Oozie:工作流調(diào)度框架
Sqoop:數(shù)據(jù)導(dǎo)入導(dǎo)出工具
Flume:日志數(shù)據(jù)采集框架