[hive on spark] hive on spark 无法启动spark 看这一个就够了!!!!

项目场景:

在hive on spark场景中,在我们执行hive SQL时候,会出现Failed to create Spark client for Spark session的情况

这个问题可能包含多种原因,在下面的步骤中,找到适合自己的情况,进行修改


原因分析以及解决方案

情况一:

        原因分析:yarn资源分配不合理,导致spark分配资源过少,无法启动进程

        解决方案:yarn-site 中 yarn的配置资源的优化 找到hadoop-3.3.4/etc/hadoop下的yarn-site.xml配置文件,然后加入或者修改如下配置信息,通过调整yarn-site的资源配置,

    <!--yarn单个容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>

    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>

    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

 然后重启yarn再次尝试

stop-yarn.sh //停止yarn

start-yarn.sh //启动yarn

本方案是在本人出现问题后,浏览各个高手博客发现的,但我的问题并没有因此解决

情况二:

        原因分析:虚拟机内存不足

        由于我的hadoop105不仅要启动hdfs的nodemanger、namenode、Datenode、还要启动hive的HiveServer2等,在目前这种情况下内存已经接近满的状态下,还要启动spark session 显然是不现实的,所以可能是因为虚拟机的内存不足导致的spark session无法创建

        解决方案:关闭虚拟机,然后调整虚拟机内存分配

情况三:

        原因分析:spark 版本与 hive的版本不兼容所导致的

        官网下载的Hive3.1.3和Spark3.3.1默认是不兼容的,Hive3.1.3支持的Spark版本是2.3.0

本人所用的hive版本是hive3.1.3 、spark3.3.1 由于这两个版本默认是不兼容的

需要我们重新编译Hive3.1.3版本。

编译步骤:官网下载Hive3.1.3源码,修改pom文件中引用的Spark版本为3.3.1,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。

Hive 和 Spark 的兼容性

Spark 版本与 Hive 版本兼容性
  • Spark 2.x 与 Hive 1.x/2.x 兼容

    • Spark 2.x(如 2.4.x)通常可以与 Hive 1.x 和 Hive 2.x 兼容。
    • 你可以使用 spark-hive 连接器与 Hive 进行交互。
  • Spark 3.x 与 Hive 2.x/3.x 兼容

    • Spark 3.x(如 3.1.x 和 3.2.x)通常与 Hive 2.x 或更高版本兼容。
    • Spark 3 引入了许多新特性和 API 更新,因此 Hive 3.x 会更好地与 Spark 3.x 集成。
版本兼容性:
Spark 版本Hive 版本说明
Spark 3.xHive 2.x/3.xSpark 3.x 完全兼容 Hive 2.x 和 Hive 3.x 版本
Spark 2.xHive 1.x/2.xSpark 2.x 兼容 Hive 1.x 和 Hive 2.x
Spark 1.xHive 0.13.x/1.xSpark 1.x 兼容 Hive 0.13.x 和 Hive 1.x

 大家查看各个版本的兼容性问题,然后到官网找到兼容的版本,或者重新编译Hive版本,来达到适配

情况四:

        原因描述:hdfs中存在腐朽块,未进行复制的块,出现错误的块

        一般这种情况是由于未关闭相关进程,而直接进行虚拟机的关机!!!本人就是这种原因,每次虚拟机用完了,直接到VMware关机,然后每次启动时候,hdfs都会处于安全模式很长时间,如果使用hdfs dfsadmin -safemode leave 强制离开安全模式,就会出现spark session无法创建的问题

        解决方案:找到出现问题的文件块,进行删除(通常我们进入hdfs9870首页时候,上面就会提示出出现错误的块信息)

我出现的错误文件块,是在tmp以及spar-history文件中,我对这两个文件进行删除,然后问题解决

 原因分析:是由于spark相关的log文件,出现错误,在启动spark session中 需要对log文件继续操作,由于log文件的错误,所以导致spark session的无法启动


 提示:在关闭虚拟机前,首先确保你保存了所有的工作和数据,避免丢失未保存的文件,然后关闭相关进程,然后关闭虚拟机,避免出现错误文件

上述博客为本人在遇到问题,解决问题的一些见解,如果有错误欢迎指出!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值