hive的安装与基本使用
数据仓库的基本概念
什么是数据仓库,主要用来干什么
是用来存储东西的 不生产也不消耗,外界放入,主要功能是存储
数据仓库:简称DW data warehouse
目的:构建面向分析的集成化数据环境,主要职责是做分析,对仓库里面的数据来做分析
数据分析可以支持我们做决策
数据分析的特性:
面向主题:数据分析有一定的范围,需要选取一定的主题进行分析
集成性:集成各个其他方面关联的一些数据,比如分析订单购买人的情况,牵连到用户信息
非易失性:数据分析主要是分析过去已经发生的数据,分析的东西都是即成现实,不会再改变
时变性:随着时间的发展,数据的形态也在发生改变,数据分析的手段也要相应的进行改变
数据仓库与数据库的区别:
数据库:OLTP 联机事务处理 数据库主要的功能就是用来做事务处理的,主要负责频繁的增删改查
数据仓库:分析处理 olap 联机的分析处理,不需要做事务的保证 主要做数据的分析
数据仓库的产生是因为有大量的数据库的存在,需要对数据进一步的决策分析,然后才产生数据仓库的概念
excel keettle sass passs 都是数据分析的一些软件
数据仓库的分层:
数据仓库一般分为三层:
第一层:元数据层 ods 产生数据的地方
第二层: 数据仓库层 dw层 主要集中存储数据 面向主题进行分析
第三层:数据应用层 又叫app层 主要用于展示我们分析之后的数据结果
数据在这三层之间的一个流动,称之为etl的过程
ETL:extrat 抽取 转化 装载的过程
为什么要对数据仓库的分层:每一层职责分析:
数据仓库的元数据管理:定义我们的数据架构,数据的位置,数据的信息
这里的元数据,记录的是我们数据仓库当中的数据如何进行处理的一整套的过程
Hive基本概念
hive:是一个数据仓库的处理工具,专门用于数据仓库的数据分析
hive是基于hadoop的一个数据仓库的工具,将结构化的数据,映射成一张表,并且提供类似sql的查询功能
本质是将sql语句转换成mareduce的任务进行执行
结构化数据:体现为数据字段固定 数据类型固定 数据库的表就是一种典型的结构化数据
半结构化数据:数据类型一定 但是数据的字段个数不定
非结构化数据:完全没有任何规律 字段类型不定 ,字段的个数不定,数据的类型不定 音频视频
hive当中的元数据信息:
主要描述了hive表与hdfs的数据之间的映射关系
包括了字段的映射 (hive 当中的哪个字段与数据当中的哪一列进行对应),数据位置的保存,建表的语句定义
数据的存储:用的是hdfs
数据的计算:用的是mr
hive的架构
用户接口:提供我们写sql的地方
解析器:解析我们的sql语句,转换成mr的任务提交,准备执行
元数据:记录我们hive的表与我们数据之间的映射关系
执行器:mr执行
hive与hadoop的关系:hive就是一个rm的客户端
现在的版本的hive支持插入,不支持修改,删除操作 最主要的功能是查询
hive的数据是存储在hdfs上面 而且hive支持各种存储格式
HIVE的安装部署
1、解压hive
cd /export/softwares
tar -zxvf hive-1.1.0-cdh5.14.0.tar.gz -C ../servers/
2.使用mysql共享hive元数据
mysql数据库的安装(使用yum源进行安装,强烈推荐)
第一步:在线安装mysql相关的软件包
yum install mysql mysql-server mysql-devel
第二步:启动mysql的服务
/etc/init.d/mysqld start centos7:systemctl start mysqld
第三步:通过mysql安装自带脚本进行设置
/usr/bin/mysql_secure_installation
第四步:进入mysql的客户端然后进行授权
进入mysql的客户端
mysql -uroot -p
grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
flush privileges;
修改hive的配置文件
修改hive-env.sh
添加我们的hadoop的环境变量
cd /export/servers/hive-1.1.0-cdh5.14.0/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/export/servers/hive-1.1.0-cdh5.14.0/conf
修改hive-site.xml
cd /export/servers/hive-1.1.0-cdh5.14.0/conf
vim hive-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node03.hadoop.com:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node03.hadoop.com</value>
</property>
<!--
<property>
<name>hive.metastore.uris</name>
<value>thrift://node03.hadoop.com:9083</value>
</property>
-->
</configuration>
上传mysql的lib驱动包
将mysql的lib驱动包上传到hive的lib目录下
cd /export/servers/hive-1.1.0-cdh5.14.0/lib
将mysql-connector-java-5.1.38.jar 上传到这个目录下
hive的三种交互方式
第一种交互方式:Hive交互shell
cd /export/servers/hive-1.1.0-cdh5.14.0
bin/hive
查看所有的数据库
hive (default)> show databases;
创建一个数据库
hive (default)> create database myhive;
使用该数据库并创建数据库表
hive (default)> use myhive;
hive (myhive)> create table test(id int,name string);
以上命令操作完成之后,一定要确认mysql里面出来一个数据库hive
第二种交互方式:Hive JDBC服务
前台启动
cd /export/servers/hive-1.1.0-cdh5.14.0
bin/hive --service hiveserver2
后台启动
cd /export/servers/hive-1.1.0-cdh5.14.0
nohup bin/hive --service hiveserver2 &
beeline连接hiveserver2
bin/beeline
beeline> !connect jdbc:hive2://node03.hadoop.com:10000
注意:如果使用beeline方式连接hiveserver2,一定要保证hive在mysql当中的元数据库已经创建成功,不然就会拒绝连接
第三种交互方式:Hive命令
使用 –e 参数来直接执行hql的语句
bin/hive -e “use myhive;select * from test;”
使用 –f 参数通过指定文本文件来执行hql的语句
vim hive.sql
use myhive;select * from test;
bin/hive -f hive.sql