Hive是什么
Hive是Hadoop生態(tài)系統(tǒng)中一個重要的框架.
Hive是建立在HDFS儲存系統(tǒng)之上的數(shù)據(jù)查詢, 統(tǒng)計, 分析框架,?對應(yīng)的大數(shù)據(jù)生態(tài)中的分析模塊, 而非儲存模塊.
Hive是一個數(shù)據(jù)倉庫工具,? 通過類SQL => HQL 查詢語句, 管理已經(jīng)存在HDFS上的大型數(shù)據(jù)集.
Hive可以根據(jù)已經(jīng)儲存的數(shù)據(jù), 建立表結(jié)構(gòu), 指定映射關(guān)系, 用戶可以使用一個命令行工具和JDBC驅(qū)動方式連接Hive.
能做什么
統(tǒng)計, 查詢, 分析儲存在HDFS上的海量數(shù)據(jù).
不能做什么
Hive不是一個關(guān)系型數(shù)據(jù)庫, 不能進行 OLTP(online transaction processing) 在線事務(wù)處理?
不支持實時查詢 以及 行級更新(由于HDFS只支持追加寫, 不支持隨機寫)
特點
僅儲存schema(metadata)在關(guān)系型數(shù)據(jù)庫中, 真正的數(shù)據(jù)存在HDFS上
支持OLAP(online analysis processing)
支持類SQL查詢語言 => HQL
通用, 快速(對于海量數(shù)據(jù)), 可擴展
缺點
(1) hive的hql表達能力有限
????①迭代式算法無法表達
????②數(shù)據(jù)挖掘方面不擅長
(2) Hive的效率比較低
????①hive自動生成的mapreduce程序, 通常情況下不夠智能(慢)
????②調(diào)優(yōu)困難, 粒度較粗
快速搭建
(1) 安裝地址?http://hive.apache.org/
(2) 部署
????① 把apache-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的名稱為hive
$ mv apache-hive-1.2.1-bin/ hive
? ? ④ 修改/opt/module/hive/conf目錄下的hive-env.sh.template名稱為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集群配置
? ? ? ? 必須啟動hdfs和yarn
$ sbin/start-dfs.sh
$ sbin/start-yarn.sh
????????在HDFS上創(chuàng)建/tmp和/user/hive/warehouse兩個目錄并修改他們的同組權(quán)限可寫
$ 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)啟動hive
$bin/hive
(2)查看數(shù)據(jù)庫
hive> show databases;
(3)打開默認數(shù)據(jù)庫
hive> use default;
(4)顯示default數(shù)據(jù)庫中的表
hive> show tables;
(5)創(chuàng)建一張表
hive> create tablestudent(id int, name string);
(6)顯示數(shù)據(jù)庫中有幾張表
hive> show tables;
(7)查看表的結(jié)構(gòu)
hive> desc student;
(8)向表中插入數(shù)據(jù)
hive> insert into studentvalues(1000,"ss");
(9)查詢表中數(shù)據(jù)
hive> select * from student;
(10)退出hive
hive> quit;