大数据生态系统的认识
標(biāo)題大數(shù)據(jù)生態(tài)系統(tǒng)
加粗樣式一.認(rèn)識Hadoop
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),其中一個組件是HDFS。HDFS有高容錯性的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce則為海量的數(shù)據(jù)提供了計算。
Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成員組成 如圖
Ambari(安裝部署工具)
Apache Ambari是一種基于Web的工具,支持Apache Hadoop集群的供應(yīng)、管理和監(jiān)控。Ambari已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。
Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是5個頂級hadoop管理工具之一
Ambari 跟 Hadoop 等開源軟件一樣,也是 Apache Software Foundation 中的一個項目,并且是頂級項目。2018年11月為止最新的發(fā)布版本是 2.7.3。就 Ambari 的作用來說,就是創(chuàng)建、管理、監(jiān)視 Hadoop 的集群,但是這里的 Hadoop 是廣義,指的是 Hadoop 整個生態(tài)圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不僅是特指 Hadoop。用一句話來說,Ambari 就是為了讓 Hadoop 以及相關(guān)的大數(shù)據(jù)軟件更容易使用的一個工具。
YARN(資源調(diào)度管理框架)
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。
HDFS(分布式文件系統(tǒng))
oop分布式文件系統(tǒng)(HDFS)是指被設(shè)計成適合運行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)(Distributed File System)。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點。但同時,它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來實現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎(chǔ)架構(gòu)而開發(fā)的。HDFS是Apache Hadoop Core項目的一部分。
HDFS有著高容錯性(fault-tolerant)的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實現(xiàn)流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
Hbase (分布式數(shù)據(jù)庫)
HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫。另一個不同的是HBase基于列的而不是基于行的模式。
Zookeeper(分布式協(xié)調(diào)服務(wù))
ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。
ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
ZooKeeper包含一個簡單的原語集,提供Java和C的接口。
ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的接口,代碼在$zookeeper_home\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。
MapReduce(離線計算)
MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)“和"Reduce(歸約)”,是它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。 當(dāng)前的軟件實現(xiàn)是指定一個Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
Tez (DAG計算)
Tez對外提供了6種可編程組件,分別是:
Input:對輸入數(shù)據(jù)源的抽象,它解析輸入數(shù)據(jù)格式,并吐出一個個Key/value
Output:對輸出數(shù)據(jù)源的抽象,它將用戶程序產(chǎn)生的Key/value寫入文件系統(tǒng)
Paritioner:對數(shù)據(jù)進行分片,類似于MR中的Partitioner
Processor:對計算的抽象,它從一個Input中獲取數(shù)據(jù),經(jīng)處理后,通過Output輸出
Task:對任務(wù)的抽象,每個Task由一個Input、Ouput和Processor組成
Maser:管理各個Task的依賴關(guān)系,并按順依賴關(guān)系執(zhí)行他們
除了以上6種組件,Tez還提供了兩種算子,分別是Sort(排序)和Shuffle(混洗),為了用戶使用方便,它還提供了多種Input、Output、Task和Sort的實現(xiàn),具體如下:
Input實現(xiàn):LocalMergedInput(文件本地合并后作為輸入),ShuffledMergedInput(遠程拷貝數(shù)據(jù)且合并后作為輸入)
Output實現(xiàn):InMemorySortedOutput(內(nèi)存排序后輸出),LocalOnFileSorterOutput(本地磁盤排序后輸出),OnFileSortedOutput(磁盤排序后輸出)
Task實現(xiàn):RunTimeTask(非常簡單的Task,基本沒做什么事)
Sort實現(xiàn):DefaultSorter(本地數(shù)據(jù)排序),InMemoryShuffleSorter(遠程拷貝數(shù)據(jù)并排序)
Speak(內(nèi)存計算)
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點;但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
Spark 是在 Scala 語言中實現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。
盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統(tǒng)中并行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學(xué)伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。
Hive和 Hive2
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。Hive的優(yōu)點是學(xué)習(xí)成本低,可以通過類似SQL語句實現(xiàn)快速MapReduce統(tǒng)計,使MapReduce變得更加簡單,而不必開發(fā)專門的MapReduce應(yīng)用程序。hive十分適合對數(shù)據(jù)倉庫進行統(tǒng)計分析。
pig pig2
Pig是一個基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數(shù)據(jù)分析請求轉(zhuǎn)換為一系列經(jīng)過優(yōu)化處理的MapReduce運算。Pig為復(fù)雜的海量數(shù)據(jù)并行計算提供了一個簡單的操作和編程接口。
shark
Shark 是一個大型的數(shù)據(jù)倉庫系統(tǒng)為 Spark 的設(shè)計與 Apache Hive 兼容。它處理 Hive QL 的性能比 Apache Hive 快 30 倍。支持 Hive 查詢語言、元存儲、序列化格式和用戶自定義函數(shù)。
以上11項組成了 Hadoop
而Hadoop 又組成了大數(shù)據(jù)生態(tài)系統(tǒng)
總結(jié)
以上是生活随笔為你收集整理的大数据生态系统的认识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML页面,图片img在容器DIV中,
- 下一篇: C语言运行环境介绍