#1.什么是Hive?
hive是Hadoop的一个数据仓库工具,是将结构化数据文件映射成为一个数据表,并提供类SQL的查询工具。
Hive可以对数据进行储存于计算
数据存储依赖于HDFS
数据计算依赖于Map Reduce
#Hive的目的(意义):
在hadoop是个好软件,但是不好使用(学习成本太高,坡度陡,难度大)的前提下降低了程序员使用hadoop的学习成本,降低了难度。
#Hive特点:
可扩展性:与集群的扩展性相同
延展性:Hive提供自定义函数接口,支持HQL语句直接调用java方法容错性:节点出现问题SQL仍可完成执行。
#HIve架构
元数据:
描述数据的数据就是元数据
表的名字,表的列,列的类型都是元数据
#Hive内部执行过程:
解释器–>编译器–>(会使用到元数据)–>优化器–>执行器
Hive基本介绍
Hive中没有定义专门的数据格式,用户提供的数据是什么格式,hive直接将数据拷贝到集群。不会对数据格式进行改变。
用户定义数据格式需要指定三个属性:
列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)
读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)不会对数据本身进行任何修改,甚至不会对数据进行扫描。
Hive 中不支持对数据的改写和添加(在 一个文本中添加新数据) Hive 在加载数据的过程中不会对数据中的某些 Key 建立索引。总结:hive具有sql数据库的外表,但应用场景完全不同,hive**只适合用来做批量数据统计分析
Hive内的基本概念
DB、数据库
Table, 表(内部表)
External Table, 外部表
Partition,分区
Bucket。分桶
Hive支持的数据格式
可支持Text, SequenceFile ,ParquetFile,ORC格式RCFILE等
我们在此处选择第三台机器作为我们hive的安装机器
安装
derby版hive直接使用:
1、解压hive
cd /export/softwares
tar -zxvf hive-1.1.0-cdh5.14.0.tar.gz -C …/servers/
1、 直接启动 bin/hive
cd …/servers/
cd hive-1.1.0-cdh5.14.0/
bin/hive
hive> create database mytest;
缺点:多个地方安装hive后,每一个hive是拥有一套自己的元数据,大家的库、表就不统一;
2、使用mysql共享hive元数据
mysql数据库的安装(使用rpm包的方式进行安装,不推荐)
第一步:查看系统自带的mysql的rpm包
rpm -qa | grep mysql
rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
第二步:安装mysql的rpm包
rpm -ivh *.rpm
第三步:启动mysql的服务
service mysqld start
第四步:查看mysql初始化密码
more /root/.mysql_secret
第五步:使用随记密码登录mysql并更新密码
mysql -uroot –p
SET PASSWORD = PASSWORD(‘123456’);
第六步:开启mysql远程连接
grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
flush privileges;
第七步:设置mysql的开机启动
chkconfig --add mysqld
chkconfig mysqld on
mysql数据库的安装(使用yum源进行安装,强烈推荐)
第一步:在线安装mysql相关的软件包
yum install mysql mysql-server mysql-devel
第二步:启动mysql的服务
/etc/init.d/mysqld start
chkconfig mysqld on
第三步:进入mysql的客户端然后进行授权
use mysql;
配置远程连接
grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
flush privileges;
第四步 设置root用户链接mysql的密码
update user set password=password(‘123456’) where user=‘root’;
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
<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>
上传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的安装部署
1、 derby版hive
默认使用derby(数据库)维护元数据此版本,每个节点自己独立维护一个derby数据库,所以在节点1添加了数据库,在节点2 无法查看
2、 使用mysql共享hive元数据安装mysql
yum install -y mysql mysql-server mysql-devel
启动mysql
/etc/init.d/mysqld start chkconfig mysqld on
配置远程连接
grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
配置root用户的登录密码
update user set password=password(‘123456’) where user=‘root’; 刷新配置‘
flush privileges;
使用远程连接工具连接数据库
安装hive
编辑hive-env.sh
配置 HADOOP_HOME 配置HIVE_CONF_DIR 编辑 Hive-site.xml
配置hive需要连接的mysql数据库添加mysql驱动包到hive的lib文件夹内
最后修改环境变量
export HIVE_HOME=/export/servers/hive-1.1.0-cdh5.14.0
export PATH=
P
A
T
H
:
PATH:
PATH:HIVE_HOME/bin source /etc/profile
最后将Hive配置什么的分发到各个节点上就OK了