天天看點

hadoop元件hadoop 元件介紹

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。使用者可以在不了解分布式底層細節的情況下,開發分布式程式。充分利用叢集的威力進行高速運算和存儲。Hadoop實作了一個分布式檔案系統(Hadoop Distributed File System),其中一個元件是HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來通路應用程式的資料,适合那些有着超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式通路(streaming access)檔案系統中的資料。Hadoop的架構最核心的設計就是:HDFS和MapReduce。HDFS為海量的資料提供了存儲,而MapReduce則為海量的資料提供了計算。

hadoop元件hadoop 元件介紹

hadoop 元件介紹

  1. HDFS hadoop做出了一個虛拟檔案系統,在這個系統上你以為你建立了一個檔案,其實這個檔案有可能被同時存放在很多台機子上,這樣就讓你的系統表面上看起來是一個空間,實際上是很多伺服器的磁盤構成的,這就是分布式作業系統
  2. YARN 并行計算模型Map/Reduce(MapReduce2.0) 這是一個面向 Hadoop 的程式設計模型。有兩個階段,它們分别被稱為 Map 和 Reduce。在分布式系統上進行計算操作基本都是由這兩個概念步驟組成的,因為分布式系統,并不像一般的資料庫或者檔案系統,不能從上至下,或者從第一條開始進行求和等操作,就需要一種由分散的節點不斷向一個點聚攏的計算過程。
  3. HBase HBase是一個分布式的、面向列的開源資料庫
  4. ZooKeeper ooKeeper是Hadoop的正式子項目,它是一個針對大型分布式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。
  5. Hive 你可以在Hive裡面建立表,通過表映射實際存儲的hadoop檔案,然後寫sql去查詢資料。Hive會把你輸入的sql語句轉化為mapreduce 任務去查詢hadoop。但是速度非常慢,每次查詢大概需要幾分鐘,是以hive主要是用于統計分析用的,并且支援的sql文法非常有限。但是畢竟寫sql比些mapreduce任務簡單多了。
  6. Sqoop Sqoop是一款開源的工具,主要用于在HADOOP(Hive)與傳統的資料庫(mysql、postgresql…)間進行資料的傳遞。
  7. Impala Impala比原來基于MapReduce的Hive SQL查詢速度提升3~90倍。
  8. pig Pig用來寫一些即時腳本。
  9. Spark Spark是一個基于記憶體計算的開源的叢集計算系統,目的是讓資料分析更加快速。Apache Spark現在名聲大噪。為支援Spark項目成立的 Databricks公司 從Andereessen Horowittz那裡募集了1400萬美元,Cloudera也已決定全力支援Spark。
  10. HttpFs HttpFs 其實也是HDFS的元件之一隻是預設是沒有安裝的,有了HttpFs可以友善的在網頁上操作hdfs的檔案系統,并且HttpFs提供了一套REST風格的API可以用程式對hdfs的檔案進行操作
  11. Hue HUE是一個很漂亮的web用戶端,你可以在hue上調用和管理hadoop的各個元件,比如檢視/編輯Hbase表的資料,檢視/編輯Hive資料表,執行sql等作業。
  12. Oozie Oozie是一個工作流引擎伺服器,用于運作Hadoop Map/Reduce和Pig 任務工作流.同時Oozie還是一個Java Web程式,運作在Java Servlet容器中,如Tomcat
  13. Phoenix Phoenix是Apache的頂級項目。Phoenix在Hbase上建構了一層關系型資料庫。可以用SQL來查詢Hbase資料庫,并且速度比Impala更快。還支援很多豐富的特性,最有名的便是它的二級索引。Phoenix借鑒了很多關系型資料庫優化查詢的方法,将這些方法用在Hbase上,讓Hbase更友善使用。
  14. Flume 日志收集元件,通過在伺服器上安裝agent來收集伺服器的日志,而且可以把多個flume串聯起來,實作日志的轉換,處理和集中。其實這個元件并不完全算是hadoop生态圈裡面的東西,但是由于hadoop叢集機器衆多,日志數量巨大,可以說hadoop自己生成的日志就是海量資料,是以怎樣合理的收集日志和對日志進行查詢就成為了一個hadoop領域的一個必須解決的問題。是以flume也被列為hadoop生态圈的一份子
  15. Sentry 提供細粒度基于角色的安全控制

hive是什麼?

hive可以認為是map-reduce的一個包裝。

hive的意義就是把好寫的hive的sql(也叫hql)轉換為複雜難寫的map-reduce程式,進而降低使用Hadoop中使用map-reduce的難度。

Hive本身不存儲和計算資料,它完全依賴于HDFS和MapReduce,Hive中的表純邏輯(隻是個邏輯表)

hbase是什麼?

hbase可以認為是hdfs的一個包裝。他的本質是資料存儲,是個NoSql資料庫;hbase部署于hdfs之上,并且克服了hdfs在随機讀寫方面的缺點。

hbase可以了解為為hdfs建立了索引,查詢不走map-reduce,直接走自己的表

hbase是實體表,不是邏輯表,提供一個超大的記憶體hash表,搜尋引擎通過它來存儲索引,友善查詢操作。

繼續閱讀