标签: hadoop-yarn

Apache Spark:核心数与执行者数量

我试图了解在YARN上运行Spark作业时内核数量和执行程序数量之间的关系.

测试环境如下:

  • 数据节点数:3
  • 数据节点机器规格:
    • CPU:Core i7-4790(核心数:4,线程数:8)
    • 内存:32GB(8GB x 4)
    • 硬盘:8TB(2TB x 4)
  • 网络:1Gb

  • Spark版本:1.0.0

  • Hadoop版本:2.4.0(Hortonworks HDP 2.1)

  • Spark作业流程:sc.textFile - > filter - > map - > filter - > mapToPair - > reduceByKey - > map - > saveAsTextFile

  • 输入数据

    • 类型:单个文本文件
    • 尺寸:165GB
    • 行数:454,568,833
  • 产量

    • 第二次过滤后的行数:310,640,717
    • 结果文件的行数:99,848,268
    • 结果文件的大小:41GB

该作业使用以下配置运行:

  1. --master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3 (每个数据节点的执行程序,使用尽可能多的核心)

  2. --master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3 (核心数量减少)

  3. --master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12 (少核心,更多执行者)

经过的时间:

  1. 50分15秒

  2. 55分48秒

  3. 31分23秒

令我惊讶的是,(3)更快. …

hadoop hadoop-yarn apache-spark

178
推荐指数
5
解决办法
8万
查看次数

Spark Kill运行应用程序

我有一个正在运行的Spark应用程序,它占用了我的其他应用程序不会分配任何资源的所有核心.

我做了一些快速的研究,人们建议使用YARN kill或/ bin/spark-class来杀死命令.但是,我使用CDH版本和/ bin/spark-class甚至根本不存在,YARN kill应用程序也不起作用.

在此输入图像描述

任何人都可以和我一起吗?

hadoop-yarn apache-spark pyspark

86
推荐指数
3
解决办法
12万
查看次数

Hadoop截断/不一致的计数器名称

现在,我有一个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期间,有一些计数器增量,在作业完成后,在ToolRunnerI中使用的获取计数器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的内部.一些有趣的东西:

  1. org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters方法从具有TRUNCATED名称和FULL显示名称的yarn返回一组计数器.
  2. 无法调试map和reducer本身,但在记录的帮助下,似乎该org.apache.hadoop.mapreduce.Counter#getName方法在reducer执行期间正常工作.

java hadoop mapreduce hadoop-yarn

78
推荐指数
1
解决办法
2461
查看次数

容器超出了内存限制

在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)

hadoop mapreduce mrv2 hadoop-yarn

74
推荐指数
4
解决办法
12万
查看次数

我应该为Spark选择哪种群集类型?

我是Apache Spark的新手,我刚刚了解到Spark支持三种类型的集群:

  • 独立 - 意味着Spark将管理自己的集群
  • YARN - 使用Hadoop的YARN资源管理器
  • Mesos - Apache的专用资源管理器项目

由于我是Spark的新手,我想我应该首先尝试Standalone.但我想知道哪一个是推荐的.说,将来我需要构建一个大型集群(数百个实例),我应该去哪个集群类型?

hadoop-yarn mesos apache-spark apache-spark-standalone

70
推荐指数
3
解决办法
3万
查看次数

Apache Hadoop YARN中'mapreduce.map.memory.mb'和'mapred.map.child.java.opts'之间的关系是什么?

我想知道mapreduce.map.memory.mbmapred.map.child.java.opts参数之间的关系.

mapreduce.map.memory.mb> mapred.map.child.java.opts

谢谢,Kewal.

apache configuration hadoop heap-size hadoop-yarn

48
推荐指数
2
解决办法
5万
查看次数

application_(state:ACCEPTED)的应用程序报告永远不会结束Spark Submit(在YARN上使用Spark 1.2.0)

我正在运行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)

amazon-emr hadoop-yarn apache-spark amazon-kinesis

47
推荐指数
5
解决办法
4万
查看次数

什么是Spark中的纱线客户端模式?

Apache Spark最近将版本更新为0.8.1,在该yarn-client模式下可用.我的问题是,纱线客户端模式究竟意味着什么?在文档中它说:

使用yarn-client模式,该应用程序将在本地启动.就像在Local/Mesos/Standalone模式下运行应用程序或spark-shell一样.启动方法也与它们类似,只需确保在需要指定主URL时,使用"yarn-client"代替

"本地推出"是什么意思?在哪里?在Spark集群上?
与纱线独立模式有什么区别?

hadoop-yarn apache-spark

46
推荐指数
6
解决办法
5万
查看次数

使用YARN客户端模式时如何防止Spark Executors迷失?

嗨,我有一个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的新手.提前致谢.

hadoop-yarn apache-spark

44
推荐指数
1
解决办法
4万
查看次数

在YARN上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可以在哪里设置?

logging hadoop cloudera hadoop-yarn apache-spark

39
推荐指数
4
解决办法
7万
查看次数