Pigmysql
一種操做hadoop的輕量級腳本語言,最初又雅虎公司推出,不過如今正在走下坡路了。當初雅虎本身慢慢退出pig的維護以後將它開源貢獻到開源社區由全部愛好者來維護。不過如今仍是有些公司在用,不過我認爲與其使用pig不如使用hive。:)sql
Pig是一種數據流語言,用來快速輕鬆的處理巨大的數據。shell
Pig包含兩個部分:Pig Interface,Pig Latin。數據庫
Pig能夠很是方便的處理HDFS和HBase的數據,和Hive同樣,Pig能夠很是高效的處理其須要作的,經過直接操做Pig查詢能夠節省大量的勞動和時間。當你想在你的數據上作一些轉換,而且不想編寫MapReduce jobs就能夠用Pig.瀏覽器
Hive架構
不想用程序語言開發MapReduce的朋友好比DB們,熟悉SQL的朋友可使用Hive開離線的進行數據處理與分析工做。ide
注意Hive如今適合在離線下進行數據的操做,就是說不適合在掛在真實的生產環境中進行實時的在線查詢或操做,由於一個字「慢」。相反工具
起源於FaceBook,Hive在Hadoop中扮演數據倉庫的角色。創建在Hadoop集羣的最頂層,對存儲在Hadoop羣上的數據提供類SQL的接口進行操做。你能夠用 HiveQL進行select,join,等等操做。oop
若是你有數據倉庫的需求而且你擅長寫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高效的多。
介紹:
1、什麼是hive???
1,hive是基於Hadoop的一個數據倉庫工具、
2,能夠將結構化的數據文件映射爲一張數據庫表,並提供類sql的查詢功能、
3,能夠將sql語句轉換爲mapreduce任務進行運行、
4,能夠用來進行數據提取轉換加載(ETL)
5,hive是sql解析引擎,它將sql 語句轉換成M/R job而後在Hadoop中運行。
hive的表其實就是HDFS的目錄/文件夾。
hive表中的數據 就是hdfs目錄中的文件。按表名把文件夾分開。若是是分區表,則分區值是子文件夾,能夠直接在M/R job裏使用這些數據.
6,hive優勢與缺點:
能夠提供類SQL語句快速實現簡單的mapreduce統計,不須要開發專門的mapreduce應用
不支持實時查詢
7,hive數據分爲真實存儲的數據和元數據
真實數據存儲在hdfs中,元數據存儲在mysql中
metastore 元數據存儲數據庫
Hive將元數據存儲在數據庫中,如MySQL、derby。
Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),表的數據所在目錄等。
2、hive的體系架構:
用戶接口,包括 CLI(shell),JDBC/ODBC,WebUI(經過瀏覽器)
元數據存儲,一般是存儲在關係數據庫如 mysql, derby 中
解釋器、編譯器、優化器、執行器完成HQL查詢語句從語法分析,編譯,優化以及查詢計劃的生成,生成的查詢計劃存儲在HDFS中,並隨後被mapreduce調用執行
Hadoop:用 HDFS 進行存儲,利用 MapReduce 進行計算 (帶 的查詢select from teacher不會生成mapreduce任務,只是進行全表掃描)