项目场景:
在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.xSpark 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的无法启动
提示:在关闭虚拟机前,首先确保你保存了所有的工作和数据,避免丢失未保存的文件,然后关闭相干历程,然后关闭虚拟机,避免出现错误文件
上述博客为本人在遇到问题,办理问题的一些见解,如果有错误欢迎指出!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |