我在 AWS 上设置了一个 10 节点 HDP 平台。下面是我的配置 2 个服务器 - 名称节点和备用名称节点 7 个数据节点,每个节点有 40 个 vCPU 和 160 GB 内存。
我试图在提交 Spark 应用程序时计算执行程序的数量,在浏览了不同的博客后,我对这个参数的实际含义感到困惑。
查看下面的博客,似乎 num executors 是所有节点的执行程序总数 http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part -2/
但是查看下面的博客,似乎每个节点或服务器的 num executors https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit
任何人都可以澄清并查看以下内容: -
num-executors 值是每个节点还是所有数据节点的执行程序总数。
我正在使用下面的计算来计算每个执行程序的核心数、执行程序数和内存
内核数 <= 5(假设为 5) 执行器数 = (40-1)/5 = 7 内存 = (160-1)/7 = 22 GB
通过上面的计算,这将是正确的方法
--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 7 --executor-cores 5
OR
--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 49 --executor-cores 5
Run Code Online (Sandbox Code Playgroud)
谢谢,贾亚德普
我试图在执行连接之前保留两个非常大的数据帧以解决“java.util.concurrent.TimeoutException:Futures timed out...”问题(参考:为什么连接因“java.util.concurrent.TimeoutException”而失败:期货在 [300 秒] 后超时”?)。
Persist() 单独可以工作,但是当我尝试指定存储级别时,我收到名称错误。
我尝试过以下方法:
df.persist(pyspark.StorageLevel.MEMORY_ONLY)
NameError: name 'MEMORY_ONLY' is not defined
df.persist(StorageLevel.MEMORY_ONLY)
NameError: name 'StorageLevel' is not defined
import org.apache.spark.storage.StorageLevel
ImportError: No module named org.apache.spark.storage.StorageLevel
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。