一、hive的安装
hive3.1.2的连接地址 http://archive.apache.org/dist/hive/hive-3.1.2/
1、下载后上传到/opt/apps下
2、解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz
3、重命名
mv apache-hive-3.1.2-bin hive-3.1.2
4、执行以下命令,修改hive-site.xml
cd /opt/apps/hive-3.1.2/conf
mv hive-default.xml.template hive-default.xml
5、执行以下命令,新建一个hive-site.xml配置文件
vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://centos04:3306/hive?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>123456</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</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>
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://centos04:9083</value>
</property>
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>centos04</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
</configuration>
二、配置Mysql
1.首先下载mysql jdbc包
2.把它复制到hive/lib目录下。
3.启动并登陆mysql
4.将hive数据库下的所有表的所有权限赋给root用户,并配置123456为hive-site.xml中的连接密码,然后刷新系统权限关系表
mysql> create database hive;
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> flush privileges;
# 配置环境变量
vim /etc/profile
export HIVE_HOME=/opt/apps/hive-3.1.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$FLINK_HOME/bin:$HIVE_HOME/bin
# 配置文件生效
source /etc/profile
-- 初始化Hive元数据库
[root@centos04 conf]# schematool -initSchema -dbType mysql -verbose
# 启动Hive
[root@centos04 conf]# nohup hive --service metastore &
[root@centos04 conf]# netstat -nltp | grep 9083
tcp6 0 0 :::9083 :::* LISTEN 10282/java
启动hive
1)先启动hadoop集群
start-dfs.sh
# 启动hadoop集群后,要等hdfs退出安全模式之后再启动hive。
[root@centos04 conf]# hive
# 启动远程连接(配置了HA模式需要先启动zookeeper)
hiveserver2 &
netstat -nltp | grep 10000
netstat -nltp | grep 10002
bin/beeline
!connect jdbc:hive2://centos04:10000
输入用户名 root
输入密码 回车
三、安装中的错误
(1)hive连接提示 root is not allowed to impersonate root (state=08S01,code=0)
解决:在hadoop 的core-site.xml添加如下内容,然后重启
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>root</value>
<description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
<description>The superuser can connect only from host1 and host2 to impersonate a user</description>
</property>
(2)Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;) at org.apache.hadoop.conf.Configuration.set(Configuration.java:1380)
原因:hive内依赖的guava.jar和hadoop内版本不一致导致
解决方法:
- 查看hadoop安装目录下的guava.jar版本和hive安装目录下的guava.jar是否一致
- 如果两者不一致,
则删除低版本的,把高版本的复制过去
。 - 例如:hadoop3.1.3的guava版本是27,而hive3.1.2版本是19
- hadoop路径:(opt/apps/hadoop3.1.3/share/common/lib)
- hive路径:(opt/apps/hive-3.1.2/lib)
(3) Failed to load driver
没有com.mysql.jdbc.Driver mysql驱动,上传mysql-connector-java-5.1.47.jar到hive的lib目录下
(4) is not allowed to connect to this mysql server 本地电脑的navicat链接不上mysql
解决:
-
mysql -u root -p 登录到mysql中。
-
use mysql;
-
select host from user where user='root';
-
修改帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入MySQL后,更改 “mysql”
数据库里的 “user” 表里的 “host” 项,从"localhost"改称"%"
update user set host = '%' where user ='root'; flush privileges;
(5) Your password does not satisfy the current policy requirements)
解决办法:
1、查看 mysql 初始的密码策略,
输入语句 “SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看,
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’; ” 可以看到修改成功,表示密码策略修改成功了!!!
注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,
关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;