Hive安裝和使用

什么是Hive

Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具渤闷,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類SQL查詢功能脖镀。

Hive架構(gòu)

image.png

基本組成

用戶接口:包括CLI飒箭、JDBC/ODBC、WebGUI。其中弦蹂,CLI(command line interface)為shell命令行肩碟;JDBC/ODBC是Hive的JAVA實(shí)現(xiàn),與傳統(tǒng)數(shù)據(jù)庫JDBC類似凸椿;WebGUI是通過瀏覽器訪問Hive削祈。

元數(shù)據(jù)存儲(chǔ):通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫如mysql/derby中。Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中脑漫。Hive 中的元數(shù)據(jù)包括表的名字髓抑,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等)优幸,表的數(shù)據(jù)所在目錄等吨拍。

解釋器、編譯器网杆、優(yōu)化器羹饰、執(zhí)行器:完成HQL 查詢語句從詞法分析、語法分析跛璧、編譯严里、優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS 中追城,并在隨后有MapReduce 調(diào)用執(zhí)行

Hive與傳統(tǒng)數(shù)據(jù)庫對(duì)比

image.png

總結(jié):hive具有sql數(shù)據(jù)庫的外表,但應(yīng)用場(chǎng)景完全不同燥撞,hive只適合用來做批量數(shù)據(jù)統(tǒng)計(jì)分析


  1. [a1]查詢語言座柱。由于 SQL 被廣泛的應(yīng)用在數(shù)據(jù)倉庫中,因此物舒,專門針對(duì) Hive 的特性設(shè)計(jì)了類 SQL 的查詢語言 HQL色洞。熟悉 SQL 開發(fā)的開發(fā)者可以很方便的使用 Hive 進(jìn)行開發(fā)。

  2. 數(shù)據(jù)存儲(chǔ)位置冠胯。Hive 是建立在 Hadoop 之上的火诸,所有 Hive 的數(shù)據(jù)都是存儲(chǔ)在 HDFS 中的。而數(shù)據(jù)庫則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中荠察。

  3. 數(shù)據(jù)格式置蜀。Hive 中沒有定義專門的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定悉盆,用戶定義數(shù)據(jù)格式需要指定三個(gè)屬性:列分隔符(通常為空格盯荤、”\t”、”\x001″)焕盟、行分隔符(”\n”)以及讀取文件數(shù)據(jù)的方法(Hive 中默認(rèn)有三個(gè)文件格式 TextFile秋秤,SequenceFile 以及 RCFile)。由于在加載數(shù)據(jù)的過程中,不需要從用戶數(shù)據(jù)格式到 Hive 定義的數(shù)據(jù)格式的轉(zhuǎn)換灼卢,因此绍哎,Hive 在加載的過程中不會(huì)對(duì)數(shù)據(jù)本身進(jìn)行任何修改,而只是將數(shù)據(jù)內(nèi)容復(fù)制或者移動(dòng)到相應(yīng)的 HDFS 目錄中鞋真。而在數(shù)據(jù)庫中蛇摸,不同的數(shù)據(jù)庫有不同的存儲(chǔ)引擎,定義了自己的數(shù)據(jù)格式灿巧。所有數(shù)據(jù)都會(huì)按照一定的組織存儲(chǔ)赶袄,因此,數(shù)據(jù)庫加載數(shù)據(jù)的過程會(huì)比較耗時(shí)抠藕。

  4. 數(shù)據(jù)更新饿肺。由于 Hive 是針對(duì)數(shù)據(jù)倉庫應(yīng)用設(shè)計(jì)的,而數(shù)據(jù)倉庫的內(nèi)容是讀多寫少的盾似。因此敬辣,Hive 中不支持對(duì)數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時(shí)候中確定好的零院。而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的溉跃,因此可以使用 INSERT INTO ... VALUES 添加數(shù)據(jù),使用 UPDATE ... SET 修改數(shù)據(jù)告抄。

  5. 索引撰茎。之前已經(jīng)說過,Hive 在加載數(shù)據(jù)的過程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何處理打洼,甚至不會(huì)對(duì)數(shù)據(jù)進(jìn)行掃描龄糊,因此也沒有對(duì)數(shù)據(jù)中的某些 Key 建立索引。Hive 要訪問數(shù)據(jù)中滿足條件的特定值時(shí)募疮,需要暴力掃描整個(gè)數(shù)據(jù)炫惩,因此訪問延遲較高。由于 MapReduce 的引入阿浓, Hive 可以并行訪問數(shù)據(jù)他嚷,因此即使沒有索引,對(duì)于大數(shù)據(jù)量的訪問芭毙,Hive 仍然可以體現(xiàn)出優(yōu)勢(shì)筋蓖。數(shù)據(jù)庫中,通常會(huì)針對(duì)一個(gè)或者幾個(gè)列建立索引稿蹲,因此對(duì)于少量的特定條件的數(shù)據(jù)的訪問扭勉,數(shù)據(jù)庫可以有很高的效率,較低的延遲苛聘。由于數(shù)據(jù)的訪問延遲較高涂炎,決定了 Hive 不適合在線數(shù)據(jù)查詢忠聚。

  6. 執(zhí)行。Hive 中大多數(shù)查詢的執(zhí)行是通過 Hadoop 提供的 MapReduce 來實(shí)現(xiàn)的唱捣,而數(shù)據(jù)庫通常有自己的執(zhí)行引擎两蟀。

  7. 執(zhí)行延遲。之前提到震缭,Hive 在查詢數(shù)據(jù)的時(shí)候赂毯,由于沒有索引,需要掃描整個(gè)表拣宰,因此延遲較高党涕。另外一個(gè)導(dǎo)致 Hive 執(zhí)行延遲高的因素是 MapReduce 框架。由于 MapReduce 本身具有較高的延遲巡社,因此在利用 MapReduce 執(zhí)行 Hive 查詢時(shí)膛堤,也會(huì)有較高的延遲。相對(duì)的晌该,數(shù)據(jù)庫的執(zhí)行延遲較低肥荔。當(dāng)然,這個(gè)低是有條件的朝群,即數(shù)據(jù)規(guī)模較小燕耿,當(dāng)數(shù)據(jù)規(guī)模大到超過數(shù)據(jù)庫的處理能力的時(shí)候,Hive 的并行計(jì)算顯然能體現(xiàn)出優(yōu)勢(shì)姜胖。

  8. 可擴(kuò)展性誉帅。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可擴(kuò)展性是和 Hadoop 的可擴(kuò)展性是一致的(世界上最大的 Hadoop 集群在 Yahoo!谭期,2009年的規(guī)模在 4000 臺(tái)節(jié)點(diǎn)左右)堵第。而數(shù)據(jù)庫由于 ACID 語義的嚴(yán)格限制,擴(kuò)展行非常有限隧出。目前最先進(jìn)的并行數(shù)據(jù)庫 Oracle 在理論上的擴(kuò)展能力也只有 100 臺(tái)左右。

  9. 數(shù)據(jù)規(guī)模阀捅。由于 Hive 建立在集群上并可以利用 MapReduce 進(jìn)行并行計(jì)算胀瞪,因此可以支持很大規(guī)模的數(shù)據(jù);對(duì)應(yīng)的饲鄙,數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小凄诞。

安裝

derby版hive直接使用:

1、解壓hive

cd   /export/softwares
tar -zxvf   hive-1.1.0-cdh5.14.0.tar.gz   -C   ../servers/

2忍级、 直接啟動(dòng) bin/hive

bin/hive
hive> create database mytest;

缺點(diǎn):多個(gè)地方安裝hive后帆谍,每一個(gè)hive是擁有一套自己的元數(shù)據(jù),大家的庫轴咱、表就不統(tǒng)一拓哟;

使用mysql共享hive元數(shù)據(jù)

mysql安裝省略。袒哥。荆秦。

  1. 開啟mysql遠(yuǎn)程連接
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

2.修改hive的配置文件
修改hive-env.sh
添加我們的hadoop的環(huán)境變量

cd  /export/servers/hive-1.1.0-cdh5.14.0/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
#加入
HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/export/servers/hive-1.1.0-cdh5.14.0/conf

修改hive-site.xml
cd /export/servers/hive-1.1.0-cdh5.14.0/conf
vim hive-site.xml


<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://node03.hadoop.com:3306/hive?createDatabaseIfNotExist=true</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value>
        </property>
        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>node03.hadoop.com</value>
        </property>
<!--
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node03.hadoop.com:9083</value>
        </property>
-->
</configuration>

上傳mysql的lib驅(qū)動(dòng)包
將mysql的lib驅(qū)動(dòng)包上傳到hive的lib目錄下
cd /export/servers/hive-1.1.0-cdh5.14.0/lib
將mysql-connector-java-5.1.38.jar 上傳到這個(gè)目錄下

使用方式
第一種交互方式:Hive交互shell

bin/hive

查看所有的數(shù)據(jù)庫
hive (default)> show databases;

創(chuàng)建一個(gè)數(shù)據(jù)庫
hive (default)> create database myhive;
使用該數(shù)據(jù)庫并創(chuàng)建數(shù)據(jù)庫表
hive (default)> use myhive;
hive (myhive)> create table test(id int,name string);
第二種交互方式:Hive JDBC服務(wù)

啟動(dòng)hiveserver2服務(wù)

#前臺(tái)啟動(dòng)
bin/hive --service hiveserver2

#后臺(tái)啟動(dòng)
nohup bin/hive --service hiveserver2  &

beeline連接hiveserver2

bin/beeline
beeline> !connect jdbc:hive2://node03.hadoop.com:10000

注意:如果使用beeline方式連接hiveserver2,一定要保證hive在mysql當(dāng)中的元數(shù)據(jù)庫已經(jīng)創(chuàng)建成功辑舷,不然就會(huì)拒絕連接

第三種交互方式:Hive命令

使用 –e 參數(shù)來直接執(zhí)行hql的語句

bin/hive -e "use myhive;select * from test;"

使用 –f 參數(shù)通過指定文本文件來執(zhí)行hql的語句

vim hive.sql
use myhive;select * from test;
bin/hive -f hive.sql

更多參數(shù)參考以下


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子讶舰,更是在濱河造成了極大的恐慌,老刑警劉巖需了,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跳昼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肋乍,警方通過查閱死者的電腦和手機(jī)鹅颊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來住拭,“玉大人挪略,你說我怎么就攤上這事√显溃” “怎么了杠娱?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谱煤。 經(jīng)常有香客問我摊求,道長(zhǎng),這世上最難降的妖魔是什么刘离? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任室叉,我火速辦了婚禮,結(jié)果婚禮上硫惕,老公的妹妹穿的比我還像新娘茧痕。我一直安慰自己,他們只是感情好恼除,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布踪旷。 她就那樣靜靜地躺著,像睡著了一般豁辉。 火紅的嫁衣襯著肌膚如雪令野。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天徽级,我揣著相機(jī)與錄音气破,去河邊找鬼。 笑死餐抢,一個(gè)胖子當(dāng)著我的面吹牛现使,可吹牛的內(nèi)容都是我干的低匙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朴下,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼努咐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起殴胧,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤渗稍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后团滥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竿屹,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年灸姊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拱燃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡力惯,死狀恐怖碗誉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情父晶,我是刑警寧澤哮缺,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站甲喝,受9級(jí)特大地震影響尝苇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埠胖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一糠溜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧直撤,春花似錦非竿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至圈盔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悄雅,已是汗流浹背驱敲。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宽闲,地道東北人众眨。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓握牧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親娩梨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沿腰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354