我试图了解在YARN上运行Spark作业时内核数量和执行程序数量之间的关系.
测试环境如下:
网络:1Gb
Spark版本:1.0.0
Hadoop版本:2.4.0(Hortonworks HDP 2.1)
Spark作业流程:sc.textFile - > filter - > map - > filter - > mapToPair - > reduceByKey - > map - > saveAsTextFile
输入数据
产量
该作业使用以下配置运行:
--master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3
(每个数据节点的执行程序,使用尽可能多的核心)
--master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3
(核心数量减少)
--master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12
(少核心,更多执行者)
经过的时间:
50分15秒
55分48秒
31分23秒
令我惊讶的是,(3)更快. …
我有一个正在运行的Spark应用程序,它占用了我的其他应用程序不会分配任何资源的所有核心.
我做了一些快速的研究,人们建议使用YARN kill或/ bin/spark-class来杀死命令.但是,我使用CDH版本和/ bin/spark-class甚至根本不存在,YARN kill应用程序也不起作用.
任何人都可以和我一起吗?
现在,我有一个Hadoop工作,它创建了一个非常有名的计数器.例如,以下一个:stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits
.此计数器在Web界面和getName()
方法调用上被截断.我发现Hadoop对计数器最大名称有限制,此设置ID mapreduce.job.counters.counter.name.max
用于配置此限制.所以我将此增加到,500
并且web界面现在显示完整的计数器名称.但是getName()
计数器仍然返回截断的名称.
请问某人,解释一下或指出我的错误?谢谢.
编辑1
我的hadoop服务器配置由单个服务器组成,其中包含hdfs,yarn和map-reduce.在map-reduce期间,有一些计数器增量,在作业完成后,在ToolRunner
I中使用的获取计数器org.apache.hadoop.mapreduce.Job#getCounters
.
编辑2
Hadoop版本如下:
Hadoop 2.6.0-cdh5.8.0
Subversion http://github.com/cloudera/hadoop -r 042da8b868a212c843bcbf3594519dd26e816e79
Compiled by jenkins on 2016-07-12T22:55Z
Compiled with protoc 2.5.0
From source with checksum 2b6c319ecc19f118d6e1c823175717b5
This command was run using /usr/lib/hadoop/hadoop-common-2.6.0-cdh5.8.0.jar
Run Code Online (Sandbox Code Playgroud)
我做了一些额外的调查,似乎这个问题描述了与我类似的情况.但这很令人困惑,因为我可以增加计数器的数量而不是计数器名称的长度......
编辑3
今天我花了很多时间调试hadoop的内部.一些有趣的东西:
org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
方法从具有TRUNCATED名称和FULL显示名称的yarn返回一组计数器.org.apache.hadoop.mapreduce.Counter#getName
方法在reducer执行期间正常工作.在Hadoop v1中,我已经分配了每个7GB的mapper和reducer slot,大小为1GB,我的mappers和reducer运行正常.我的机器有8G内存,8个处理器.现在使用YARN,当在同一台机器上运行相同的应用程序时,我收到了容器错误.默认情况下,我有这样的设置:
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
Run Code Online (Sandbox Code Playgroud)
然后我尝试在mapred-site.xml中设置内存限制:
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
Run Code Online (Sandbox Code Playgroud)
但仍然得到错误:
Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. …
Run Code Online (Sandbox Code Playgroud) 我是Apache Spark的新手,我刚刚了解到Spark支持三种类型的集群:
由于我是Spark的新手,我想我应该首先尝试Standalone.但我想知道哪一个是推荐的.说,将来我需要构建一个大型集群(数百个实例),我应该去哪个集群类型?
我想知道mapreduce.map.memory.mb
和mapred.map.child.java.opts
参数之间的关系.
是mapreduce.map.memory.mb
> mapred.map.child.java.opts
?
谢谢,Kewal.
我正在运行kinesis plus spark应用程序 https://spark.apache.org/docs/1.2.0/streaming-kinesis-integration.html
我正在运行如下
ec2实例上的命令:
./spark/bin/spark-submit --class org.apache.spark.examples.streaming.myclassname --master yarn-cluster --num-executors 2 --driver-memory 1g --executor-memory 1g --executor-cores 1 /home/hadoop/test.jar
Run Code Online (Sandbox Code Playgroud)
我在EMR上安装了火花.
EMR details
Master instance group - 1 Running MASTER m1.medium
1
Core instance group - 2 Running CORE m1.medium
Run Code Online (Sandbox Code Playgroud)
我越来越低于INFO,它永远不会结束.
15/06/14 11:33:23 INFO yarn.Client: Requesting a new application from cluster with 2 NodeManagers
15/06/14 11:33:23 INFO yarn.Client: Verifying our application has not requested more than the maximum memory capability of the cluster (2048 MB per container)
15/06/14 11:33:23 INFO …
Run Code Online (Sandbox Code Playgroud) Apache Spark最近将版本更新为0.8.1,在该yarn-client
模式下可用.我的问题是,纱线客户端模式究竟意味着什么?在文档中它说:
使用yarn-client模式,该应用程序将在本地启动.就像在Local/Mesos/Standalone模式下运行应用程序或spark-shell一样.启动方法也与它们类似,只需确保在需要指定主URL时,使用"yarn-client"代替
"本地推出"是什么意思?在哪里?在Spark集群上?
与纱线独立模式有什么区别?
嗨,我有一个Spark作业,本地运行良好,数据较少,但当我在YARN上安排执行时,我继续得到以下错误,慢慢地所有执行程序都从UI中删除,我的工作失败
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 8 on myhost1.com: remote Rpc client disassociated
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 6 on myhost2.com: remote Rpc client disassociated
Run Code Online (Sandbox Code Playgroud)
我使用以下命令在yarn-client模式下安排spark作业
./spark-submit --class com.xyz.MySpark --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 3g --master yarn-client --executor-memory 2G --executor-cores 8 --num-executors 12 /home/myuser/myspark-1.0.jar
Run Code Online (Sandbox Code Playgroud)
我不知道有什么问题请指导.我是Spark的新手.提前致谢.
我是新来的.现在我可以在纱线上运行spark 0.9.1(2.0.0-cdh4.2.1).但执行后没有日志.
以下命令用于运行spark示例.但是,在正常的MapReduce作业中,在历史记录服务器中找不到日志.
SPARK_JAR=./assembly/target/scala-2.10/spark-assembly-0.9.1-hadoop2.0.0-cdh4.2.1.jar \
./bin/spark-class org.apache.spark.deploy.yarn.Client --jar ./spark-example-1.0.0.jar \
--class SimpleApp --args yarn-standalone --num-workers 3 --master-memory 1g \
--worker-memory 1g --worker-cores 1
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到logs/stderr/stdout?
有什么地方可以设置配置吗?我确实找到了控制台的输出说:
14/04/14 18:51:52 INFO客户端:ApplicationMaster的命令:$ JAVA_HOME/bin/java -server -Xmx640m -Djava.io.tmpdir = $ PWD/tmp org.apache.spark.deploy.yarn.ApplicationMaster --class SimpleApp --jar ./spark-example-1.0.0.jar --args'yarn-standalone' - worker-memory 1024 --worker-cores 1 --num-workers 3 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr
在这一行,请注意 1> $LOG_DIR/stdout 2> $LOG_DIR/stderr
LOG_DIR可以在哪里设置?
hadoop-yarn ×10
apache-spark ×7
hadoop ×5
mapreduce ×2
amazon-emr ×1
apache ×1
cloudera ×1
heap-size ×1
java ×1
logging ×1
mesos ×1
mrv2 ×1
pyspark ×1