我正在使用数据中心群集进行火花处理。我是整个谷歌云的新手。在我们的应用程序中,我们有100个使用数据流的作业。对于每个作业,我们都会生成新的集群,并在作业结束后终止它。我正在使用pyspark进行处理。
对时间和价格优化的任何帮助表示赞赏。提前谢谢。
由于
和Manish
答案 0 :(得分:2)
使用稳定节点和可抢占节点的混合来降低成本是否安全?
这绝对没问题。我们已经在300多个节点集群上使用了它,只有在节点被抢占时长期运行的集群才出现问题,并且未优化作业以考虑节点回收(没有RDD复制,大量长期运行的DAG)。此外,Tez不喜欢可抢占的节点被回收。
它是否适用于dataroc集群或需要其他东西?
正确。但是,当涉及到操作延迟时,Google Storage驱动程序具有不同的特性(例如,FileOutputCommitter在尝试递归移动或使用超分区输出移除时可能会花费大量时间)和内存使用(写入缓冲区为64 Mb vs 4 Kb on HDFS)。
当我们处理大小为150GB的avro格式数据时,哪种实例类型最适合数据堆群。
只有性能测试可以帮助解决这个问题。
我已尝试使用spark的数据帧缓存/持久进行时间优化。但它并没有那么有用。有没有办法指示火花,整个资源(内存,处理能力)属于这个工作,以便它可以更快地处理它?</ p>
确保使用动态分配,并根据您的工作负载调整群集大小。 YARN UI中的“调度”选项卡应显示利用率接近100%(如果不是,您的群集超大到作业,或者您没有足够的分区)。在Spark UI中,最好让数量正在运行的任务接近核心数量(如果没有,则可能是分区不够,或者群集超大)。
读取和写回GCS存储桶是否会影响性能?如果是,有什么方法可以优化它吗?
从吞吐量的角度来看,GCS并不差,但是对于许多小文件来说情况要糟糕得多,无论是从阅读(计算拆分)到编写(当FileOutputCommitter)的角度来看。由于更大的写缓冲区大小,许多并行写操作也会导致OOM。