CentOS6安裝各類大數據軟件 第八章:Hive安裝和配置

相關文章連接

CentOS6安裝各類大數據軟件 第一章:各個軟件版本介紹html

CentOS6安裝各類大數據軟件 第二章:Linux各個軟件啓動命令java

CentOS6安裝各類大數據軟件 第三章:Linux基礎軟件的安裝node

CentOS6安裝各類大數據軟件 第四章:Hadoop分佈式集羣配置mysql

CentOS6安裝各類大數據軟件 第五章:Kafka集羣的配置sql

CentOS6安裝各類大數據軟件 第六章:HBase分佈式集羣的配置shell

CentOS6安裝各類大數據軟件 第七章:Flume安裝與配置數據庫

CentOS6安裝各類大數據軟件 第八章:Hive安裝和配置apache

CentOS6安裝各類大數據軟件 第九章:Hue大數據可視化工具安裝和配置vim

CentOS6安裝各類大數據軟件 第十章:Spark集羣安裝和部署瀏覽器

1. Hive概述

1.1. 什麼是Hive

hive是有Facebook開源用於解決海量結構化日誌的數據統計,Hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射成一張表,並提供類SQL查詢功能.Hive是構建在Hadoop之上的數據倉庫,使用HQL做爲查詢接口,使用HDFS進行存儲,使用MapReduce進行計算.其本質是將HQL轉化成MapReduce程序,靈活性和擴展性比較好,支持UDF,自定義存儲格式等,適合作離線數據處理。

1.2. Hive在Hadoop生態系統中的位置

1.3. Hive架構設計

Ø  Client:用戶接口

n  CLI(hive shell)

n  JDBC/ODBC(Java訪問hive)

n  WEBUI(瀏覽器訪問hive)

Ø  Meta store:元數據

n  元數據主要包括,表名,表所屬的數據庫(默認是default),表的擁有者,/分區字段,表的類型(是不是外部表),表的數據所在目錄等,默認存儲在自帶的derby數據庫中,推薦使用採用MySQL存儲Metastore;

Ø  Hadoop

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

Ø  Driver:驅動器(包含:解析器,編譯器,優化器,執行器)

n  解析器:SQL字符串轉換成抽象語法樹AST,這一步,通常都是使用第三方工具庫完成,好比antlr,AST進行語法分析,好比表是否存在,字段是否存在,SQL語義是否有誤(好比select語句中被斷定爲聚合的字段在group by中是否有出現)

n  編譯器:AST編譯生成邏輯執行計劃

n  優化器:對邏輯執行計劃進行優化

n  執行器:把邏輯執行計劃轉換成能夠運行的物理計劃,對於hive來講,就是MR

1.4. Hive的優勢以及應用場景

Ø  操做接口採用類SQL語法,提供快速開發的能力(簡單,容易上手)

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

Ø  統一的元數據管理,能夠與impala/spark等共享數據

Ø  易擴展(HDFS+MapReduce:能夠擴展集羣規模,支持自定義函數)

Ø  數據的離線處理:好比:日誌分析,海量結構化數據離線分析

Ø  Hive的執行延遲比較高,所以hive經常使用於數據分析的,對實時性要求不高的場合

Ø  Hive的優點在於處理大數據,對於處理小數據沒有優點,所以Hive的執行延遲比較高

2. Hive下載和安裝

2.1. Hive的下載

Apache官網:https://archive.apache.org/dist/
Cloudera版本:http://archive-primary.cloudera.com/cdh5/cdh/5/
這裏選擇下載Apache穩定版本apache-hive-0.13.1-bin.tar.gz,並上傳至spark-node04.ouyang.com節點的/opt/softwares/目錄下

2.2. Hive的安裝

解壓即安裝:tar -zxvf apache-hive-0.13.1-bin.tar.gz -C /opt/modules/

3. Hive配置

3.1. 在hive-log4j.properties中配置日誌存儲目錄

步驟一:重命名該文件
步驟二:建立存儲hive日誌的目錄
步驟三:配置hive的日誌信息的的日誌目錄(大概20行左右)
hive.log.dir=/export/logs/hive

3.2. 在hive-env.sh中配置Hadoop的安裝目錄和Hive的配置文件所在位置

# 步驟一:重命名該文件
# 步驟二:修改配置文件
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/opt/modules/hadoop-2.7.4
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/modules/hive-0.13.1/conf

3.3. 將Hive加入環境變量

export HIVE_HOME=/export/servers/hive
export PATH=${HIVE_HOME}/bin:$PATH

4. Hive啓動驗證

# 步驟一:啓動HDFS服務
bin/hadoop-daemon.sh start namenode
bin/hadoop-daemon.sh start datanode
# 步驟二:建立hive相關目錄
bin/hdfs  dfs -mkdir -p /user/root/warehouse
# 步驟三:給用戶組增長一個寫的權限
bin/hdfs dfs -chmod g+w /user/root/warehouse
# 步驟四:啓動hive服務
./bin/hive
# 步驟五:進行hive的基本操做(跟MySQL操做基本相似)
show databases;

5. Hive和MySQL集成

5.1 配置MySQL做爲元數據庫

Hive默認是將元數據存儲在本地,可是這樣的話,就會致使元數據不一樣步.不利於咱們之後的操做,因此,咱們通常狀況下都是使用MySQL做爲元數據庫,用來存放元數據。

首先須要在hive安裝目錄下的conf目錄下建立一個文件hive-site.xml,也能夠將hive-default.xml.template這個文件修改成hive-site.xml.在這個文件中主要配置鏈接數據庫的一些信息。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!--數據庫的鏈接-->
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://node01.ouyang.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>root</value>
    </property>
</configuration>

5.2. 設置MySQL的遠程鏈接

#登錄mysql數據庫服務器
mysql -uroot -p
#切換到mysql數據庫
use mysql
#查看user表中的host,user,password三個字段
select user,host,password from user;
#更新用戶信息
update user set host = '%' where user = 'root' and host = 'localhost';
#刪除其餘用戶
delete from user where password = '';
#刷新權限修改
flush privileges;

5.3. 將MySQL驅動添加到hive的lib目錄

6. Hive服務啓動與測試

6.1. 啓動HDFS服務

sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode

6.2. 啓動hive服務

bin/hive

6.3. hive服務建立表

create table student(id Int,name String) row format delimited fields terminated by ' ';

6.4. 準備數據文件

vim /opt/datas/student.txt
1 zhangsan
2 lisi
3 wangwu
4 tingting
5 nana
6 haha

6.5. 加載數據到hive表

# 在hive的窗口下執行以下命令:
load data local inpath '/opt/datas/student.txt' into table student

7. 使用sql developer鏈接Hive

7.1. 解壓hive驅動

將「hive_jdbc_2.6.2.1002.zip」進行解壓,以後進入解壓的目錄,再解壓「ClouderaHiveJDBC4-2.6.2.1002.zip」,裏面有一個文件「HiveJDBC4.jar」這個文件就是後續在配置時候須要使用到的。

7.2. 安裝sql developer

解壓「sqldeveloper-17.2.0.188.1159-no-jre.zip」;以後進入解壓處理的目錄雙擊「sqldeveloper.exe」文件;在彈出的視圖中指定jdk1.8的路徑便可。

7.3. 配置sql developer

配置首選項,將hive_jdbc的jar包配置進去:

7.4. 使用sql developer鏈接hive

8. Hive與HBase進行集成

8.1. 在hive-site.xml中配置zookeeper

<!--hive經過zookeeper去鏈接hbase-->
<!-- 整合zookeeper -->
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>spark-node04.ouyang.com,spark-node05.ouyang.com,spark-node06.ouyang.com</value>
</property>
<!—在命令行啓動hive時,會顯示當前數據庫和列名等選項 -->
<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
</property>

8.2. 整合包引入

將HBase中9個jar包拷貝到hive/lib目錄下,由於hive須要用到HBase,因此要導入,若是是CDH版,已經集成好不須要導包。

# 步驟一:在/etc/profile中配置好HBase和Hive的環境變量
export HIVE_HOME=/export/servers/hive
export HBASE_HOME=/export/servers/hbase

# 步驟二:建立軟連接(請注意包的版本)
ln -s $HBASE_HOME/lib/hbase-server-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-server-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/hbase-client-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-client-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/hbase-it-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-it-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/htrace-core-2.04.jar $HIVE_HOME/lib/htrace-core-2.04.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.0.jar
ln -s $HBASE_HOME/lib/high-scale-lib-1.1.1.jar $HIVE_HOME/lib/high-scale-lib-1.1.1.jar
ln -s $HBASE_HOME/lib/hbase-common-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-common-0.98.6-cdh5.3.0.jar

8.3. 建立與HBase集成的HIve的外部表(Hive和HBase集成,就是使用Hive操做HBase中的表,相對於Hive來講是外部,因此是外部表)

--建立hbase的外部表
--HBase中的表能夠在Hive中進行操做,建立的表的列與HBase中表的列的對應關係以下設置,能夠在Hive中進行表的操做,會更新到HBase中
CREATE EXTERNAL TABLE access(id string,datatime string,userid string,searchname string,retorder string,cliorder string,cliurl string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:datatime,info:userid,info:searchname,info:retorder,info:cliorder,info:cliurl") TBLPROPERTIES ("hbase.table.name" = "access");

8.4. 使用Hive查看HBase中access表

在Hive中和在HBase中查看的條數會有一點差別,但獲取的日誌條數爲海量數據,該差別能夠忽略不計。

9. hive的beeline和hiveserver2的使用

9.1. 啓動hiveserver2

#啓動hive的server2服務

bin/hiveserver2

9.2. 啓動beeline

#啓動beeline服務

bin/beeline

9.3. 使用beeline鏈接hiveserver2服務

#鏈接hiveserver2服務

!connect jdbc:hive2://spark-node04.ouyang.com:10000

9.4. hive相關操做(類sql語句)

 

#查看全部的表
show tables;
#查看前10名
select * from access limit 10;
#查看總的記錄樹
select count(*) from access;

9.5. 建立後臺一鍵啓動hiveserver2腳本

vim starthiveserver2.sh
ssh node01.ouyang.com "source /etc/profile;nohup sh ${HIVE_HOME}/bin/hiveserver2 >/dev/null 2>&1 &"
# 執行該腳本就會後臺啓動hive服務,可使用beeline和sql seveloper鏈接hive
相關文章
相關標籤/搜索