apache-spark - spark:HDFS 块 vs 集群核心 vs rdd 分区
问题描述
我确实对 spark 有疑问:HDFS 块 vs 集群核心 vs rdd 分区。
假设我正在尝试处理 HDFS 中的文件(例如块大小为 64 MB,文件为 6400 MB)。所以理想情况下,它确实有 100 个拆分。
我的集群总共有 200 个核心,我提交的作业有 25 个执行器,每个执行器有 4 个核心(意味着可以运行 100 个并行任务)。
简而言之,我在 rdd 中默认有 100 个分区,并且将运行 100 个内核。
这是一个好方法,还是我应该将数据重新分区到 200 个分区并使用集群中的所有核心?
解决方案
由于您总共有 200 个内核,因此使用所有内核可以提高性能,具体取决于您运行的工作负载类型。
配置您的 Spark 应用程序以使用 50 个执行程序(即 Spark 可以使用所有 200 个内核)。还将您的 spark 拆分大小从 64 MB 更改为 32 MB。这将确保 6400 MB 文件将被划分为 200 个 RDD 分区,因此您的整个集群都可以被它使用。
不要使用重新分区 - 因为它涉及洗牌,所以它会很慢。
推荐阅读
- java - 使用改造 2 在 android 中显示 RecyclerView 中的数据时出错
- amazon-web-services - AWS Cloud Formation 模板失败,并指定了无效的映射表达式参数
- influxdb - InfluxDB:对具有相同时间戳的行进行分组
- c - 函数地址错误
- ios - UITableView 由于在滚动 tableview 的同时重新加载数据而崩溃
- asp.net-mvc - niginx 反向代理背后的 Oauth 服务器应用程序
- hyperlink - Microsoft Flow 超链接在 Outlook 客户端中不起作用
- android - 如何在network-security-config.xml文件Android中动态添加includeSubdomains
- xpages - 如何将富文本附件从一个文档传输到另一个文档
- netsuite - Suitescript 2.0 Netsuite 中的分页