小编Mat*_*ner的帖子

使用spark-submit, - length-executor-cores选项的行为是什么?

我正在使用python包装的C++代码运行一个spark集群.我目前正在测试多线程选项的不同配置(在Python级别或Spark级别).

我在HDFS 2.5.4集群上使用带有独立二进制文件的spark.该集群目前由10个从站组成,每个从站有4个核心.

从我所看到的,默认情况下,Spark每个节点启动4个从站(我一次有4个python在从属节点上工作).

我怎样才能限制这个数字?我可以看到我有一个--total-executor-cores选项用于"spark-submit",但是关于它如何影响集群上执行程序分布的文档很少!

我将运行测试以获得一个清晰的想法,但如果知识渊博的人知道这个选项的作用,它可能有所帮助.

更新:

我再次浏览了spark文档,这是我的理解:

  • 默认情况下,每个工作节点一个执行程序(这里有10个工作节点,因此有10个执行程序)
  • 但是,每个工作人员可以并行运行多个任务.在独立模式下,默认行为是使用所有可用内核,这解释了为什么我可以观察4 python.
  • 要限制每个worker使用的核心数量,并限制并行任务的数量,我至少有3个选项:
    • 使用--total-executor-coreswhith spark-submit(最不令人满意,因为没有关于如何处理核心池的线索)
    • 使用SPARK_WORKER_CORES配置文件中
    • 使用-c选项和起始脚本

本文档的以下几行http://spark.apache.org/docs/latest/spark-standalone.html帮助我弄清楚发生了什么:

SPARK_WORKER_INSTANCES
在每台计算机上运行的工作程序实例数(默认值:1).如果您拥有非常大的机器并且想要多个Spark工作进程,则可以将其设置为1以上.如果设置了此项,请确保明确设置SPARK_WORKER_CORES以限制每个工作程序的核心,否则每个工作程序将尝试使用所有核心.

我还不清楚为什么在我的情况下将每个工作节点的并行任务数量限制为1并依赖于我的C++遗留代码多线程更好.当我完成学习时,我会用实验结果更新这篇文章.

multithreading hadoop cpu-cores apache-spark pyspark

11
推荐指数
2
解决办法
1万
查看次数

使用pyspark,在hadoop文件系统上读/写2D图像

我希望能够在hdfs文件系统上读/写图像并利用hdfs局部性.

我有一组图像,每个图像由一组图像组成

  • uint16的二维数组
  • 存储为xml文件的基本附加信息.

我想在hdfs文件系统上创建一个存档,并使用spark来分析存档.现在,我正在努力克服在hdfs文件系统上存储数据的最佳方式,以便能够充分利用spark + hdfs结构.

据我所知,最好的方法是创建一个sequenceFile包装器.我有两个问题:

  • 创建sequenceFile包装器是最好的方法吗?
  • 有没有人指向我可以用来开始的例子?我不能是第一个需要通过spark在hdfs上阅读与文本文件不同的东西!

hadoop sequencefile apache-spark pyspark

7
推荐指数
1
解决办法
5370
查看次数