hive简介

hive是建立在Hadoop上的数据仓库基础架构,这是一种可以存储,查询和分析存储在hadoop中的大规模数据机制。hive定义简单的类SQL查询语言,成为HQL.

hive的核心

hive简介.pptx
hive的核心是Driver驱动引擎,驱动引擎由四部分组成:
(1)解释器:解释器的作用是将HiveSQL语句转换为语法树(AST)。
(2)编译器:编译器是将语法树编译为逻辑执行计划。
(3)优化器:优化器是对逻辑执行计划进行优化。
(4)执行器:执行器是调用底层的运行框架执行逻辑执行计划。
hive的数据是存储在HDFS上的。hive中的库和表可以看做是对HDFS上数据做的一个映射,所以HIve必须是运行在一个Hadoop集群上的。

hive的表类型

临时表

1.客户端连接到服务器的session中有效
2.不能和其他session共享,它是保存在session的用户的目录下
3.当session关闭,临时表自动删除

内部表(managed)

1.内部表一般是由原始数据通过计算或者转换而来的表,而不是通过加载原始数据文件而来的表
2.在删除内部表的时候,表的元数据和运势数据文件会被一起删除

外部表(external)

1.external一般和location配对使用 和rowformat一起使用
2.外部表一般是通过加载原始文件而来,数据模型中的ODS层一般都是外部表
3.在删除表的时候,仅删除hive的表元数据,原始数据文件是不会被删除的

hive和普通关系数据库的异同

hive的简介和安装 - 图1

hive-2.0.0的安装

在安装hive之前需要安装mysql作为hivede Metastore

3.mysql-centos.docx
首先检查mysql是否已安装
rpm -qa |grep -i mysql
结果:
mysql-libs-5.1.71-1.el6.x86_64 表示数据库已存在,需删除原来的数据库
删除已安装的mysql
1.rpm -e mysql-libs-5.1.71-1.el6.x86_64 (mysql版本) (yum -y remove mysql-libs*)
2.rpm -e —nodeps mysql-libs-5.1.71-1.el6.x86_64(mysql版本)第一种不成功时使用
删除完成用上述查询命令,查看时候还存在 rpm -qa |grep -i mysql
添加依赖包安装
yum search libaio
yum install libaio
mysql安装
groupadd mysql
#-s /bin/false表示mysql用户不能当作系统登录用户
useradd -r -g mysql -s /bin/false mysql
cd /usr/local (自定义目录)
解压mysql压缩包
tar -zxvf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
创建软链接
ln -s mysql-5.7.14-linux-glibc2.5-x86_64 mysql
cd mysql
mkdir mysql-files
chmod 750 mysql-files
chown -R mysql .(后面有点)
chgrp -R mysql .(后面有点)
版本在5.7.6之前执行这句
bin/mysql_install_db —user=mysql
版本在5.7.6之后的版本
#注意这一句执行完之后会生成随机密码,要记住随机密码
bin/mysqld —initialize —user=mysql
bin/mysql_ssl_rsa_setup
chown -R root .(后面有点)
chown -R mysql data mysql-files
bin/mysqld_safe —user=mysql & 有下划线
加入服务
cp support-files/mysql.server /etc/init.d/mysql.server
添加环境变量:
vim /etc/profile
#MYSQL
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
保存并使其生效
. /etc/profile

安装hive

在/usr下创建对应的文件夹,拷贝文件到该目录下
解压hive文件压缩包 tar –zxvf apache-hive-2.0.0-bin.tar.gz
添加环境变量 vim /etc/profile
在文件中添加
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.0.0-bin
export PATH=$PATH:$HIVE_HOME/bin
保存文件并使文件生效 source /etc/profile
登录mysql
mysql -uroot –p
输入随机密码
修改初始密码
SET PASSWORD = PASSWORD(‘sa’);
将mysql加入开机启动服务
chkconfig —add mysql.server
chkconfig mysql.server on
进入mysql开启远程访问
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘sa’ WITH GRANT OPTION;
flush privileges;

配置hive

在hdfs中新建目录/user/hive/warehouse
hdfs dfs –mkdir /tmp
hdfs dfs –mkdir /user
hdfs dfs –mkdir /user/hive
hdfs dfs –mkdir /user/hive/warehouse

hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
将mysql的驱动jar包mysql-connector-java-5.1.7-bin.jar拷入hive的lib目录下面
进入hive的conf目录下面复制一下hive-default.xml.template名子命名为:hive-site.xml
在conf目录下执行: cp hive-default.xml.template hive-site.xml



javax.jdo.option.ConnectionURL
jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true
JDBC connect string for a JDBC metastore


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore


javax.jdo.option.ConnectionUserName
root
Username to use against metastore database


javax.jdo.option.ConnectionPassword
123456
password to use against metastore database



hive.exec.local.scratchdir
/usr/hive/apache-hive-2.0.0-bin/tmp
Local scratch space for Hive jobs


hive.downloaded.resources.dir
/usr/hive/apache-hive-2.0.0-bin/tmp/resources
Temporary local directory for added resources in the remote file system.


hive.querylog.location
/usr/hive/apache-hive-2.0.0-bin/tmp
Location of Hive run time structured log file


hive.server2.logging.operation.log.location
/usr/hive/apache-hive-2.0.0-bin/tmp/operation_logs
Top level directory where operation logs are stored if logging functionality is enabled

使用schematool 初始化metastore的schema:schematool -initSchema -dbType mysql
运行hive
在bin目录下执行 ./hive