写点什么

动态扩展 Amazon EMR 集群上的存储

  • 2020-03-13
  • 本文字数:2609 字

    阅读完需:约 9 分钟

动态扩展 Amazon EMR 集群上的存储

在托管的 Apache Hadoop 环境(如


Amazon EMR 集群)中,当集群中的存储容量用满时,没有方便的办法处理该问题。出现这种情况的原因是,您设置了


Amazon Elastic Block Store (Amazon EBS) 卷,并在启动集群时配置了挂载点,因此很难在集群运行后修改存储容量。可行的解决方案通常有:向集群添加更多节点,将数据备份到数据湖,然后启动具有更高存储容量的新集群。如果占用存储的数据可舍弃,也可删除多余的数据。下面将演示如何使用 Amazon EBS 的


_弹性卷_功能的存储动态扩展来处理此问题。利用此功能,您可以增加卷大小、调整性能或在卷使用过程中更改卷类型。在更改生效期间,您可以继续使用 EMR 集群运行大数据应用程序。

HDFS 和 YARN 如何使用 Amazon EMR 集群上的磁盘空间

默认情况下,创建 Amazon EMR 集群时,HDFS(Hadoop 分布式文件系统)和 YARN 会配置为使用所有核心/任务节点上的本地磁盘存储。您可以在 yarn-site.xml 和 hdfs-site.xml 配置文件中对此进行配置。


具体而言,对于 HDFS,在 dfs.datanode.data.dir 参数中配置使用本地存储。对于 YARN,yarn.nodemanager.local-dirs 参数将配置为存储 NodeManager 运行 YARN 容器所需的中间文件。


例如,当集群运行 MapReduce 作业时,映射任务将其输出文件存储在 yarn.nodemanager.local-dirs 定义的目录中。此外,yarn.nodemanager.log-dirs 参数还配置 YARN 应用程序日志的存储位置。

避免存储问题的常用最佳实践

当您规划在 Amazon EMR 集群上运行的作业时,请参见以下这些避免超出集群可用存储的实用技巧。


规划您未来的存储需求


提前规划作业的存储需求。当您使用默认存储配置启动集群时,它可能无法满足您的工作负载要求,并且您可能会在运行作业时遇到问题。最好估计一下作业所需的中间存储空间。在此基础上,您可以在启动新集群时自定义存储配置。


将被动数据存储在数据湖中


尝试将您的工作负载设计为将所有被动数据存储在 Amazon Simple Storage Service (Amazon S3)数据湖中。这样,您可以仅将集群用于数据处理、执行其他计算任务,并将结果重新存储到数据湖以便永久存储。这种方法最大程度地减少了运行集群的存储要求。


规划更多容量


如果您的使用案例要求输入或输出数据存储在集群本地(HDFS 或本地存储),则您应据此规划集群大小。例如,如果使用 HDFS,则可以创建具有更多核心节点的集群,以便为存储数据提供足够空间。或者,可以自定义核心实例组,使其具有比默认配置更多的 EBS 存储容量。

存储达到最大容量时可能出现的问题

随着 EMR 集群用于运行各种不同的数据处理应用程序,在某一刻,集群上的存储容量可能会耗尽。在这种情况下,会出现一些可能会影响集群的问题,如下所示。

YARN 方面的问题

如果 yarn.nodemanager.local-dirs 或 yarn.nodemanager.log-dirs 参数定义的目录占满了卷总存储容量的 90%时,NodeManager 会将该磁盘标记为不正常。然后,此操作会导致 NodeManager 也将拥有这些磁盘的节点标记为不正常。如果节点不正常,ResourceManager 将不会向该节点分配任何容器。


此外,如果在 EMR 集群上关闭了终止保护功能,EMR 服务最终将终止集群中的此节点。

HDFS 方面的问题

如果集群上的 HDFS 使用量增加,相应的 EBS 卷上的本地存储使用量也会增加。在 EMR 中,HDFS 数据目录配置在与 YARN 本地目录和日志目录相同的挂载点下。因此,如果由于 HDFS 而导致挂载点的使用量超出存储阈值 (90%),则会再次导致 YARN 将该磁盘标记为不正常,而且 ResourceManager 会将该节点列入黑名单。

动态调整核心节点和任务节点上的存储空间

可以使用下面链接里的 Bootstrap Actions 脚本来实现动态增加集群中核心节点和任务节点的存储:


s3://aws-bigdata-blog/artifacts/resize_storage/resize_storage.sh


(https://aws-bigdata-blog.s3.amazonaws.com/artifacts/resize_storage/resize_storage.sh )


脚本执行的方法请参考下面链接:


https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html


另外,集群的 EC2 实例配置文件还必须具有 ec2:ModifyVolume 权限才能调整卷的大小。


该脚本在 EMR 集群的所有节点上运行。它会在节点上配置 cron 作业,并每 2 分钟检查一次磁盘利用率。在主节点上,它会对 root 卷和存储各种主守护程序日志的卷进行检查。在核心节点和任务节点上,它会对 YARN 和 HDFS 使用的卷执行检查,并确定是否需要扩展存储。


当它确定卷超出其使用量的 90% 时,该卷将按照“–scaling-factor”参数指定的百分比进行大小扩展。在调整大小过程中,卷的分区将会扩展,并且文件系统也会扩展并反映更新后的容量。所有这些操作在执行时都不会影响集群上运行的应用程序。


在使用此解决方案之前,请考虑以下注意事项:


  • 只有当 EMR 集群使用 EBS 卷作为其存储后端时,才能扩展该集群中节点的存储容量。某些 EC2 实例类型只使用实例存储卷,或者同时使用实例存储卷和 EBS 卷。无法调整使用此类 EC2 实例类型的集群的存储容量。

  • 当您使用脚本的 scaling-factor 选项时,请提前规划好增加的卷大小。扩展存储后,必须至少等待 6 小时,才能再次对同一卷进行修改。

小结

本博文介绍了 HDFS 和 YARN 如何使用 Amazon EMR 集群节点上的本地存储。还介绍了如何使用 Amazon EBS 的弹性卷功能扩展 EMR 集群上的存储。您可以利用此功能增加卷大小、调整性能或在卷使用过程中更改卷类型。在更改期间,您可以继续使用 EMR 集群运行大数据应用程序。


相关参考:


  1. 巧用 Amazon EMR 节省数据分析成本


https://amazonaws-china.com/cn/blogs/china/emr-reduce-cost/


  1. 手把手教你使用 Amazon EMR 进行交互式数据查询


https://amazonaws-china.com/cn/blogs/china/amazon-emr/


  1. 通过 Amazon EMR 重新配置动态修改集群


https://amazonaws-china.com/cn/blogs/china/modifying-your-cluster-on-the-fly-with-amazon-emr-reconfiguration/


  1. 为什么我的 Amazon EMR 集群中的核心节点的磁盘空间不足?


https://amazonaws-china.com/cn/premiumsupport/knowledge-center/core-node-emr-cluster-disk-space/




作者介绍:


Jigar Mistry 是 Amazon Web Services 的 Hadoop 系统工程师**。他与客户合作,为他们提供使用开源应用程序在云中处理大型数据集方面的架构指导和技术支持。在闲暇时间,他喜欢露营和光顾西雅图地区不同的餐馆。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/dynamically-scale-up-storage-on-amazon-emr-clusters/


2020-03-13 17:28741

评论

发布
暂无评论
发现更多内容

TiDB 三中心"脑裂"场景探讨

TiDB 社区干货传送门

如何专业、正确地使用LED租赁屏

Dylan

技术 音乐 视觉 LED LED显示屏

小米汽车 27 分钟大定破突破 5 万台;中国在全球率先商用 5.5G 丨 RTE 开发者日报 Vol.174

声网

IPQ6018, IPQ6010, IPQ6000-Exploring the high-performance WiFi chip series

wifi6-yiyi

wifi6 IPQ6010

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 社区干货传送门

站群服务器优化技巧:提升网站速度与搜索引擎排名

一只扑棱蛾子

站群服务器

用百度和神策做埋点为何pv差异很大?

ClkLog

数据分析 开源软件 用户画像 埋点分析系统

值得思考的两个测试面试题

老张

软件测试 面试经验

三思超100㎡ P0.9 8K LED大屏登陆广东佛山丨一屏控全局

电子信息发烧客

从银行资产规模看TiDB上线杭州银行核心到底意味着什么?

TiDB 社区干货传送门

数据库前沿趋势

我和 TiDB 的故事:十年理财之路之 TiDB 如何让我收益达到30万的

TiDB 社区干货传送门

新版本/特性解读

cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

MySQL索引优化:选择合适的索引类型

gogo

一文读懂,新质生产力!

天津汇柏科技有限公司

新质生产力

吴晓波频道:基于数据飞轮更懂会员需求 提升业务价值

Geek_2d6073

tiup与prometheus迁移

TiDB 社区干货传送门

迁移 管理与运维

TiDB 7.5.1 资源管控测试

TiDB 社区干货传送门

性能测评 7.x 实践

消息队列的七种经典应用场景

不在线第一只蜗牛

消息队列

深入浅出:易懂的 Windows 平台 cURL 命令使用教程

Liam

Java 程序员 后端 API curl

如何提高知识库系统管理水平?

秃头小帅oi

通过TiOperator恢复共享存储备份数据

TiDB 社区干货传送门

迁移 集群管理 管理与运维 安装 & 部署 备份 & 恢复

Arbitrum 为什么能领跑以太坊 Layer 2?

Footprint Analytics

blockchain Layer 2

大模型提示工程之Prompt框架和示例

EquatorCoco

LLM Prompt

软件测试学习笔记丨基于Gitlab的持续集成机制

测试人

软件测试

【4月20日 成都见】MySQL vs TiDB,看看如何利用分布式架构实现更简单,更可靠的应用实践!

TiDB 社区干货传送门

社区活动

阿里云实时计算Flink的产品化思考与实践【下】

Apache Flink

当法式美学遇上鸿蒙生态,Hi畅享70 Pro 5G演绎科技浪漫?

Geek_2d6073

与鲸同行,智领未来!和鲸科技“人工智能+X”学科建设合作交流会(北京站)圆满结束!

ModelWhale

人工智能 大数据 数据科学 实验室 新型基础设施建设

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

华为云开源

开源 云原生 华为云

云服务器几核几G配置应该怎么选择?

Finovy Cloud

服务器 云服务器

亮数据,可视化数据采集强大利器

陈橘又青

数据采集

动态扩展 Amazon EMR 集群上的存储_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章