楔子
学习了解hive,做个笔记。想学习的可以一起。本打算不启动虚拟机,在window上启动hive,但是根据网友的论述 没成功。所以直接使用Linux虚拟机来配置。
环境
- centos6.9
- hadoop-2.7.2
- hive 1.2.1
几个地址
hive下载地址
Apache全部软件下载地址 下载速度比较慢
文档查看地址
hive 架构
1 用户接口:Client
CLI(hive shell)、JDBC/ODBC(java访问 hive)、WEBUI(浏览器访问hive)
2 元数据:Metastore
元数据包括:表名、表所属的数据库(默认的是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
3 Hadoop
使用HDFS进行存储,使用MapReduce进行计算。
4 驱动器:Driver
1)解析器(SQL Parser):经SQL字符串转换成抽象语法数AST,这一步一般在第三方工具苦完成。
2) 编译器(Physical Plan)
3) 优化器
4) 执行器
安装配置
安装目录
/opt/module/hive121
,以下没说明就是此目录
- 上传解压到上面目录
- 配置 hive-env.sh
cd conf
[root@hadoop102 conf]# mv hive-env.sh.template hive-env.sh
# 修改 hive-env.sh 配置 以下两项值
HADOOP_HOME=/opt/module/hadoop-2.7.2
export HIVE_CONF_DIR=/opt/module/hive121/conf
- Hadoop集群配置
#启动 hdfs和yarn
#我配置了Hadoop 环境变量,所以可以直接使用下面 命令
[root@hadoop102 hive121]# start-dfs.sh
[root@hadoop102 hive121]# start-yarn.sh
在HDFS上创建目录修改权限
[root@hadoop102 hive121]# hadoop fs -mkdir -p /user/hive/warehouse
[root@hadoop102 hive121]# hadoop fs -mkdir tmp
# 修改权限()
[root@hadoop102 hive121]# hadoop fs -chmod g+w /user/hive/warehouse
[root@hadoop102 hive121]# hadoop fs -chmod g+w /tmp
基本操作
# 启动 hive
[root@hadoop102 hive121]# bin/hive
# 查看数据库
hive (default)> show databases;
# 打开默认数据库
hive (default)> use default;
# 显示default中表
hive (default)> show tables;
# 创建一张表
hive (default)> create table stu(id int,name string);
#查看表结构
hive (default)> desc stu;
# 退出
hive (default)> quit;
Hive元素配置到MySQL
配置之后就可以多窗口启动 hive
安装MySQL客户端
MySQL服务器 是使用我电脑本机的,只是在Linux上安装了 MySQL客户端。而且使使用yum 安装
yum -y install mysql
jar包
MySQL 连接jar包需要lib 目录中
配置MySQL
需要的配置文件是$HIVE_HOME/conf/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://grqpc:3306/hive?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>000000</value>
<description>password to use against metastore database</description>
</property>
<!-- 修改default数据仓库位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<!-- 配置查询时显示头和数据库 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
MySQL 数据库
需要注意的是 ,为了避免出错,建议手动创建数据库,需要注意数据库编码,其他编码可能后续有问题
create database hive default character set latin1;
或者手动修改数据库编码
alter database hive character set latin1;