Hive在spark2.0.0启动时无法访问../lib/spark-assembly-*.jar: 没有那个文件或目录的解决办法

最近将整个架构升级到spark 2.0.0之后,发现一个问题,就是每次进行hive --service metastore启动的时候,总是会报一个小BUG。
无法访问/home/ndscbigdata/soft/spark-2.0.0/lib/spark-assembly-*.jar: 没有那个文件或目录。
在这里插入图片描述

其主要的原因是:在hive.sh的文件中,发现了这样的命令,原来初始当spark存在的时候,进行spark中相关的JAR包的加载。而自从spark升级到2.0.0之后,原有的lib的整个大JAR包已经被分散的小JAR包的替代,所以肯定没有办法找到这个spark-assembly的JAR包。这就是问题所在。
在这里插入图片描述

将这个spark-assembly-.jar`替换成jars/.jar,就不会出现这样的问题。

在这里插入图片描述

进入hive后
在执行show databases;

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
在这里插入图片描述

经过各种查询资料,找到了一种解决办法,大家可以参考。

首先进入hive/bin目录下

执行命令 ./hive --service metastore &

在这里插入图片描述
看到
Starting Hive Metastore Server后代表 启动蜂巢转移服务器
在这里插入图片描述
在这里简单介绍一下hive的metastore

概述
通过hive metastore能访问hive的元数据,hive的元数据使用Data Nucleus持久化,因此mysql等数据库可以和hive结合,存储元数据。

metastore的两种方式
配置metastore服务端以及metastore数据库主要有内嵌、远程两种方式。
2.1 内嵌方式
hive使用derby作为内嵌的metastore数据库,主要用于测试,但是在同一时间,它只允许一个进程连接metastore数据库。
注意确认数据库能被执行查询的机器访问到,jdbc库放到hive客户端的classpath下。
2.2 远程方式(我使用的方式)
远程metastore服务端和客户端之间使用Thrift协议通信。执行hive --service metastore 启动Thrift服务端。

(所以我在初始化之后没有启动Thrift服务端,直接执行SQL语句就会报错)
如果使用mysql,需要在启动hive客户端和HiveMetastore服务端之前把jar包放到HIVE_HOME/lib目录。
远程metastore服务端和客户端都需要设置hive.metastore.warehouse.dir参数为HDFS路径,此外服务端需要设置ConnectionURL等参数,客户端需要设置hive.metastore.uris参数。

启动蜂巢转移服务器类似链接:https://blog.csdn.net/qq_24309787/article/details/83859485

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值