主机配置内存不足,导致在yarn上运行job异常,下面是spark运行在yarn上的一个异常:
17/05/03 17:58:02 ERROR client.TransportClient: Failed to send RPC 7785784597803174149 to /172.26.159.91:56630: java.nio.channels.ClosedChannelException java.nio.channels.ClosedChannelException 17/05/03 17:58:02 WARN netty.NettyRpcEndpointRef: Error sending message [message = RequestExecutors(0,0,Map())] in 1 attempts org.apache.spark.SparkException: Exception thrown in awaitResult at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:77) at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:75) at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) at scala.PartialFunction$OrElse.apply(PartialFunction.scala:167) at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:83) at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:102) at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:78) at org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint$$anonfun$receiveAndReply$1$$anonfun$applyOrElse$1.apply$mcV$sp(YarnSchedulerBackend.scala:271) at org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint$$anonfun$receiveAndReply$1$$anonfun$applyOrElse$1.apply(YarnSchedulerBackend.scala:271) at org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint$$anonfun$receiveAndReply$1$$anonfun$applyOrElse$1.apply(YarnSchedulerBackend.scala:271) at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Failed to send RPC 7785784597803174149 to /172.26.159.91:56630: java.nio.channels.ClosedChannelException at org.apache.spark.network.client.TransportClient$3.operationComplete(TransportClient.java:239) at org.apache.spark.network.client.TransportClient$3.operationComplete(TransportClient.java:226) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:680) at io.netty.util.concurrent.DefaultPromise$LateListeners.run(DefaultPromise.java:845) at io.netty.util.concurrent.DefaultPromise$LateListenerNotifier.run(DefaultPromise.java:873) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) ... 1 more Caused by: java.nio.channels.ClosedChannelException 17/05/03 17:58:02 ERROR spark.SparkContext: Error initializing SparkContext. java.lang.IllegalStateException: Spark context stopped while waiting for backend at org.apache.spark.scheduler.TaskSchedulerImpl.waitBackendReady(TaskSchedulerImpl.scala:581) at org.apache.spark.scheduler.TaskSchedulerImpl.postStartHook(TaskSchedulerImpl.scala:162) at org.apache.spark.SparkContext.<init>(SparkContext.scala:549) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2256) at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:831) at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:823) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:823) at hp.IK_Analysis$.main(IK_Analysis.scala:26) at hp.IK_Analysis.main(IK_Analysis.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 17/05/03 17:58:02 INFO spark.SparkContext: SparkContext already stopped. Exception in thread "main" java.lang.IllegalStateException: Spark context stopped while waiting for backend at org.apache.spark.scheduler.TaskSchedulerImpl.waitBackendReady(TaskSchedulerImpl.scala:581) at org.apache.spark.scheduler.TaskSchedulerImpl.postStartHook(TaskSchedulerImpl.scala:162) at org.apache.spark.SparkContext.<init>(SparkContext.scala:549) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2256) at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:831) ▽ at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:823) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:823) at hp.IK_Analysis$.main(IK_Analysis.scala:26) at hp.IK_Analysis.main(IK_Analysis.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 17/05/03 17:58:02 INFO storage.DiskBlockManager: Shutdown hook called 17/05/03 17:58:02 INFO util.ShutdownHookManager: Shutdown hook called 17/05/03 17:58:02 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-79c3cf1f-6451-4076-a371-da58601bca38
解决办法:在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.nodemanager.pmem-check-enabled 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。 yarn.nodemanager.vmem-check-enabled 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
相关推荐
Spark On Yarn 是一个在 Apache Hadoop YARN(Yet Another Resource Negotiator)资源管理器上运行 Apache Spark 应用程序的框架。这种模式允许 Spark 利用 Hadoop 的集群资源管理和调度能力,使得 Spark 能够更好地...
4. **YARN 或 Mesos 日志**:如果 Spark 运行在 YARN 或 Mesos 上,还会产生相应的资源管理器日志,如 YARN ApplicationMaster 日志或 Mesos 任务日志,它们提供了集群层面的资源分配和应用管理信息。 `application...
当应用程序提交时,RM为应用程序分配一个容器,AM便在这些容器上运行。 2. **Application Master (AM)**:每个应用程序都有一个对应的AM,负责应用程序的执行调度和任务监控。AM与RM交互以获取资源,然后与NM通信...
在较高层次上,Spark 应用程序的核心组成部分是一个**驱动程序**(Driver Program),它负责运行用户的主函数并在集群上执行各种并行操作。 1. **弹性分布式数据集(RDD)**:RDD 是 Spark 提供的主要抽象,代表了...
8. **YARN和Kubernetes集成**:Spark 2.2更好地支持了资源管理和调度平台,如Hadoop YARN和Kubernetes,使得在不同环境下部署和运行Spark应用变得更加灵活。 9. **Python和R支持**:虽然标签指定了Java,但Spark ...
10. **分布式调试与监控**:学习如何在集群环境中调试PySpark程序,以及使用Spark UI和YARN等工具监控Spark应用的运行状态。 通过以上内容的学习,你将具备使用Python和Spark进行大数据处理的能力,无论是在学术...
8. **广播变量(Broadcast Variables)**: 广播变量用于在所有工作节点上缓存一个只读变量,减少网络传输。例如: ```java Broadcast, Integer>> broadcastVar = sc.broadcast(map); ``` 9. **累加器(Accumulators...
3. 运行Spark示例:在IDE中编写一个简单的Spark程序,如WordCount,通过spark-submit提交到本地运行。 通过以上步骤,你将在Windows 10环境下成功搭建Spark 2.3.0的本地开发环境,可以开始进行Spark应用的开发和...
Spark 2.3.1是Apache Spark的一个稳定版本,它是一个快速、通用且可扩展的大数据处理框架。这个版本的Spark专为Linux平台设计,包含了Hadoop 2.6的集成,使得它能够无缝地与Hadoop生态系统交互,如HDFS(Hadoop...
`,这通常意味着应用程序已经在YARN集群中完成运行或出现了异常情况。针对此类问题,需要检查Spark应用程序本身是否存在问题,或者查看YARN集群的状态。 综上所述,本文从Spark与Hadoop集群集成、Spark环境搭建注意...
- **弹性**:Spark可部署在Hadoop YARN、Mesos或独立集群上,具备良好的扩展性。 - **多模式编程模型**:支持批处理、交互式查询、实时流处理和图计算等多种数据处理模式。 3. **高铁数据应用场景**: - **乘客...
Spark的工作模式通常是在分布式集群上运行,支持Hadoop、Mesos和Kubernetes等多种资源管理器。 #### 【FI 中的 Spark】 FI可能指的是FusionInsight,这是华为推出的一个大数据分析平台,其中集成了Spark。在Fusion...
在Hadoop 2.6.x版本中,YARN(Yet Another Resource Negotiator)被引入,以改进资源管理,使得系统能更有效地运行多种计算框架。 2. **Spark**:Spark是一个快速、通用且可扩展的大数据处理引擎,它在内存计算方面...
6. **调度与部署**:项目可能包含YARN或Mesos的配置文件,用于在集群上运行Spark作业。 7. **测试**:测试目录下会有单元测试和集成测试,确保代码的正确性和稳定性。 在实际应用中,一个基于Spark的薪资预测系统...
PySpark允许Python开发者直接在Spark集群上编写和运行代码,利用Spark的并行计算能力。通过PySpark,我们可以创建SparkContext,这是所有Spark操作的基础,然后加载数据到DataFrame,进行各种数据处理任务。...
- **Executor**:运行在集群中的工作节点上,执行具体的计算任务,并将结果返回给Driver Program。 - **Cluster Manager**:负责资源分配,可以选择Spark自带的Standalone模式,或者集成Hadoop YARN、Apache Mesos...
1. **Worker与Executor:** 每一台主机(host)上可以运行多个worker进程,而每个worker进程下又可以启动多个executor线程。这些executor线程负责执行具体的task任务。 2. **Task与Stage:** Task是由executor执行的...
同时,通过YARN或Mesos等资源管理器,Waterdrop可以灵活地调度和运行其Spark作业,适应各种复杂的集群环境。 Waterdrop与Spark的结合,使得数据处理流程更加流畅。Spark作为一个快速、通用且可扩展的计算引擎,其...