写点什么

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

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

    阅读完需:约 9 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

在托管的 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:28678

评论

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

搭建开发年赚千万的体育赛事直播平台:关键资源与实施策略

软件开发-梦幻运营部

详解网络知识:iptables规则

华为云开发者联盟

开发 华为云 华为云开发者联盟 云容器网络

GaussDB(for MySQL) Serverless全面商用:无感弹性,极致性价比

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云Serverless 华为云GaussDB(for MySQL)

编写高效的代码,你应该了解Array、Memory、ReadOnlySequence

EquatorCoco

编程语言 代码 编程技巧

ETL数据集成工具DataX、Kettle、ETLCloud特点对比

RestCloud

kettle ETL DataX 集成工具 ETLCloud

一线管理者手中有哪些牌

芃篙君

管理

区块链游戏解说: DeFi Kingdoms

Footprint Analytics

defi 区块链游戏 链游

低代码开发:改变企业办公模式的创新之道

快乐非自愿限量之名

低代码 数字化 企业转型

低代码,提高软件开发效率,协同办公更高效

高端章鱼哥

低代码

项目开发常用的技术栈有哪些?

这我可不懂

软件开发 低代码 前端框架

PolarDB-X的XPlan索引选择

阿里云数据库开源

数据库 阿里云 索引 polarDB PolarDB-X

IPQ9574 and IPQ6010 WiFi7 and WiFi6 represent chips - differences in performance and functionality.

wifi6-yiyi

WiFi7 ipq9574

已解决MemoryError异常的正确解决方法,亲测有效!!!

小明Java问道之路

淘宝商品详情API接口封装和解析

tbapi

淘宝商品详情数据接口 淘宝商品详情解析

跨界协作:借助gRPC实现Python数据分析能力的共享

不在线第一只蜗牛

Python gRPC RPC

运维工作新时代:自主编码实现运维自动化的转型之旅

京东零售技术

运维 自动化运维

re:invent 2023 Amazon Q 初体验

亚马逊云科技 (Amazon Web Services)

re:Invent 亚马逊云科技 Amazon Q

扫码即可快速协作:草料二维码底部协作面板功能详解

草料二维码

公链技术开发公司

西安链酷科技

公链开发

The Sandbox NFT 概览与数据分析

Footprint Analytics

区块链游戏 NFT 链游

为什么老有人想让我们“程序员”失业?

互联网工科生

程序员 开发工具

多线程系列(一) -线程技术入门知识讲解

快乐非自愿限量之名

Java 多线程 编程开发

【开工大吉】推荐4款开源、美观的WPF UI组件库

快乐非自愿限量之名

开源 UI WPF

[转]Arthas 3.5.1发布:神级特性!内存搜索对象

虚实的星空

转载

如何将“龙”插入到富文本编辑器中?

OpenTiny社区

开源 前端 低代码 组件库

低代码开发与网络信息安全:构建高效防护体系

不在线第一只蜗牛

软件开发 低代码 网络 低代码开发

开源软件:推动软件开发行业繁荣的关键力量

EquatorCoco

开源 软件开发

软件测试学习笔记丨性能统计工具

测试人

软件测试 性能测试 自动化测试 测试开发

极速提升软件测试效率:揭秘Web自动化三大等待技巧

测试人

软件测试 自动化测试 测试开发

聊聊几个最热门的前端框架

伤感汤姆布利柏

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