记一次阿里云EMR报错、解决方法,Failed to create spark client

  1. 出现错误前进行的操作。设置hive计算引擎设置为spark,并添加了一些配置项
    set spark.executor.memory=4g;
    set spark.yarn.executor.memoryOverhead=4096;
    set hive.exec.parallel = true;
    set hive.execution.engine=spark;
    
  2. 日志输出
    =================JOB OUTPUT BEGIN=================
    Logging initialized using configuration in file:/etc/ecm/hive-conf-2.3.5-	1.0.8/hive-log4j2.properties Async: true
    OK
    Time taken: 1.465 seconds
    FAILED: SemanticException Failed to get a spark session: 	org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create spark client.
    =================JOB OUTPUT END=================
    
  3. 原因分析
    看到网上有的说是版本不匹配,但是这里我用的是阿里云的EMR,暂时排除这个原因。
    继续搜索,看到http://blog.sina.com.cn/s/blog_6dd718930102z2un.html这个文章,文章中分析的原因是集群资源满了之后,新开job无法获取资源时就会抛出这个错误。我查看了当时集群资源占用情况后发现job运行时集群资源确实被占满,于是采取文章中的方法,设置spark session的超时时间为15分钟
    set hive.spark.client.server.connect.timeout=900000;
    但是这个也不能完美解决,后来又出现了一次这个错误。解决的方法可以是
    1. 继续增加超时时间。
    2. 或者更改计算引擎为tez,因为相较于spark,tez能够及时的释放资源,重用container,节省调度时间,对内存的资源要求率不高; 而spark如果存在迭代计算时,container一直占用资源(这个也是看别的介绍这样说的)set hive.execution.engine=tez;
    3. 将job执行期间的其它作业挪到其它时间点。

资料:

spark与tez比较
https://blog.csdn.net/w892824196/article/details/102465885

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值