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