在hadoop 以yarn运行spark一个很简单的程序时,报错:
java.lang.IllegalStateException: Spark context stopped while waiting for backend
at org.apache.spark.scheduler.TaskSchedulerImpl.waitBackendReady(TaskSchedulerImpl.scala:614)
at org.apache.spark.scheduler.TaskSchedulerImpl.postStartHook(TaskSchedulerImpl.scala:169)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:567)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2313)
然后百度了下,有人说是因为Java 8 与 Hadoop 2.7.3 的YARN存在某些不兼容造成内存溢出,导致程序的异常终止,其解决方案是修改Hadoop下的yarn-site.xml配置文件,增加以下属性:
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
然后重启YARN,然后再以--master yarn 模式运行Spark即可。
按照上述操作对配置文件修改之后,发现Spark确实能够正常启动,而且前两天出现的执行分词程序Action异常退出的问题也不存在了,然后查了下yarn.nodemanager.pmem-check-enabled和yarn.nodemanager.vmem-check-enabled这两个配置项,发现这两个参数YARN的默认配置对于之前遇到的异常退出是有影响的。
首先yarn.nodemanager.pmem-check-enabled表示是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true,也就是说如果我的分词操作action在执行时,如果使用的内存量大于系统默认的物理内存量,就会被Kill掉。yarn.nodemanager.vmem-check-enabled
表示是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true,也就是说如果我的分词操作action在执行时,如果使用的虚拟内存量大于系统默认的物理内存量,就会被Kill掉。
然后在YARN的默认配置中,有以下参数
yarn.nodemanager.vmem-pmem-ratio 即任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1;yarn.nodemanager.resource.memory-mb即该节点上YARN可使用的物理内存总量,默认是8192(MB);然而我的YARN所在服务器内存实际只有4G,由于没有修改可用物理内存总量参数值,所以在执行action的时候,导致内存被撑爆,从而使spark任务被Kill 掉。
所以在以 --master yarn模式 运行Spark的时候,一定要先调整YARN关于内存的相关参数设置,否则会有意想不到的后果。
分享到:
相关推荐
Spark则是另一种内存计算框架,它通过将数据保存在内存中来优化迭代计算任务。 在本书中,作者深入解析了YARN的设计理念与基本架构,并对YARN的核心设计、计算框架及高级主题进行了详细的探讨。在准备篇中,作者...
从文件中提供的信息来看,董西成在其关于Hadoop YARN程序设计与应用案例的演讲中,涵盖了Hadoop YARN的定义、架构、API和开发步骤、应用类型、以及YARN API所涉及的通信协议和客户端库等核心知识点。以下是对这些...
此外,还涵盖了Container的概念,它是YARN中资源分配的基本单位,包含内存、CPU等资源。 YARN的工作流程包括以下几个关键步骤: 1. 应用提交:用户或应用程序客户端向RM提交应用,同时指定一个AM。 2. AM启动:RM为...
Apache Hadoop YARN,全称为Yet Another Resource Negotiator(另一种资源协调器),是Apache Hadoop生态系统中的核心组件,负责管理和调度Hadoop分布式计算环境中的资源。YARN的引入旨在解决早期Hadoop MapReduce...
在该算法中,首先通过YARN的心跳通信机制来获取各个节点的负载、内存、CPU速度等属性信息,用于初始化信息素矩阵。利用粒子群算法的自我认知能力和社会认知能力,将这些能力引入蚁群算法中,以加速算法的收敛速度。...
在大数据处理领域,Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop项目中的一个核心组件,负责管理和调度集群中的资源。YARN为大数据处理提供了高效、可扩展的资源管理框架,使得不同类型的计算...
在Hadoop集群中,YARN(Yet Another Resource Negotiator)作为资源管理器,负责调度MapReduce任务的内存和CPU资源。YARN支持基于内存和CPU的两种资源调度策略,以确保集群资源的有效利用。在非默认配置下,合理地...
- **Cloudera Manager中的属性设置**:利用Cloudera Manager界面配置相关属性。 - **内存设置**:具体设置每个组件的内存分配。 - **YARN配置属性**:查看和调整YARN的相关配置属性。 #### 十、YARN REST APIs - *...
在实际应用中,YARN的配置和优化是关键,包括调整内存设置、优化队列策略、监控与日志管理等。合理的资源配置和调优能进一步提升系统效率,确保大数据处理任务的顺利完成。 六、未来发展趋势 随着大数据技术的发展...
- `-m 256`:设置每个容器(Container)的内存大小,单位通常为MB,这里是256MB。 - `-d 4`:定义每个节点上的数据磁盘数量。 `yarn-utils.py`脚本将根据这些输入参数,结合其他默认配置和最佳实践,生成一套适合...
本篇将深入探讨YARN内存分配的管理机制以及相关参数配置。 首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、ApplicationMaster(AM)和NodeManager(NM)。 1. ResourceManager(RM):RM是全局...
4. **Container**: 容器是YARN中的基本资源单位,它封装了CPU、内存等硬件资源,以及运行应用程序任务的环境。AM申请容器并在NM上启动任务。 **YARN的工作流程** 1. 用户提交一个应用程序,包括应用程序的JAR文件...
Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop项目中的一个核心组件,它的设计目标是解决早期Hadoop 1.x版本中MapReduce(MRv1)存在的问题,包括扩展性限制、单点故障以及对其他计算框架支持不足...
在CCTC 2016中国云计算技术大会上,Hulu大数据架构组负责人董西成所作的报告“Hadoop YARN在异构环境下应用与实践”,深入介绍了YARN如何在不同硬件配置的机器组成的异构环境中高效地运行多种大数据计算框架。...
通过以上对Apache Hadoop YARN的详细解析,我们可以理解到YARN是如何在Hadoop生态系统中扮演关键角色,提供高效、灵活的大数据处理能力的。对于开发人员和大数据运维人员来说,深入理解和掌握YARN的原理与操作是至关...
YARN的引入解决了早期Hadoop中MapReduce框架的单一职责问题。在YARN中,JobTracker被拆分为两个角色:Resource Manager(RM)和Application Master(AM)。RM全局管理集群资源,负责调度和分配任务;而AM则是每个...