hive架構:
hive基礎
1 概念
1.1 簡介
1.1.1 hive是基于hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表, 并提供簡單的sql查詢功能,可以将sql語句轉換為mapreduce任務進行運作。--olap
1.2 背景
1.2.1 olap邏輯和sql一樣大體一緻,可以将這些邏輯轉化為對應的mr,不需要每種類型的查詢分析都重複寫mr
1.2.2 facebook開發通用的mr程式架構,對外使用sql接口,架構就是hive
1.3 官網
1.3.1 http://hive.apache.org/
1.4 原理
1.4.1 建表
1.4.1.1 hive儲存中繼資料
1.4.1.1.1 可以使用mysql
1.4.1.2 指定hdfs檔案路徑
1.4.2 sql查詢
1.4.2.1 compiler編譯器比對mr模闆,生成mr執行個體
1.4.2.2 mr執行器
1.4.2.2.1 送出運作mr,傳回輸出
1.4.3 問題
1.4.3.1 hive采用的方法是将sql查詢轉化成mapreduce任務,這導緻hive的性能很差。 而且,hive隻能支援不到30%的sql分析功能
1.5 同類産品
1.5.1 impala
1.5.1.1 使用mpp并行資料庫思想,完全抛棄了mapreduce這個不太适合做sql查詢的範式。 比基于mapreduce的hivesql查詢速度提升3~30倍。支援hdfs、hbase作為存儲引擎。
1.5.1.2 http://baike.baidu.com/link?url=wjjdggrc150mjrw_jx53p8aedlotvwi7ho6p31ckjamq 2v7p6mevkrllluyvqxi7p_gusn3du2jf4detmy1t-q
1.5.1.3 http://www.ctocio.com/bigdata/9236.html
1.5.2 drill
1.5.2.1 impala僅支援cdh,drill建構在hadoop通用版本之上
1.5.3 spark shark
1.5.3.1 shark為了實作hive相容,在hql方面重用了hive中hql的解析、邏輯執行計劃翻譯、 執行計劃優化等邏輯,可以近似認為僅将實體執行計劃從mr作業替換成了spark作業
1.5.3.2 http://zhidao.baidu.com/link?url=ksali5bexln9hvhfp4mabsq2xspwdllf89-sgzlwz1laouo opmjwggs0w-eahovbaxgymsxbi5kjyxfrj1sv1mc_xtw0bn2hf96nf8zdhcu
1.5.4 spark sql
1.5.5 cassandra
1.5.5.1 http://baike.baidu.com/link?url=vqqi3df9gqb6pnudacglzz6ncgrvlovoa0mtxgdeqiawcy22yt2ftyrjkv perns6uymhvkrwmtlcb_312cmg9a
1.5.6 presto
1.5.6.1 http://www.linuxidc.com/linux/2015-07/119958.htm
1.5.6.2 http://prestodb-china.com/
1.5.7 如何選擇?
1.5.7.1 http://stackoverflow.com/questions/17113964/comparing-cassandras-cql-vs-spark- shark-queries-vs-hive-hadoop-dse-version
1.5.7.2 http://blog.163.com/xiaoji0106@126/blog/static/136134661201411322353856/
1.5.7.3 http://blog.sina.com.cn/s/blog_6277623c0102vnq2.html
1.5.7.4 http://blog.chinaunix.net/uid-29242841-id-4030543.html
1.5.7.5 https://www.zhihu.com/question/41541395