运行 Hadoop 集群的全面指南
1. 集群规模与调优
EMR 集群的规模取决于数据集大小、文件和块的数量(决定分割数)以及工作负载类型。一般来说,应尽量避免任务内存不足时将数据溢出到磁盘。理想的集群规模是能最大化并行性的规模。每个实例的映射器和归约器数量以及每个 JVM 守护进程的堆大小,通常在集群配置时由 EMR 进行配置,并在可用资源发生变化时进行调整。
除了针对 EMR 集群的特定调优,在任何类型的集群上运行工作负载时,还需考虑以下通用要点:
- JVM 考虑因素
- 应运行 64 位版本的 JVM 并使用服务器模式。虽然生成优化代码的时间可能较长,但它采用更激进的策略,并会随着时间重新优化代码,更适合像 Hadoop 进程这样的长期运行服务。
- 要为 JVM 分配足够的内存,以防止过于频繁的垃圾回收(GC)暂停。目前,并发标记 - 清除收集器是 Hadoop 最经过测试和推荐的收集器。自 JDK7 引入以来,G1 收集器在许多其他工作负载中已成为首选的 GC 选项,因此值得关注其最佳实践的发展。这些选项可以在 Cloudera Manager 中每个服务的配置部分作为自定义 Java 参数进行配置。
-
小文件问题
Hadoop 针对大文件和大文件块进行了优化,但有时特定的工作负载或数据源会将许多小文件推送到 HDFS。这可能会导致效率低下,因为每个处理块的任务在完成前只能读取少量数据。此外,大量小文件会消耗更多的 NameNode 内存,因为 NameNode 需要在内存中保存文件到块的映射以及每个文件和块的元数据。如果文件和块的数
Hadoop集群运行的全面指南与实践
超级会员免费看
订阅专栏 解锁全文
878

被折叠的 条评论
为什么被折叠?



