基于hadoop3.2.4安装hive3.1.1设置mysql元数据库管理

环境:

centos 7 arm架构  
mysql 8.0.28版本
hadoop :  3.2.4
hive 3.1.1
经测试,这个版本的hive下lib的guava版本和hadoop common包下的guava版本不一致。需要替换成hadoop下的jar包

下载hive

官网下载: http://archive.apache.org/dist/hive/

解压
配置环境变量

配置mysql元数据库

1.新建Hive元数据库

我这里数据库名写的hive

mysql -uroot -p123456
create database hive;
exit;

2.mysql设置允许远程登录(必须)

mysql安装后,默认没有开启远程登录,只能使用localhost或者127.0.0.1。这个必须设置一下
mysql -u root -p123456

use mysql;

select host, user from user;

update user set host = ‘%’ where user = ‘root’;
此时,root用户的权限已经允许非localhost登录

# 刷新设置,即可远程登录
FLUSH PRIVILEGES;

3.MySQL的JDBC驱动拷贝到Hive的lib目录下

安装包可以在官网拿到 https://downloads.mysql.com/archives/c-j/ 
选择对应的mysql版本
由于官网下载后的是rpm包。需要安装一下。
安装: rpm -ivh mysql-connector-java-8.0.28-1.el7.noarch.rpm

得到jar包:/usr/share/java/mysql-connector-java.jar

cp /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib

4.配置元数据、hiveserver2、metastore

几个注意点:
1. 如果是6以下版本的mysql。需要设置javax.jdo.option.ConnectionDriverName选项需要设置com.mysql.jdbc.Driver
2. jdbc连接必须有这个参数allowPublicKeyRetrieval=true
3. &的作用是xml不能写&,需要转义
4. hiveserver2作用是为用户提供jdbc访问hive方式。但是集群内访问hadoop使用哪个用户这就需要用到hadoop的模拟用户了。默认是开启的hive.server2.enable.doAs=true。所以就必须在每个节点设置hadoop的代理用户

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://linux01:3306/hive?useSSL=false&amp;allowPublicKeyRetrieval=true</value>
    </property>
    
    <!-- jdbc连接的Driver-->

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.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>

<!-- 到这里后面的和元数据管理无关-->
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>linux01</value>
</property>
  
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
  
<!-- 指定metastore服务的地址 默认就是9083-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://linux01:9083</value>
</property>

</configuration>

设置hadoop代理用户core-site.xml(和元数据管理无关,和hiveserver2有关)

vi $HADOOP_HOME/etc/hadoop/core-site.xml

添加以下配置

<!--配置所有节点的root用户都可作为代理用户-->

<property>

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

    <value>*</value>

</property>

<!--配置root用户能够代理的用户组为任意组-->

<property>

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

    <value>*</value>

</property>

<!--配置root用户能够代理的用户为任意用户-->

<property>

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

    <value>*</value>

</property>


最后将这个文件分发到各个集群

5.初始化元数据库

schematool -dbType mysql -initSchema -verbose

6.启动

nohup hive --service metastore 2>&1 &
nohup hive --service hiveserver2 2>&1 &

远程连接,查看是否成功
beeline -u jdbc:hive2://linux01:10000 -n root

7.解决jar包冲突

可能会报错:

hadoop@fzqs-Laptop:/usr/local/hive/lib$ hive -version
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
	...
	at org.apache.hadoop.util.RunJar.main(RunJar.java:236)

这是因为 hive 内依赖的 guava.jar 和 hadoop 内的版本不一致造成的。
查看 hadoop 安装目录下的 guava.jar 版本:

ls $HADOOP_HOME/share/hadoop/common/lib/guava*

输出如下:

$HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar

接着查看 Hive 下的 guava.jar 版本:

ls $HIVE_HOME/lib/guava*

输出如下:

$HIVE_HOME/lib/guava-19.0.jar

可以看到 Hadoop 内的 guava.jar 版本是要高于 Hive 内带的的,所以使用 Hadoop 的替代 Hive 的:

rm $HIVE_HOME/lib/guava-19.0.jar
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/

问题解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值