前言
对于做大数据开发的同学来说,掌握hive是必备的技能之一,hive基于hdfs之上的一款强大的数据分析框架,可以从海量的数据中做出高效的数据分析,而且迎合大多数有着sql使用习惯的各类技术人员
话不多说,我们先基于一个单机版的hdfs环境搭建起hive的使用环境吧
环境准备
- hdfs运行环境,关于搭建可以参考我之前的一篇文章
- mysql,提前安装好mysql,这里建议使用mysql 5.7版本
- hive安装包,本例使用3.12版本的安装版本,可以自行去官网下载
安装步骤
2、移动到指定目录,并解压重命名解压包
tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
重命名解压包
mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive
3、配置环境变量
vi /etc/profile
4、初始化derby数据库
hive默认情况下,不做任何配置的话,其元数据存储在内置的一款称作derby数据库中,因此需要初始化一下元数据信息
bin/schematool -dbType derby -initSchema
看到这里,说明初始化成功,然后进入到 bin 目录下,执行 ./hive 命令即可进入到hive的客户端窗口
但是当我们执行hive客户端下面的命令时,将会出现一段异常日志
show databases;
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
原因在于 Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与
其他客户端共享数据,所以我们需要将 Hive 的元数据地址改为 MySQL
了解了报错的原因后,我们需要配置下hive的元数据连接信息存储在mysql中
5、配置mysql连接
进入hive的conf目录,新建一个hive-site.xml,拷贝如下的配置内容
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://IP:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
配置完成后,最好给该文件授权,然后在mysql中创建一个名字为 “metastore”的数据库,用于保存hive的元数据信息
create database metastore;
6、再次执行元数据的初始化
进入bin目录,不过这一次是使用mysql了
schematool -initSchema -dbType mysql -verbose
7、再次启动hive
再次启动hive之前,确保hdfs服务是启动的
同时,注意启动hive时不要使用root账户,因为我们之前在配置单机的hdfs的时候也不是使用root账户而是自己创建的账户,hive操作是需要联通hdfs的,这里需要重点关注一下














还没有评论,来说两句吧...