Hive,Hbase,HDFS等之間的關係

Hivehtml

hive不支持更改數據的操做,Hive基於Hadoop上運行,數據存儲在HDFS上。mysql

 

        Hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供完整的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
  Hive是創建在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,能夠用來進行數據提取轉化加載(ETL),這是一種能夠存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱爲 HQL,它容許熟悉 SQL 的用戶查詢數據。同時,這個語言也容許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 沒法完成的複雜的分析工做。
linux

參考:http://www.cstor.cn/textdetail_7444.html         Hive:基於hadoop的數據倉庫工具
sql

數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策(Decision Making Support)。數據庫

數據倉庫是一個過程而不是一個項目。編程

數據倉庫系統是一個信息提供平臺,他從 業務處理系統得到數據,主要以星型模型和雪花模型進行數據組織,併爲用戶提供各類手段從數據中獲取信息和知識。
從功能結構劃分,數據倉庫系統至少應該包含數據獲取(Data Acquisition)、 數據存儲(Data Storage)、數據訪問(Data Access)三個關鍵部分。

 

HDFS:app

HDFS是GFS的一種實現,他的完整名字是分佈式文件系統,相似於FAT32,NTFS,是一種文件格式,是底層的。
分佈式

Hive與Hbase的數據通常都存儲在HDFS上。hadoop HDFS爲他們提供了高可靠性的底層存儲支持。工具

hbase:oop

Hbase是Hadoop database,即Hadoop數據庫。它是一個適合於非結構化數據存儲的數據庫,HBase基於列的而不是基於行的模式。

HBase是Google Bigtable的開源實現,相似Google Bigtable利用GFS做爲其文件存儲系統,HBase利用Hadoop HDFS做爲其文件存儲系統;Google運行MapReduce來處理Bigtable中的海量數據,HBase一樣利用Hadoop MapReduce來處理HBase中的海量數據。

Hadoop HDFS爲HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce爲HBase提供了高性能的計算能力,Zookeeper爲HBase提供了穩定服務和failover機制。Pig和Hive還爲HBase提供了高層語言支持,使得在HBase上進行數據統計處理變的很是簡單。 Sqoop則爲HBase提供了方便的RDBMS(關係型數據庫)數據導入功能,使得傳統數據庫數據向HBase中遷移變的很是方便。

Pig:

Pig的語言層包括一個叫作PigLatin文本語言,Pig Latin是面向數據流的編程方式。Pig和Hive相似更側重於數據的查詢和分析,底層都是轉化成MapReduce程序運行。

區別是Hive是類SQL的查詢語言,要求數據存儲於表中,而Pig是面向數據流的一個程序語言。

 

 

 

 

Pig

一種操做hadoop的輕量級腳本語言,最初又雅虎公司推出,不過如今正在走下坡路了。當初雅虎本身慢慢退出pig的維護以後將它開源貢獻到開源社區由全部愛好者來維護。不過如今仍是有些公司在用。:)

Pig是一種數據流語言,用來快速輕鬆的處理巨大的數據。

Pig包含兩個部分:Pig Interface,Pig Latin。

Pig能夠很是方便的處理HDFS和HBase的數據,和Hive同樣,Pig能夠很是高效的處理其須要作的,經過直接操做Pig查詢能夠節省大量的勞動和時間。當你想在你的數據上作一些轉換,而且不想編寫MapReduce jobs就能夠用Pig.

Hive

不想用程序語言開發MapReduce的朋友好比DB們,熟悉SQL的朋友可使用Hive開離線的進行數據處理與分析工做。

注意Hive如今適合在離線下進行數據的操做,就是說不適合在掛在真實的生產環境中進行實時的在線查詢或操做,由於一個字「慢」。相反起源於FaceBook,Hive在Hadoop中扮演數據倉庫的角色。創建在Hadoop集羣的最頂層,對存儲在Hadoop羣上的數據提供類SQL的接口進行操做。你能夠用 HiveQL進行select,join,等等操做。

若是你有數據倉庫的需求而且你擅長寫SQL而且不想寫MapReduce jobs就能夠用Hive代替。

HBase

HBase做爲面向列的數據庫運行在HDFS之上,HDFS缺少隨即讀寫操做,HBase正是爲此而出現。HBase以Google BigTable爲藍本,以鍵值對的形式存儲。項目的目標就是快速在主機內數十億行數據中定位所需的數據並訪問它。

HBase是一個數據庫,一個NoSql的數據庫,像其餘數據庫同樣提供隨即讀寫功能,Hadoop不能知足實時須要,HBase正能夠知足。若是你須要實時訪問一些數據,就把它存入HBase。

你能夠用Hadoop做爲靜態數據倉庫,HBase做爲數據存儲,放那些進行一些操做會改變的數據。

Pig VS Hive

Hive更適合於數據倉庫的任務,Hive主要用於靜態的結構以及須要常常分析的工做。Hive與SQL類似促使 其成爲Hadoop與其餘BI工具結合的理想交集。

Pig賦予開發人員在大數據集領域更多的靈活性,並容許開發簡潔的腳本用於轉換數據流以便嵌入到較大的 應用程序。

Pig相比Hive相對輕量,它主要的優點是相比於直接使用Hadoop Java APIs可大幅削減代碼量。正由於如此,Pig仍然是吸引大量的軟件開發人員。

Hive和Pig均可以與HBase組合使用,Hive和Pig還爲HBase提供了高層語言支持,使得在HBase上進行數據統計處理變的很是簡單

Hive VS HBase

Hive是創建在Hadoop之上爲了減小MapReduce jobs編寫工做的批處理系統,HBase是爲了支持彌補Hadoop對實時操做的缺陷的項目 。

想象你在操做RMDB數據庫,若是是全表掃描,就用Hive+Hadoop,若是是索引訪問,就用HBase+Hadoop 。

Hive query就是MapReduce jobs能夠從5分鐘到數小時不止,HBase是很是高效的,確定比Hive高效的多。

參考: http://www.linuxidc.com/Linux/2014-03/98978.htm

相關文章
相關標籤/搜索