hadoop官方文档_hadoop体系简介
hadoop核心
Apache Hadoop 項(xiàng)目有兩個(gè)核心組件,被稱為 Hadoop 分布式文件系統(tǒng) (Hadoop Distributed File System, HDFS) 的文件存儲,以及被稱為 MapReduce 的編程框架。有一些支持項(xiàng)目充分利用了 HDFS 和 MapReduce。
支持商
Hadoop有兩個(gè)主要支持商HortonWorks (代表社區(qū))和 Cloudera (代表商業(yè)), HortonWorks發(fā)布的安裝包叫 Ambari , Cloudera發(fā)布的安裝包叫 CDH (截至本文發(fā)布最新為CDH5)。其實(shí)還有一個(gè)MapR因?yàn)橛玫娜瞬欢?#xff0c;我就不介紹了
選擇建議:
我也不知道選什么好,因?yàn)槲抑挥眠^cdh的版本,只是因?yàn)樗雌饋砀虡I(yè)化,可能會更穩(wěn)定吧,不過cdh的官方文檔都是英文而且寫的很雜亂。如果你找不到什么cdh的資料可以看下我博客里面關(guān)于hadoop的文章,這些都是是我在cdh官方文檔的基礎(chǔ)上翻譯和改進(jìn)的
生態(tài)圈
下面介紹下Hadoop龐大的開源生態(tài)圈的一些組件(主要還是以CDH5官方安裝教程有提到的為主)。由于條目眾多,我會列出學(xué)習(xí)的優(yōu)先級:高,低。優(yōu)先級低的只需要了解就好了,基本工作中都可能不會用到。所以大家一上手的時(shí)候只需要高這個(gè)級別的就好了,低的等閑的沒事干的時(shí)候去看下。
HDFS [高]
hadoop做出了一個(gè)虛擬文件系統(tǒng),在這個(gè)系統(tǒng)上你以為你創(chuàng)建了一個(gè)文件,其實(shí)這個(gè)文件有可能被同時(shí)存放在很多臺機(jī)子上,這樣就讓你的系統(tǒng)表面上看起來是一個(gè)空間,實(shí)際上是很多服務(wù)器的磁盤構(gòu)成的,這就是分布式操作系統(tǒng)
YARN (MapReduce2.0) [高]
這是一個(gè)面向 Hadoop 的編程模型。有兩個(gè)階段,它們分別被稱為 Map 和 Reduce。在分布式系統(tǒng)上進(jìn)行計(jì)算操作基本都是由這兩個(gè)概念步驟組成的,因?yàn)榉植际较到y(tǒng),并不像一般的數(shù)據(jù)庫或者文件系統(tǒng),不能從上至下,或者從第一條開始進(jìn)行求和等操作,就需要一種由分散的節(jié)點(diǎn)不斷向一個(gè)點(diǎn)聚攏的計(jì)算過程。
HBase [高]
HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫,該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫。另一個(gè)不同的是HBase基于列的而不是基于行的模式。HBase 跟 MongoDB也是目前市面上NoSQL數(shù)據(jù)庫的兩個(gè)首選項(xiàng)目
ZooKeeper [高]
ZooKeeper是Hadoop的正式子項(xiàng)目,它是一個(gè)針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。提供中央的控制信息和同步。通常為Hbase提供節(jié)點(diǎn)見的協(xié)調(diào)。看起來很抽象,簡單的說沒有zookeeper就無法部署HDFS的HA模式,只要是生產(chǎn)環(huán)境的部署肯定離不開zookeeper。所以一開始也不用太懂zookeeper,只要會用就行。
Hive [高]
你可以在Hive里面建立表,通過表映射實(shí)際存儲的hadoop文件,然后寫sql去查詢數(shù)據(jù)。Hive會把你輸入的sql語句轉(zhuǎn)化為mapreduce 任務(wù)去查詢hadoop。但是速度非常慢,每次查詢大概需要幾分鐘,所以hive主要是用于統(tǒng)計(jì)分析用的,并且支持的sql語法非常有限。但是畢竟寫sql比些mapreduce任務(wù)簡單多了。
Sqoop [高]
Sqoop是一款開源的工具,主要用于在HADOOP(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進(jìn)行數(shù)據(jù)的傳遞。
Impala [高]
Cloudera發(fā)布了實(shí)時(shí)查詢開源項(xiàng)目Impala 1.0 beta版,稱比原來基于MapReduce的Hive SQL查詢速度提升3~90倍(詳情可以參考此文中的“How much faster are Impala queries than Hive ones, really?”部分),而且更加靈活易用。Impala是高角羚的意思,這種羚羊主要分布在東非。多款產(chǎn)品實(shí)測表明,Impala比原來基于MapReduce的Hive SQL查詢速度提升3~90倍。Impala是Google Dremel的模仿,但在SQL功能上青出于藍(lán)勝于藍(lán)。
pig [高]
pig是hadoop上層的衍生架構(gòu),與hive類似。對比hive(hive類似sql,是一種聲明式的語言),pig是一種過程語言,類似于存儲過程一步一步得進(jìn)行數(shù)據(jù)轉(zhuǎn)化。感覺跟hive 類似是不是?網(wǎng)上有人總結(jié)了他們的區(qū)別:Pig用來寫一些即時(shí)腳本吧,比如領(lǐng)導(dǎo)問你要份數(shù)據(jù),半個(gè)小時(shí)要出來之類;Hive嘛,就是一個(gè)產(chǎn)品經(jīng)理過來,問這個(gè)啥回事?于是你Hive一下,一個(gè)簡潔的類SQL語句
Spark [高]
Spark是一個(gè)基于內(nèi)存計(jì)算的開源的集群計(jì)算系統(tǒng),目的是讓數(shù)據(jù)分析更加快速。Apache Spark現(xiàn)在名聲大噪。為支持Spark項(xiàng)目成立的 Databricks公司 從Andereessen Horowittz那里募集了1400萬美元,Cloudera也已決定全力支持Spark
HttpFs[高]
HttpFs 其實(shí)也是HDFS的組件之一只是默認(rèn)是沒有安裝的,有了HttpFs可以方便的在網(wǎng)頁上操作hdfs的文件系統(tǒng),并且HttpFs提供了一套REST風(fēng)格的API可以用程序?qū)dfs的文件進(jìn)行操作
Hue [高]
HUE是一個(gè)很漂亮的web客戶端,你可以在hue上調(diào)用和管理hadoop的各個(gè)組件,比如查看/編輯Hbase表的數(shù)據(jù),查看/編輯Hive數(shù)據(jù)表,執(zhí)行sql等作業(yè)
Oozie [高]
Oozie是一個(gè)工作流引擎服務(wù)器,用于運(yùn)行Hadoop Map/Reduce和Pig 任務(wù)工作流.同時(shí)Oozie還是一個(gè)Java Web程序,運(yùn)行在Java Servlet容器中,如Tomcat
Phoenix[高]
Phoenix是Apache的頂級項(xiàng)目。Phoenix在Hbase上構(gòu)建了一層關(guān)系型數(shù)據(jù)庫??梢杂肧QL來查詢Hbase數(shù)據(jù)庫,并且速度比Impala更快。還支持很多豐富的特性,最有名的便是它的二級索引。Phoenix借鑒了很多關(guān)系型數(shù)據(jù)庫優(yōu)化查詢的方法,將這些方法用在Hbase上,讓Hbase更方便使用。
Flume[低]
日志收集組件,通過在服務(wù)器上安裝agent來收集服務(wù)器的日志,而且可以把多個(gè)flume串聯(lián)起來,實(shí)現(xiàn)日志的轉(zhuǎn)換,處理和集中。其實(shí)這個(gè)組件并不完全算是hadoop生態(tài)圈里面的東西,但是由于hadoop集群機(jī)器眾多,日志數(shù)量巨大,可以說hadoop自己生成的日志就是海量數(shù)據(jù),所以怎樣合理的收集日志和對日志進(jìn)行查詢就成為了一個(gè)hadoop領(lǐng)域的一個(gè)必須解決的問題。所以flume也被列為hadoop生態(tài)圈的一份子
Sentry [低]
提供細(xì)粒度基于角色的安全控制
Flume [低]
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),Flume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。
Apache Crunch [低]
Apache Crunch(孵化器項(xiàng)目)是基于Google的FlumeJava庫編寫的Java庫,用于創(chuàng)建MapReduce流水線。與其他用來創(chuàng)建MapReduce作業(yè)的高層工具(如Apache Hive、Apache Pig和Cascading等)類似,Crunch提供了用于實(shí)現(xiàn)如連接數(shù)據(jù)、執(zhí)行聚合和排序記錄等常見任務(wù)的模式庫。而與其他工具不同的是,Crunch并不強(qiáng)制所有輸入遵循同一數(shù)據(jù)類型。相反,Crunch使用了一種定制的類型系統(tǒng),非常靈活,能夠直接處理復(fù)雜數(shù)據(jù)類型,如時(shí)間序列、HDF5文件、Apache HBase表和序列化對象(像protocol buffer或Avro記錄)等。
Crunch并不想阻止開發(fā)者以MapReduce方式思考,而是嘗試使之簡化。盡管MapReduce有諸多優(yōu)點(diǎn),但對很多問題而言,并非正確的抽象級別:大部分有意思的計(jì)算都是由多個(gè)MapReduce作業(yè)組成的,情況往往是這樣——出于性能考慮,我們需要將邏輯上獨(dú)立的操作(如數(shù)據(jù)過濾、數(shù)據(jù)投影和數(shù)據(jù)變換)組合為一個(gè)物理上的MapReduce作業(yè)
Llama [低]
讓外部服務(wù)器從YARN獲取資源的框架,另外Llama就是羊駝國內(nèi)俗稱草泥馬
Mahout [低]
Mahout 是 Apache Software Foundation(ASF) 旗下的一個(gè)開源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Apache Mahout項(xiàng)目已經(jīng)發(fā)展到了它的第三個(gè)年頭,目前已經(jīng)有了三個(gè)公共發(fā)行版本。Mahout包含許多實(shí)現(xiàn),包括聚類、分類、推薦過濾、頻繁子項(xiàng)挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地?cái)U(kuò)展到云中。
Mahout 的創(chuàng)始人 Grant Ingersoll 介紹了機(jī)器學(xué)習(xí)的基本概念,并演示了如何使用 Mahout 來實(shí)現(xiàn)文檔聚類、提出建議和組織內(nèi)容。
Cloudera Search [低]
基于Solr的查詢組件
Snappy [低]
Snappy 是一個(gè) C++ 的用來壓縮和解壓縮的開發(fā)包,其目標(biāo)不是最大限度壓縮,而且不兼容其他壓縮格式。Snappy 旨在提供高速壓縮速度和合理的壓縮率。Snappy 比 zlib 更快,但文件相對要大 20% 到 100%。在 64位模式的 Core i7 處理器上,可達(dá)每秒 250~500兆的壓縮速度。
Whirr [低]
Apache Whirr是一套運(yùn)行于云服務(wù)的類庫(包括Hadoop),可提供高度的互補(bǔ)性。Whirr現(xiàn)今相對中立,當(dāng)前支持Amazon EC2和Rackspace服務(wù)。一組為了運(yùn)行云服務(wù)而設(shè)計(jì)的代碼庫,比如可以用來在AWS上部署ZooKeeper
Avro [低]
被IBM和Cloudera使用,用于數(shù)據(jù)串行化,也就是將數(shù)據(jù)轉(zhuǎn)換為緊密的二進(jìn)制格式(JSON)在Hadoop上存儲和使用。以下的兩個(gè)在CDH手冊中并沒有提到,但是在別的hadoop教程中經(jīng)常被提到,順帶也介紹下
Fuse [低]
讓 HDFS 系統(tǒng)看起來就像一個(gè)普通的文件系統(tǒng),所以您可以對 HDFS 數(shù)據(jù)使用 ls、rm、cd 和其他命令。
Hadoop Streaming [低]
一個(gè)實(shí)用程序,在任何語言(C、Perl 和 Python、C++、Bash 等)中支持 MapReduce 代碼。示例包括一個(gè) Python 映射程序和一個(gè) AWK 縮減程序。
Hadoop 架構(gòu)圖
HDFS(底層)位于商品硬件的集群之上。簡單的機(jī)架式服務(wù)器,每臺都配置 2 個(gè)十六核 CPU、6 到 12 個(gè)磁盤,以及 32G RAM。在一個(gè) map-reduce 作業(yè)中,Map層以極高的速度從磁盤讀取。Map向Reduce發(fā)出已進(jìn)行排序和提供的鍵值對,然后,Reduce層匯總鍵值對。
總結(jié)
以上是生活随笔為你收集整理的hadoop官方文档_hadoop体系简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ string 堆还是栈_5个刁钻
- 下一篇: java求数列的最大子段和_天下无双的公