专栏首页Hadoop实操0514-Hive On Spark无法创建Spark Client问题分析

0514-Hive On Spark无法创建Spark Client问题分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

问题现象

  • 测试环境

1.RedHat7.2

2.CM和CDH版本为5.15.0

在集群中进行Hive-On-Spark查询失败,并在HiveServer2日志中显示如下错误:

ERROR : Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)'
org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create spark client.
        at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.open(SparkSessionImpl.java:64)
        at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:114)
        ....
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutException: Timed out waiting for client connection.
        at com.google.common.base.Throwables.propagate(Throwables.java:156)
        at org.apache.hive.spark.client.SparkClientImpl.<init>(SparkClientImpl.java:124)

2

原因分析

当Hive服务将Spark应用程序提交到集群时,在Hive Client会记录提交应用程序的等待时间,通过等待时长确定Spark作业是否在集群上运行。如果应用程序未在指定的等待时间范围内运行,则Hive服务会认为Spark应用程序已失败。

当Spark ApplicationMaster被分配了Yarn Container并且正在节点上运行时,则Hive认为Spark应用程序是成功运行的。如果Spark作业被提交到Yarn的排队队列并且正在排队,在Yarn为Spark作业分配到资源并且正在运行前(超过Hive的等待时长)则Hive服务可能会终止该查询并提示“Failed to create spark client”。

3

问题说明

1.可以通过调整Hive On Spark超时值,通过设置更长的超时时间,允许Hive等待更长的时间以确保在集群上运行Spark作业,在执行查询前设置如下参数

set hive.spark.client.server.connect.timeout=300000;

该参数单位为毫秒,默认值为90秒。要验证配置是否生效,可以通过查看HiveServer2日志中查询失败异常日志确定:

2.检查Yarn队列状态,以确保集群有足够的资源来运行Spark作业。在Fayson的测试环境通过多个并发将集群的资源完全占有导致Hive On Spark作业提交到集群后一直获取不到资源。

集群中没有足够的资源为Hive提交的Spark作业分配资源,同样也有可能是提交到Yarn队列作业过多导致无法分配到资源启动作业。

4

总结

1.当集群资源使用率过高时可能会导致Hive On Spark查询失败,因为Yarn无法启动Spark Client。

2.Hive在将Spark作业提交到集群是,默认会记录提交作业的等待时间,如果超过设置的hive.spark.client.server.connect.timeout的等待时间则会认为Spark作业启动失败,从而终止该查询。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0643-Spark SQL Thrift简介

    这是一个复杂的历史,基本上是一个“忒修斯船”(Ship of Theseus)的故事。最开始的时候,Spark SQL的代码几乎全部都是Hive的照搬,随着时间...

    Fayson
  • 0645-6.2.0-为什么我在CDH6上使用Spark2.4 Thrift失败了

    Fayson在前面的文章中介绍过什么是Spark Thrift,Spark Thrift的缺陷,以及Spark Thrift在CDH5中的使用情况,参考《064...

    Fayson
  • 如何指定Spark2作业中Driver和Executor使用指定范围内端口

    在CDH集群中提交Spark作业,大家也都知道Spark的Driver和Executor之间通讯端口是随机的,Spark会随选择1024和65535(含)之间的...

    Fayson
  • 王联辉:Spark在腾讯应用及对企业spark使用指导

    问题导读 1.腾讯如何使用Spark 技术的?带来了哪些好处? 2.Spark 技术最适用于哪些应用场景? 3.企业在应用Spark 技术时,需要做哪些改变吗...

    用户1410343
  • Spark从入门到精通(一)

    老梁
  • 【推荐系统算法实战】 Spark :大数据处理框架

    http://spark.apache.org/ https://github.com/to-be-architect/spark

    一个会写诗的程序员
  • Apache Spark常见的三大误解

    最近几年关于Apache Spark框架的声音是越来越多,而且慢慢地成为大数据领域的主流系统。最近几年Apache Spark和Apache Hadoop的Go...

    Albert陈凯
  • Spark Streaming 的玫瑰与刺

    说人话:其实就是讲Spark Streaming 的好处与坑。好处主要从一些大的方面讲,坑则是从实际场景中遇到的一些小细节描述。

    用户2936994
  • 听程序员界郭德纲怎么“摆”大数据处理

    大规模数据处理技术如果从MapReduce论文算起,已经前后跨越了十六年。我们先沿着时间线看一下大规模数据处理的重要技术和它们产生的年代。后面从MapR...

    凯哥
  • 【学习】如何从菜鸟成长为Spark大数据高手?

    Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算...

    小莹莹

扫码关注云+社区

领取腾讯云代金券