看了幾天的Hadoop生態系統,對Hive,Pig,HBase搞的有些糊塗,查閱時發現糊塗的不止我一個,如某個鳥問的帖子發表的疑問,when to use Hbase and when to use Hive?....請教了google,現總結如下:
Pig
Pig是一種數據流語言,用來快速輕鬆的處理巨大的數據。Pig包含兩個部分:Pig Interface,Pig Latin。Pig可以非常方便的處理HDFS和HBase的數據,和Hive一樣,Pig可以非常高效的處理其需要做的,通過直接操作Pig查詢可以節省大量的勞動和時間。
當你想在你的數據上做一些轉換,並且不想編寫MapReduce jobs就可以用Pig.
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高效的多。
參考:
Hadoop Toolbox: When to Use What
How does Hive compare to HBase?
Comparing Pig Latin and SQL for Constructing Data Processing Pipelines