保存历史数据
数据库:数据交互。
解释器 编译器 优化器
hive运行时,元数据存储在关系型数据库(Mysql)
hive.apcache.com
依托于hadoop,底层存储 hdfs
anltr —> 语法树
将HIVE sQL 转换成车工操作符
操作符是hive的最小处理单元
每个操作符代表HDFS的一个操作或者是一个job
部署hdfs集群
#查看是否安装了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
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的元数据相关配置
嵌入式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)]
在此配置中,您将远程链接关系型数据库。 以下示例为连接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>
在这种方式中,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表的默认位置。 |
在远程Metastore设置中,所有Hive客户端都将与Metastore服务器建立连接,然后Metastore服务器会查询数据存储区(本例中为MySQL)以获取元数据。Metastore服务器和客户端使用Thrift 协议进行通信 。从Hive 0.5.0开始,您可以通过执行以下命令来启动Thrift服务器:
hive --service metastore
<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的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,
将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>