數據倉庫組件:Hive環境搭建和基礎用法

本文源碼:GitHub || GitEEjava

1、Hive基礎簡介

一、基礎描述mysql

Hive是基於Hadoop的一個數據倉庫工具,用來進行數據提取、轉化、加載,是一個能夠對Hadoop中的大規模存儲的數據進行查詢和分析存儲的組件,Hive數據倉庫工具能將結構化的數據文件映射爲一張數據庫表,並提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行,使用成本低,能夠經過相似SQL語句實現快速MapReduce統計,使MapReduce變得更加簡單,而沒必要開發專門的MapReduce應用程序。hive十分適合對數據倉庫進行統計分析。git

二、組成與架構github

用戶接口:ClientCLI、JDBC訪問Hive、WEBUI瀏覽器訪問Hive。算法

元數據:Hive將元數據存儲在數據庫中,如mysql、derby。Hive中的元數據包括表的名字,表的列和分區以及屬性,表的屬性(是否爲外部表等),表的數據所在目錄等。spring

驅動器:基於解釋器、編輯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。sql

執行器引擎:ExecutionEngine把邏輯執行計劃轉換成能夠運行的物理計劃。數據庫

Hadoop底層:基於HDFS進行存儲,使用MapReduce進行計算,基於Yarn的調度機制。apache

Hive收到給客戶端發送的交互請求,接收到操做指令(SQL),並將指令翻譯成MapReduce,提交到Hadoop中執行,最後將執行結果輸出到客戶端。編程

2、Hive環境安裝

一、準備安裝包

hive-1.2,依賴Hadoop集羣環境,位置放在hop01服務上。

二、解壓重命名

tar -zxvf apache-hive-1.2.1-bin.tar.gz
mv apache-hive-1.2.1-bin/ hive1.2

三、修改配置文件

建立配置文件

[root@hop01 conf]# pwd
/opt/hive1.2/conf
[root@hop01 conf]# mv hive-env.sh.template hive-env.sh

添加內容

[root@hop01 conf]# vim hive-env.sh
export HADOOP_HOME=/opt/hadoop2.7
export HIVE_CONF_DIR=/opt/hive1.2/conf

配置內容一個是Hadoop路徑,和hive配置文件路徑。

四、Hadoop配置

首先啓動hdfs和yarn;而後在HDFS上建立/tmp和/user/hive/warehouse兩個目錄並修改賦予權限。

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

五、啓動Hive

[root@hop01 hive1.2]# bin/hive

六、基礎操做

查看數據庫

hive> show databases ;

選擇數據庫

hive> use default;

查看數據表

hive> show tables;

建立數據庫使用

hive> create database mytestdb;
hive> show databases ;
default
mytestdb
hive> use mytestdb;

建立表

create table hv_user (id int, name string, age int);

查看錶結構

hive> desc hv_user;
id                  	int                 	                    
name                	string              	                    
age                 	int

添加表數據

insert into hv_user values (1, "test-user", 23);

查詢表數據

hive> select * from hv_user ;

注意:這裏經過對查詢日誌的觀察,明顯看出Hive執行的流程。

刪除表

hive> drop table hv_user ;

退出Hive

hive> quit;

查看Hadoop目錄

# hadoop fs -ls /user/hive/warehouse       
/user/hive/warehouse/mytestdb.db

經過Hive建立的數據庫和數據存儲在HDFS上。

3、整合MySQL5.7環境

這裏默認安裝好MySQL5.7的版本,並配置好相關登陸帳號,配置root用戶的Host爲%模式。

一、上傳MySQL驅動包

將MySQL驅動依賴包上傳到hive安裝目錄的lib目錄下。

[root@hop01 lib]# pwd
/opt/hive1.2/lib
[root@hop01 lib]# ll
mysql-connector-java-5.1.27-bin.jar

二、建立hive-site配置

[root@hop01 conf]# pwd
/opt/hive1.2/conf
[root@hop01 conf]# touch hive-site.xml
[root@hop01 conf]# vim hive-site.xml

三、配置MySQL存儲

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://hop01:3306/metastore?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
          <description>Driver class name for a JDBC metastore</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
          <description>username to use against metastore database</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
          <description>password to use against metastore database</description>
        </property>
</configuration>

配置完成後,依次重啓MySQL、hadoop、hive環境,查看MySQL數據庫信息,多了metastore數據庫和相關表。

四、後臺啓動hiveserver2

[root@hop01 hive1.2]# bin/hiveserver2 &

五、Jdbc鏈接測試

[root@hop01 hive1.2]# bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hop01:10000
Connecting to jdbc:hive2://hop01:10000
Enter username for jdbc:hive2://hop01:10000: hiveroot (帳戶回車)
Enter password for jdbc:hive2://hop01:10000: ******   (密碼123456回車)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
0: jdbc:hive2://hop01:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+

4、高級查詢語法

一、基礎函數

select count(*) count_user from hv_user;
select sum(age) sum_age from hv_user;
select min(age) min_age,max(age) max_age from hv_user;
+----------+----------+--+
| min_age  | max_age  |
+----------+----------+--+
| 23       | 25       |
+----------+----------+--+

二、條件查詢語句

select * from hv_user where name='test-user' limit 1;
+-------------+---------------+--------------+--+
| hv_user.id  | hv_user.name  | hv_user.age  |
+-------------+---------------+--------------+--+
| 1           | test-user     | 23           |
+-------------+---------------+--------------+--+

select * from hv_user where id>1 AND name like 'dev%';
+-------------+---------------+--------------+--+
| hv_user.id  | hv_user.name  | hv_user.age  |
+-------------+---------------+--------------+--+
| 2           | dev-user      | 25           |
+-------------+---------------+--------------+--+

select count(*) count_name,name from hv_user group by name;
+-------------+------------+--+
| count_name  |    name    |
+-------------+------------+--+
| 1           | dev-user   |
| 1           | test-user  |
+-------------+------------+--+

三、鏈接查詢

select t1.*,t2.* from hv_user t1 join hv_dept t2 on t1.id=t2.dp_id;
+--------+------------+---------+-----------+-------------+--+
| t1.id  |  t1.name   | t1.age  | t2.dp_id  | t2.dp_name  |
+--------+------------+---------+-----------+-------------+--+
| 1      | test-user  | 23      | 1         | 技術部      |
+--------+------------+---------+-----------+-------------+--+

5、源代碼地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

推薦閱讀:編程體系整理

序號 項目名稱 GitHub地址 GitEE地址 推薦指數
01 Java描述設計模式,算法,數據結構 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
02 Java基礎、併發、面向對象、Web開發 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆
03 SpringCloud微服務基礎組件案例詳解 GitHub·點這裏 GitEE·點這裏 ☆☆☆
04 SpringCloud微服務架構實戰綜合案例 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
05 SpringBoot框架基礎應用入門到進階 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆
06 SpringBoot框架整合開發經常使用中間件 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
07 數據管理、分佈式、架構設計基礎案例 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
08 大數據系列、存儲、組件、計算等框架 GitHub·點這裏 GitEE·點這裏 ☆☆☆☆☆
相關文章
相關標籤/搜索