HIVE

HIVE

学习目标:

  1. 了解hive是什么
  2. 理解hive架构
  3. hive搭建
  4. 熟练hive sql的使用
  5. 理解hive分区
  6. 外部表和内部表区别
  7. DML
  8. beeline和JDBC
  9. hive的函数

HIVE数据仓库

保存历史数据

数据库:数据交互。

解释器 编译器 优化器

hive运行时,元数据存储在关系型数据库(Mysql

HIVE架构图

hive.apcache.com

依托于hadoop,底层存储 hdfs

解释器

anltr —> 语法树

编译器

将HIVE sQL 转换成车工操作符

操作符是hive的最小处理单元

每个操作符代表HDFS的一个操作或者是一个job

优化器

HIVE 搭建

前置条件

部署hdfs集群

安装Mysql

#查看是否安装了mysql
rpm -qa|grep -i mysql
#卸载mysql
rpm -e mysql*
#安装mysql
Yum -y install mysql-server 

启动mysql:

service mysqld start

连接数据库:

mysql -uroot -p

输入密码:

#修改密码
set password for 'root'@'localhost'=password('123456');

设置无密码登录:

vim /etc/my.cnf
#添加
skip-grant-tables

安装HIVE

  1. 上传安装包
  2. 解压
  3. 配置环境变量
  4. hive-site.xml
tar -xzvf hive-xyztar.gz

将环境变量设置HIVE_HOME为指向安装目录:

  $ cd hive-xyz
  $ export HIVE_HOME = {{pwd}}

最后,添加$HIVE_HOME/bin到您的PATH

  $ export PATH = $ HIVE_HOME / bin:$ PATH

Hive中metastore()的三种方式

参考链接:HIVE的元数据相关配置

  • Local/Embedded Metastore Database (Derby)
  • Remote Metastore Database
  • Local/Embedded Metastore Server
  • Remote Metastore Server

a)内嵌Derby方式

嵌入式Metastore数据库主要用于单元测试。一次只能有一个进程连接到Metastore数据库,因此它不是一个真正的实用解决方案,但适用于单元测试。

只能有一个hive客户端能使用数据库,不推荐


<configuration>  
  
<property>  
  <name>javax.jdo.option.ConnectionURLname>  
  <value>jdbc:derby:;databaseName=metastore_db;create=truevalue>  
property>  
  


<property>  
  <name>javax.jdo.option.ConnectionDriverNamename>  
  <value>org.apache.derby.jdbc.EmbeddedDrivervalue>  
property>  
   

  
<property>  
  <name>hive.metastore.localname>  
  <value>truevalue>  
property>  
  
  
<property>  
  <name>hive.metastore.warehouse.dirname>  
  <value>/user/hive/warehousevalue>  
property>  
   
  
configuration>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FWBzC8PX-1570610031603)(E:\朱琰笔记\pic\1564753514137.png)]

b)远程访问数据库方式

在此配置中,您将远程链接关系型数据库。 以下示例为连接MySQL服务器.

<configuration>  
<property>  
  <name>hive.metastore.warehouse.dirname>  
  <value>/user/hive_remote/warehousevalue>  
property>  
  

<property>  
  <name>hive.metastore.localname>  
  <value>truevalue>  
property>  
  

<property>  
  <name>javax.jdo.option.ConnectionURLname>  
  <value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=truevalue>  
property>  


<property>  
  <name>javax.jdo.option.ConnectionDriverNamename>  
  <value>com.mysql.jdbc.Drivervalue>  
property>  
  

<property>  
  <name>javax.jdo.option.ConnectionUserNamename>  
  <value>hivevalue>  
property>
  

<property>  
  <name>javax.jdo.option.ConnectionPasswordname>  
  <value>passwordvalue>  
property>  
configuration>  

HIVE_第1张图片

HIVE_第2张图片

c)内嵌元数据服务方式

在这种方式中,Metastore服务器组件的使用类似于Hive Client中的库。 每个Hive客户端都将打开与数据库的连接并对其进行SQL查询。

确保可以从执行Hive查询的计算机访问数据库,因为这是本地存储。还要确保JDBC客户端库位于Hive Client的类路径中。

此配置通常与HiveServer2一起使用(仅在HiveServer2中使用嵌入式Metastore,在hiveserver2 start命令的命令行参数中添加“–hiveconf hive.metastore.uris =’’”或使用hiveserver2-site.xml(在Hive 0.14中可用) ))

配置Param 配置值 评论
hive.metastore.uris 不需要因为这是本地商店
hive.metastore.local true 这是本地商店(在Hive 0.10中删除,请参阅配置说明部分)
hive.metastore.warehouse.dir 指向HDFS中非外部Hive表的默认位置。

d)远程Metastore服务方式

在远程Metastore设置中,所有Hive客户端都将与Metastore服务器建立连接,然后Metastore服务器会查询数据存储区(本例中为MySQL)以获取元数据。Metastore服务器和客户端使用Thrift 协议进行通信 。从Hive 0.5.0开始,您可以通过执行以下命令来启动Thrift服务器:

hive --service metastore

1

<configuration>  
<property>  
<name>hive.metastore.warehouse.dirname>  
<value>/user/hive/warehousevalue>  
property>  

<property>  
<name>javax.jdo.option.ConnectionURLname>  
<value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=truevalue>  
property>  

<property>  
<name>javax.jdo.option.ConnectionDriverNamename>  
<value>com.mysql.jdbc.Drivervalue>  
property>  

<property>  
<name>javax.jdo.option.ConnectionUserNamename>  
<value>hivevalue>  
property>  

<property>  
<name>javax.jdo.option.ConnectionPasswordname>  
<value>passwordvalue>  
property>  


<property>  
<name>hive.metastore.localname>  
<value>falsevalue>  
property>  




<property>  
<name>hive.metastore.urisname>  
<value>thrift://192.168.1.188:9083value>  
property>  
configuration>  

注:这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,

2

将hive-site.xml配置文件拆为如下两部分

1)、服务端配置文件

<configuration>  
<property>  
  <name>hive.metastore.warehouse.dirname>  
  <value>/user/hive/warehousevalue>  
property>  

<property>  
  <name>javax.jdo.option.ConnectionURLname>  
  <value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=truevalue>  
property>  

<property>  
  <name>javax.jdo.option.ConnectionDriverNamename>  
  <value>com.mysql.jdbc.Drivervalue>  
property>     

<property>  
  <name>javax.jdo.option.ConnectionUserNamename>  
  <value>rootvalue>  
property>  
  
<property>  
  <name>javax.jdo.option.ConnectionPasswordname>  
  <value>123456value>  
property>  
configuration>  

<configuration>  

  

<property>  
  <name>hive.metastore.warehouse.dirname>  
  <value>/user/hive/warehousevalue>  
property>  
  

<property>  
  <name>hive.metastore.localname>  
  <value>falsevalue>  
property>  

  

<property>  
  <name>hive.metastore.urisname>  
  <value>thrift://192.168.57.5:9083value>  
property>  

configuration>  

启动hive服务端程序

hive --service metastore

客户端直接使用hive命令即可

root@my188:~$ hive

Hive history file=/tmp/root/hive_job_log_root_201301301416_955801255.txt

hive> show tables;

OK

test_hive

fhive>

ve.metastore.uris
thrift://192.168.57.5:9083

```

启动hive服务端程序

hive --service metastore

客户端直接使用hive命令即可

root@my188:~$ hive

Hive history file=/tmp/root/hive_job_log_root_201301301416_955801255.txt

hive> show tables;

OK

test_hive

fhive>

你可能感兴趣的:(HIVE)