Hive是什么
Hive是Hadoop生態(tài)系統(tǒng)中一個(gè)重要的框架.
Hive是建立在HDFS儲(chǔ)存系統(tǒng)之上的數(shù)據(jù)查詢(xún), 統(tǒng)計(jì), 分析框架,?對(duì)應(yīng)的大數(shù)據(jù)生態(tài)中的分析模塊, 而非儲(chǔ)存模塊.
Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,? 通過(guò)類(lèi)SQL => HQL 查詢(xún)語(yǔ)句, 管理已經(jīng)存在HDFS上的大型數(shù)據(jù)集.
Hive可以根據(jù)已經(jīng)儲(chǔ)存的數(shù)據(jù), 建立表結(jié)構(gòu), 指定映射關(guān)系, 用戶(hù)可以使用一個(gè)命令行工具和JDBC驅(qū)動(dòng)方式連接Hive.
能做什么
統(tǒng)計(jì), 查詢(xún), 分析儲(chǔ)存在HDFS上的海量數(shù)據(jù).
不能做什么
Hive不是一個(gè)關(guān)系型數(shù)據(jù)庫(kù), 不能進(jìn)行 OLTP(online transaction processing) 在線(xiàn)事務(wù)處理?
不支持實(shí)時(shí)查詢(xún) 以及 行級(jí)更新(由于HDFS只支持追加寫(xiě), 不支持隨機(jī)寫(xiě))
特點(diǎn)
僅儲(chǔ)存schema(metadata)在關(guān)系型數(shù)據(jù)庫(kù)中, 真正的數(shù)據(jù)存在HDFS上
支持OLAP(online analysis processing)
支持類(lèi)SQL查詢(xún)語(yǔ)言 => HQL
通用, 快速(對(duì)于海量數(shù)據(jù)), 可擴(kuò)展
缺點(diǎn)
(1) hive的hql表達(dá)能力有限
????①迭代式算法無(wú)法表達(dá)
????②數(shù)據(jù)挖掘方面不擅長(zhǎng)
(2) Hive的效率比較低
????①hive自動(dòng)生成的mapreduce程序, 通常情況下不夠智能(慢)
????②調(diào)優(yōu)困難, 粒度較粗
快速搭建

(1) 安裝地址?http://hive.apache.org/
(2) 部署
????① 把a(bǔ)pache-hive-1.2.1-bin.tar.gz上傳到linux的/opt/software目錄下
????② 解壓apache-hive-1.2.1-bin.tar.gz到/opt/module/目錄下面
$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
? ? ③?修改apache-hive-1.2.1-bin.tar.gz的名稱(chēng)為hive
$ mv apache-hive-1.2.1-bin/ hive
? ? ④ 修改/opt/module/hive/conf目錄下的hive-env.sh.template名稱(chēng)為hive-env.sh
$ mv hive-env.sh.template hive-env.sh
? ? ⑤ 配置hive-env.sh文件
? ? ? ? 配置HADOOP_HOME路徑和HIVE_CONF_DIR路徑
$?export HADOOP_HOME=/opt/module/hadoop-2.7.2
$?export HIVE_CONF_DIR=/opt/module/hive/conf
? ? ⑥ Hadoop集群配置
? ? ? ? 必須啟動(dòng)hdfs和yarn
$ sbin/start-dfs.sh
$ sbin/start-yarn.sh
????????在HDFS上創(chuàng)建/tmp和/user/hive/warehouse兩個(gè)目錄并修改他們的同組權(quán)限可寫(xiě)
$ bin/hadoop fs -mkdir /tmp
$ bin/hadoop fs -mkdir -p /user/hive/warehouse
$ bin/hadoop fs -chmod g+w /tmp
$ bin/hadoop fs -chmod g+w /user/hive/warehouse
快速使用
(1)啟動(dòng)hive
$bin/hive
(2)查看數(shù)據(jù)庫(kù)
hive> show databases;
(3)打開(kāi)默認(rèn)數(shù)據(jù)庫(kù)
hive> use default;
(4)顯示default數(shù)據(jù)庫(kù)中的表
hive> show tables;
(5)創(chuàng)建一張表
hive> create tablestudent(id int, name string);
(6)顯示數(shù)據(jù)庫(kù)中有幾張表
hive> show tables;
(7)查看表的結(jié)構(gòu)
hive> desc student;
(8)向表中插入數(shù)據(jù)
hive> insert into studentvalues(1000,"ss");
(9)查詢(xún)表中數(shù)據(jù)
hive> select * from student;
(10)退出hive
hive> quit;