What is Hadoop?
Hadoop是一個框架,允許在集群中使用簡單的編程模型對大規(guī)模數(shù)據(jù)集進(jìn)程分布式計(jì)算。
1.hadoop包含許多功能模塊,它們各自負(fù)責(zé)了Hadoop的一部分功能,其中最主要的是Common、HDFS和YARN。HDFS負(fù)責(zé)數(shù)據(jù)的存儲,YARN負(fù)責(zé)統(tǒng)一資源調(diào)度和管理,Common則提供遠(yuǎn)程過程調(diào)用RPC、序列化機(jī)制。
2.Hadoop適合處理大規(guī)模數(shù)據(jù),并且能夠?qū)崿F(xiàn)分布式存儲和分布式計(jì)算。
3.Hadoop被部署在一個集群上。
Hadoop的生態(tài)圈
狹義的Hadoop僅僅代表了Common、HDFS、YARN和MapReduce模塊。但是隨著圍繞Hadoop的越來越多的軟件出現(xiàn),構(gòu)成了一個生機(jī)勃勃的Hadoop生態(tài)圈。
1.HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))是Hadoop的基石。它是一個具有高度容錯性的文件系統(tǒng),適合部署在廉價的機(jī)器上。HDFS能提供高度的吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集的應(yīng)用。
2.YARN(Yet Another Resource Negotiator,另一種資源調(diào)度器)是統(tǒng)一的資源管理和調(diào)度平臺。
3.MapReduce是一種編程模型,利用函數(shù)式的思想,將對數(shù)據(jù)集處理的過程分為Map和Reduce兩個階段。MapReduce這種編程模型非常適合分布式計(jì)算。
4.Spark是新一代的計(jì)算機(jī)框架,對迭代計(jì)算很有優(yōu)勢,和MapReduce相比,性能提升明顯。并且可以和YARN進(jìn)行集成,Spark也提供支持SQL的組件SparkSQL等。
5.Hbase是一個分布式的、面向列族的開源數(shù)據(jù)庫,擅長大規(guī)模數(shù)據(jù)的隨機(jī)、實(shí)時讀寫訪問。
6.Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,提供簡單的SQL查詢功能,并將SQL語句轉(zhuǎn)換為MapReduce作業(yè)運(yùn)行。Hive對Hadoop來說是非常重要的模塊,大大降低了Hadoop的使用門檻。
7.Pig和Hive類似,也是對大型數(shù)據(jù)集進(jìn)行分析和評估的工具,不過與Hive提供SQL接口不同的是,它提供一種高層的、面向領(lǐng)域的抽象語言:Pig Latin,與HQL相比,Pig latin更加靈活,但學(xué)習(xí)成本高。
8.Impala對存儲在HDFS、Hbase的海量數(shù)據(jù)提供交互式查詢的SQL接口。Impala的特點(diǎn)是查詢非常迅速,大幅度領(lǐng)先Hive。
9.Mahout是一個機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘庫,它利用MapReduce實(shí)現(xiàn)了經(jīng)典的機(jī)器學(xué)習(xí)算法,并使其具有良好的可擴(kuò)展性。
10.Flume使一個高可用、高可靠、分布式的海量日志采集、聚合和傳輸系統(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接收方的能力。
11.Sqoop是SQL to Hadoop的縮寫,主要作用在于在結(jié)構(gòu)化的數(shù)據(jù)存儲(關(guān)系型數(shù)據(jù)庫)與hadoop之間進(jìn)行數(shù)據(jù)雙向交換。也就是說,Sqoop可以將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到Hadoop的HDFS、Hive,也可以將Hdfs、Hive的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫中。Sqoop充分利用Hadoop的優(yōu)點(diǎn),整個導(dǎo)入導(dǎo)出都是由MapReduce計(jì)算框架實(shí)現(xiàn)并行化,非常高效。
12.Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),具有分布式、高可用的特點(diǎn),在大數(shù)據(jù)系統(tǒng)里面被廣泛的應(yīng)用,如果把大數(shù)據(jù)比作一臺機(jī)器的化,那么Kafka這種消息中間件就類似于前端總線,它鏈接了平臺里面的各個組件。