Hive——安裝以及概述


一、hive的安裝

注意:安裝hive的前提要安裝好MySQL和Hadoop

Hadoop安裝:https://www.cnblogs.com/lmandcc/p/15306163.html

MySQL的安裝:https://www.cnblogs.com/lmandcc/p/15224657.html

 

安裝hive首先需要啟動Hadoop

 

1、解壓hive的安裝包
tar -zxvf apache-hive-1.2.1-bin.tar.gz

修改下目錄名稱
mv apache-hive-1.2.1-bin hive-1.2.1

2、備份配置文件

cd /usr/local/soft/hive-1.2.1/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml

3、修改配置文件
vim hive.env.sh
新加三行配置(路徑不同就更具實際情況來):
    HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
    JAVA_HOME=/usr/local/soft/jdk1.8.0_171
    HIVE_HOME=/usr/local/soft/hive-1.2.1

4、修改配置文件
vim hive-site.xml
修改對應的配置參數(注意:是修改不是添加)

 1 <property>
 2                     <name>javax.jdo.option.ConnectionURL</name>
 3                     <value>jdbc:mysql://master:3306/hive?characterEncoding=UTF-8&amp;createDatabaseIfNotExist=true&amp;useSSL=false</value>
 4                 </property>
 5                 <property>
 6                     <name>javax.jdo.option.ConnectionDriverName</name>
 7                     <value>com.mysql.jdbc.Driver</value>
 8                 </property>
 9                 <property>
10                     <name>javax.jdo.option.ConnectionUserName</name>
11                     <value>root</value>
12                 </property>
13                 <property>
14                     <name>javax.jdo.option.ConnectionPassword</name>
15                     <value>123456</value>
16                 </property>
17                 <property>
18                     <name>hive.querylog.location</name>
19                     <value>/usr/local/soft/hive-1.2.1/tmp</value>
20                 </property>
21                 <property>
22                     <name>hive.exec.local.scratchdir</name>
23                     <value>/usr/local/soft/hive-1.2.1/tmp</value>
24                 </property>
25                 <property>
26                     <name>hive.downloaded.resources.dir</name>
27                     <value>/usr/local/soft/hive-1.2.1/tmp</value>
28                 </property>


5、復制mysql連接工具包到hive/lib
cd /usr/local/soft/hive-1.2.1
cp /usr/local/moudle/mysql-connector-java-5.1.49.jar /usr/local/soft/hive-1.2.1/lib/

6、刪除hadoop中自帶的jline-2.12.jar位置在/usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/jline-2.12.jar
rm -rf /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/jline-2.12.jar
7、把hive自帶的jline-2.12.jar復制到hadoop中 hive中所在位置 /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar
cp /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/
8、啟動
hive

 

二、hive的概述

 1、hive簡介

Hive:由Facebook開源用於解決海量結構化日志的數據統計工具。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張表,並提供類SQL查詢功能。

 

Hive 是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL ,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。

數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它出於分析性報告和決策支持目的而創建。為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。

 

 

2、Hive本質:將HQL轉化成MapReduce程序

 

 

 

1Hive處理的數據存儲在HDFS

2Hive分析數據底層的實現是MapReduce

3執行程序運行在Yarn

 3、hive的優點

1操作接口采用類SQL語法,提供快速開發的能力(簡單、容易上手)

2避免了去寫MapReduce,減少開發人員的學習成本

3Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合

4Hive優勢在於處理大數據,對於處理小數據沒有優勢,因為Hive的執行延遲比較高

5Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數

4、hive的缺點

 

1HiveHQL表達能力有限

 

1)迭代式算法無法表達

 

2)數據挖掘方面不擅長由於MapReduce數據處理流程的限制,效率更高的算法卻無法實現。

 

2Hive的效率比較低

 

1Hive自動生成的MapReduce作業,通常情況下不夠智能化

 

2Hive調優比較困難,粒度較粗

 

 

5、Hive架構原理

 

 

 

 

 

 1用戶接口:Client

 

CLIcommand-line interface)、JDBC/ODBC(jdbc訪問hive)WEBUI(瀏覽器訪問hive

 

2元數據:Metastore

 

元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;

 

默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore

 

3Hadoop

 

使用HDFS進行存儲,使用MapReduce進行計算。

 

4驅動器:Driver

 

1)解析器(SQL Parser):將SQL字符串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。

 

2)編譯器(Physical Plan):將AST編譯生成邏輯執行計划。

 

3)優化器(Query Optimizer):對邏輯執行計划進行優化。

 

4)執行器(Execution):把邏輯執行計划轉換成可以運行的物理計划。對於Hive來說,就是MR/Spark

 

 

 

 

 

Hive通過給用戶提供的一系列交互接口,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapReduce,提交到Hadoop中執行,最后,將執行返回的結果輸出到用戶交互接口。

 

6、Hive與傳統數據庫比較

 

1. 查詢語言。類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。

2. 數據存儲位置。所有 Hive 的數據都是存儲在 HDFS 中的。而數據庫則可以將數據保存在塊設備或者本地文件系統中。

3. 數據格式。Hive 中沒有定義專門的數據格式。而在數據庫中,所有數據都會按照一定的組織存儲,因此,數據庫加載數據的過程會比較耗時。

4. 數據更新。Hive 對數據的改寫和添加比較弱化,0.14版本之后支持,需要啟動配置項。而數據庫中的數據通常是需要經常進行修改的。

5. 索引。Hive 在加載數據的過程中不會對數據進行任何處理。因此訪問延遲較高。數據庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

6. 執行計算。Hive 中執行是通過 MapReduce 來實現的而數據庫通常有自己的執行引擎。

7. 數據規模。由於 Hive 建立在集群上並可以利用 MapReduce 進行並行計算,因此可以支持很大規模的數據;對應的,數據庫可以支持的數據規模較小。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM