hadoop - Databricks是否为给定的群集和数据集提供建议的 Spark 参数?

标签 hadoop apache-spark apache-spark-sql databricks bigdata

我刚刚创建了一个7节点的Spark集群,每个工作人员具有8GB内存和4个内核。它不是一个巨大的集群,但是失败了,结果为“超出了GC开销限制”
一个简单的Terasort仅需10GB的数据。

我想知道如何确定Spark群集的这些基本参数,以使作业不会随着数据大小的增长而失败。

  • 执行者数量
  • 分区数
  • 并行性
  • 执行程序核心
  • 执行程序内存

  • 我不介意如果配置不正确,但作业运行缓慢,但是由于内存不足而导致的进程崩溃是一个很大的危险信号。

    最佳答案

    某些信息,例如Spark版本,输入格式(文本,拼花,兽人),压缩等肯定会有所帮助。

    简而言之,以下通常是经验法则。

  • num-executors-这是您的整个集群将为此工作投入的执行者总数。执行程序可以包含一个或多个任务。人们会倾向于认为一个节点=一个执行者。每个节点最好有一个以上的执行器。稍后在答案中对此进行更多说明。
  • executor-cores-这是每个执行者的内核(任务)总数。在您的情况下,起点是每个执行者4个核心(即每个节点)。
  • 执行程序内存-每个执行程序的总内存。执行程序中的所有任务或核心都共享该属性。

  • 最可能的配置(但效果较差)
    num-executors = 7,executor-cores = 4,executor-memory = 8g
    在这种情况下,一个执行程序由4个任务共享。如果其中之一失败,则整个执行程序都标记为失败。

    更好的配置
    num-executors = 14(每个节点2个),executor-cores = 2(每个执行者2个),executor-memory = 3g(每个执行者3g,其余2g供其余过程使用)

    请注意,每个执行者1个内核也不是很好,因为在这种情况下执行者启动时间可能过多。

    在这种情况下,您将分配资源以避免杀死整个执行程序。

    平行性
    这取决于您输入数据的格式。

    关于hadoop - Databricks是否为给定的群集和数据集提供建议的 Spark 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316640/

    相关文章:

    hadoop - 在具有相同大小但内容不同的 hdfs 上同步文件

    apache-spark - Apache Spark - 访问 RDD 上的内部数据?

    java - 如果存储在键上的值匹配,如何合并 Spark 中的两个 RDD

    Elasticsearch-hadoop & Elasticsearch-spark sql - 语句扫描和滚动的跟踪

    hadoop - 在 Amazon EMR 上使用 Hadoop 流处理整个文件

    mysql - 如何高效地将 MySQL 表读入 Apache Spark/PySpark?

    python - 是否有任何功能可以定位 PySpark 数据框列中的所有事件?

    apache-spark - 如何在范围内划分数字列并为 apache spark 中的每个范围分配标签?

    hadoop - 如何从hadoop的临时文件中获取数据?

    apache-spark - 在pyspark中将字符串列表转换为二进制列表