我根据cloudera文档1和2启用了spark上的hive。我现在发现减速机数的行为出乎意料。我希望有人能提供详细的文件或解释。
据我所知,hive on mr根据数据量和 hive.exec.reducers.bytes.per.reducer
,这意味着每个进程的字节数,因此可以自动调整作业并行度。但spark上的Hive似乎对这个参数有不同的看法。虽然将其设置为非常低的数字(<1k)确实会增加减速机的数量,但没有通用规则可以应用于不同的作业。
下面是cloudera调优文档中关于并行性的部分。
调整hive.exec.reducers.bytes.per.reducer以控制每个reducer处理的数据量,并且hive根据可用的执行器、执行器内存设置、为属性设置的值以及其他因素确定最佳分区数。实验表明,只要生成足够的任务使所有可用的执行器保持忙碌,spark对为hive.exec.reducers.bytes.per.reducer指定的值的敏感度就不如mapreduce高
另外,我知道spark中的rdd在内存不足时会将数据溢出到磁盘上。如果那样的话,下面来自spark jobs上的hive的错误消息真的让我很困惑。
Job aborted due to stage failure: Task 0 in stage 7.0 failed 4 times, most recent failure: Lost task 0.3 in stage 7.0 (TID 146, fuxi-luoge-105, executor 34): ExecutorLostFailure (executor 34 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 6.2 GB of 6.0 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
暂无答案!
目前还没有任何答案,快来回答吧!