#前言
集群我们已经弄好了,本章开始搭建hive。
1.hive介绍
1.Hive是什么?
官方解释:Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性。
简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。
2.hive经典架构图
如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。
在使用过程中,至需要将Hive看做是一个数据库就行,本身Hive也具备了数据库的很多特性和功能。
Hive擅长的是非实时的、离线的、对响应及时性要求不高的海量数据批量计算,即席查询,统计分析。
##2. centos7安装mysql
###### 目的:为了存储hive的元数据表,如果用hive自带的Derby库,起一个hive shell连接就要单独创建一个库,不能够共享元数据表。
###### 1.直接yum安装没有源,所以先下载rpm包
rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
###### 2.查看当前可用的mysql安装资源
yum repolist enabled | grep “mysql.-community.”
###### 3.yum方式安装mysql
yum -y install mysql-community-server
###### 4.开机启动
systemctl enable mysqld
###### 5.启动mysql服务进程
systemctl start mysqld
###### 6.重置密码
mysql_secure_installation
###### 7.进入mysql命令行,mysql -uroot -p123
###### 执行下面的语句 ( .:所有库下的所有表 %:任何IP地址或主机都可以连接 root 和 123是mysql的用户密码):
###### GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
###### FLUSH PRIVILEGES; //权限立即生效
######
######
3.安装hive
###### 1.将下载好的tar包(版本别下错,前面章节已经介绍版本)上传到hadoop203
###### 2.tar -zxvf 解压,将hive加入环境变量
vim /etc/profile
export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin
source /etc/profile
###### 3.新增hive-site.xml并配置,其他文件我没有配置都是默认的。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hivedata/warehouse/</value>
<description>Hive在HDFS上的根目录,内部表的hdfs目录</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.8.203:3306/hive?createDatabaseIfNotExist=true</value>
<description>Hive元数据库的连接串,红色为数据库名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Hive元数据库JDBC驱动</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Hive元数据库用户名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
<description>Hive元数据库密码</description>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
<description>不存在时,自动创建Hive元数据表</description>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
<description>不存在时,自动创建Hive元数据列</description>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
</configuration>
至此,hive配置就基本完成!
4.hive版本的选择,影响hive用户接口
###### 1.hive cli, 1.0.0后已经被废弃,但是还是能用的。
###### 2. hive1.0.0之后官方推荐beeline + httpserver2的方式,但是考虑到hive cli 用的比较广泛,所以在beeline之上又封装了一层。
###### 新hive cli 切换命令:export USE_DEPRECATED_CLI=false
###### 详情可参考官方解释:
###### https://cwiki.apache.org/confluence/display/Hive/Replacing+the+Implementation+of+Hive+CLI+Using+Beeline
###### 但是,我发现1.1.0版本的新cli不太好使,所以决定要么用老的cli ,要么用beeline。
###### 3.beeline简单介绍
###### HiveServer2提供了一个新的命令行工具Beeline,它是基于SQLLine CLI的JDBC客户端。Beeline工作模式有两种,即本地嵌入模式和远程模式。嵌入模式情况下,它返回一个嵌入式的Hive(类似于Hive CLI);而远程模式则是通过Thrift协议与某个单独的HiveServer2进程进行连接通信。
###### 4.beeline本地嵌入模式操作hive
###### 远程模式(暂不研究,下图标错,应该是先启动hiveserver2):
5.hive使用
###### 1.上面可知,我用的是beeline,进入命令行后,需要进行连接,如下图,用户密码直接回车跳过
总结:
本文主要讲了centos7中mysql安装和hive安装,并简单介绍了hive的用户接口(3种,看hive架构图)。下一章节介绍hive表和UDF等。
[大数据平台搭建(四):hive中的表及UDF][id]
[id]: https://blog.csdn.net/u012415035/article/details/79934188