Hive安装与配置及常见问题解决

提示:文章内容为上课记录,常见问题在配置过程中就已经记录

目录

前言

一,Hive的安装与配置

二,Hive的连接方式

1.命令行连接(不易报错)

2.C/S模式(注意细节否则易报错)

总结


前言

Hive概述

之前的定义:Hive是由Facebook实现并开源,是基于Hadoop的一个数据仓库工具,底层依赖于HDFS存储数据,利用MapReduce进行计算,可以将结构化的数据映射为一张数据库表,并提供HQL。Hive的本质是将 SQL 语句转换为 MapReduce 任务运行。Hive提供了三种协议访问 Hive数据:Thrift RPC、JDBC、ODBC。

注意:以上是Hive之前的定义。如今随着大数据的发展Hive逐步舍弃了MR。Hive2.X版本已经建议不再使用MR,而在新出来的Hive3.X版本中,直接舍弃了使用MR作为底层运行机制,改为使用Tez。

后来由于Spark的出现,许多公司开始使用Spark代替MapReduce作为Hive的执行引擎,使Hive运行在Spark上。也就是Hive on Spark。

Hive的优缺点

优点:

可扩展性强,支持横向扩展。因为其底层依赖于HDFS存储数据,支持集群扩展。Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

延展性强。支持自定义函数。

良好的容错性。底层依赖于HDFS,有副本机制。

缺点:

查询起来很慢。

不支持事务。主要用来做OLAP(联机分析处理),而不是OLTP(联机事务处理)。

之前版本的Hive不支持删改操作的,但是新出来的3.0版本是支持的。

数据库与数据仓库

数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

数据库是面向事务的设计,数据仓库是面向主题设计的,一般存储在线交易数据。

数据仓库存储的一般是历史数据。


提示:以下是本篇文章正文内容,下面案例可供参考

 

一,Hive的安装与配置

1.上传,导tar包。

上传tar包,解压。此处我们用的hive是2.3.3。在hive的lib下添加一个mysql-connect-jar。

2.将元数据管理配置为mysql。

Hive的元数据默认是保存在DerBy数据库中,但是这个数据库会随着客户端的移动而重新生成。所以我们统一将元数据使用mysql来保存。

在Hive的conf下添加以下配置信息。

输入命令:vi hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!--连接数据库地址,名称 -->  
	<property>
	  <name>javax.jdo.option.ConnectionURL</name>
	  <value>jdbc:mysql://localhost:3306/myhive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</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.header</name>
	  <value>true</value>
	</property>
	<!--客户端显示当前数据库名称信息 --> 
	<property>
	  <name>hive.cli.print.current.db</name>
	  <value>true</value>
	</property> 
    <property>
	<!--关闭数据库的版本检查--> 
    	  <name>hive.metastore.schema.verification</name>
    	  <value>false</value>
	</property>
</configuration>

输入命令:

cp hive-env.sh.template hive-env.sh

vi hive-env.sh

在对应的位置添加

注:这里的hadoop路径一定要和你自己的hadoop路径一致否则后面会报错!

HADOOP_HOME=/opt/software/hadoop-2.9.2
export HIVE_CONF_DIR=/opt/software/hive-2.3.3-bin/conf

 输入命令:

cp hive-log4j2.properties.template hive-log4j2.properties

vi hive-log4j2.properties

在对应的位置修改。

property.hive.log.dir = /opt/software/hive-2.3.3-bin/logs

 3.赋予权限。

配置hive前必不可少的一项,给mysql赋予权限。

 输入命令:

mysql -uroot -p123456

>grant all privileges on *.* to root@"%" identified by "123456" with grant option;
>grant all privileges on *.* to root@"localhost" identified by "123456" with grant option;

注意:如果此处报错误,先查看mysql初始密码策略。

SHOW VARIABLES LIKE 'validate_password%';

设置密码的验证强度等级。

set global validate_password_policy=LOW;

设置密码的长度。

set global validate_password_length=6;

然后再进行赋予权限。

4.配置环境变量。

配置HIVE_HOME到系统环境变量中:/etc/profile。

重新加载:source /etc/profile。

5.初始化Hive。

schematool -dbType mysql -initSchema

二,Hive的连接方式

1.命令行连接(不易报错)

这种方式在Hive3.X版本中已经被淘汰掉了,推荐使用第二种C/S模式(有点麻烦)。

客户端启动:

hive

2.C/S模式(注意细节否则易报错)

启动服务端:

Hive的bin目录下有个hiveserver2,

启动bin/ hiveserver2,默认使用10000端口。

客户端:

客户端直接连接命令:

beeline -u 'jdbc:hive2://192.168.67.110:10000' -n root

Hive的bin目录下有个beeline,启动bin/beeline。

输入

!connect jdbc:hive2://192.168.67.110:10000

root

密码可以不写

常见启动异常:

注:启动hiveserver2时:

报:WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification

原因:没有写&useSSL=false

解决办法:

<value>jdbc:mysql://localhost:3306/myhive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>

使用!connect jdbc:hive2://master:10000连接时:

报:root is not allowed to impersonate root

解决办法:

在hadoop的配置文件core-site.xml中加入:

<property>

        <name>hadoop.proxyuser.root.hosts</name>

        <value>*</value>

</property>

<property>

        <name>hadoop.proxyuser.root.groups</name>

        <value>*</value>

</property>

重新初始化集群。


总结
   以上就是今天要讲的内容,本文仅仅简单介绍了Hive简介,以及Hive安装与配置及常见问题解决。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值