首页 > 其他分享 >EMR修改Core节点EBS卷大小

EMR修改Core节点EBS卷大小

时间:2023-02-03 19:34:02浏览次数:59  
标签:脚本 Core Bootstrap EBS EMR 节点

本文用于修改已创建好的EMR集群Core节点EBS磁盘容量,由于业务场景、成本等多方面考虑,需要周期性的调整Core节点的磁盘容量,但是通过人工调整EBS卷大小非常耗时,本文通过Bootstrap引导脚本扩展新添加Core节点EBS卷大小。

​Core节点EBS扩展配置

通过Bootstrap引导脚本修改Core节点EBS磁盘容量,提升整理HDFS空间。以下为Core节点一块50GB的EBS卷,目标通过配置引导脚本来使新拉起的Core节点EBS卷扩容至100GB的配置流程。改过程通过使用cli修改EBS卷大小的命令,而EMR默认的role是没有该权限的,需要先配置权限。

创建权限策略

需要创建相应权限才可完成EBS磁盘的扩展,权限配置流程如下:

1.       打开 Amazon IAM控制台:

2.       在导航窗格上选择Policies

3.       选择Create policy

4.       选择JSON填写如下策略

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Sid": "VisualEditor0",

            "Effect": "Allow",

            "Action": "ec2:ModifyVolume",

            "Resource": "*"

        }

    ]

}

EMR修改Core节点EBS卷大小_EMR

5.       点击下一步后填写policy Name后完成policy创建

6.       将以上创建的policy添加到EMR_EC2_DefaultRole角色,本文EMRCore节点使用默认EMR_EC2_DefaultRole,请根据实际情况修改。

EMR修改Core节点EBS卷大小_BigData_02

 

2.2、脚本说明

场景需求:只是扩展EMR集群Core节点的一块磁盘,对应的设备名是:/dev/sdb,对应的挂载目录是:/mnt。

本文Bootstrap引导脚本有两个脚本,FirstStageScript.sh作为入口,SecondStageScript.sh作为具体配置脚本,实际配置需修改现有EMR集群引导脚本,如未配置引导脚本则无法实现本文的配置。本文主要通过两个引导脚本完成配置。

FirstStageScript.sh脚本具体内容是:

#!/bin/bash -x

aws s3 cp s3://***/SecondStageScript.sh /home/hadoop/secondstage.sh && bash /home/hadoop/secondstage.sh & exit 0

注:标红部分需要用户配置为自己的S3桶路径。

主体的逻辑在SecondStageScript.sh脚本,扩展逻辑为:初始化环境(定义变量、安装jq工具)→判断集群状态→判断节点角色→获取机器元数据(对应的EBS-ID)→通过使用AWS Cli修改卷大小→扩展分区大小→扩展文件系统大小,SecondStageScript.sh脚本具体内容如下:

#!/bin/bash

sudo yum -y install jq

#定义可用区

region=cn-north-1

#定义目标卷大小

targetcapacity=100

#判断集群状态

while true; do

NODEPROVISIONSTATE=` sed -n '/localInstance [{]/,/[}]/{

/nodeProvisionCheckinRecord [{]/,/[}]/ {

/status: / { p }

/[}]/a

}

/[}]/a

}' /emr/instance-controller/lib/info/job-flow-state.txt | awk ' { print $2 }'`

INSTANCE_ROLE=$(jq .instanceRole /emr/instance-controller/lib/info/extraInstanceData.json)

if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then

sleep 5;

echo "Running my post provision bootstrap"

#判断节点角色

if [ ${INSTANCE_ROLE,,} == '"core"' ]; then

echo "Running my bootstrap on core"

#获取当前节点

instanceId=$(/usr/bin/curl -s http://xxxxx/latest/meta-data/instance-id)

#获取EBS-ID

volumeId=$(aws ec2 describe-instances --region cn-north-1 --instance-ids $instanceId|jq .Reservations[].Instances[].BlockDeviceMappings| jq '.[] | select(.DeviceName=="/dev/sdb") | .Ebs.VolumeId'|sed 's/\"//g')

echo $volumeId

#扩容EBS到100G

aws ec2 modify-volume --region cn-north-1 --volume-id $volumeId --size $targetcapacity

#扩展分区

sleep 10;

sudo growpart /dev/sdb 2

#扩展文件系统

sudo xfs_growfs -d /mnt

fi

exit;

fi

sleep 5;

done

将引导脚本上传至S3

权限配置完成后开始更新上传S3的Bootstrap引导脚本,修改部分如下:

1.       打开 Amazon S3控制台:

2.       在导航窗格上选择Buckets

3.       点击EMR中Bootstrap引导脚本所在存储桶

4.       上传2.2部分的Bootstrap引导脚本上传到该S3

 


EMR修改Core节点EBS卷大小_AWS_03

 

修改集群现有Core节点配置

修改Bootstrap引导脚本无法影响现有集群配置,只有新添加的Core节点实例可以通过Bootstrap引导脚本扩展,现有的Core节点实例需通过手动方式进行扩展,扩展方法可参考AWS的EBS磁盘扩展方法:

​https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html​

 


标签:脚本,Core,Bootstrap,EBS,EMR,节点
From: https://blog.51cto.com/miracle/6036028

相关文章

  • Springboot websocket 的简单使用
    项目结构:引入依赖:"org.springframework.boot:spring-boot-starter-websocket","org.springframework.boot:spring-boot-starter-thymeleaf",启动类:publicclassDem......
  • freebsd13在t430i上安装,2023.02.03
    一、系统安装1,freebsd.org下载stick.img2,写u盘3,u盘启动安装(bsdinstall,sysinstall)二、无线网络1,rc.conf增加wlans_rtwn0="wlan0"......
  • 使用webStrom使用uni-app新建微信小程序
    一、通过官网了解uni-app相关的信息uni-app官网地址:https://uniapp.dcloud.net.cn/已知uni-app微信小程序程序创建需要使用HBuilderX或者cli进行创建,再到微信开发者工具......
  • 第16章 发布和部署应用程序(ASP.NET Core in Action, 2nd Edition)
    本章包括发布ASP.NETCore应用程序在IIS中托管ASP.NETCore应用程序自定义ASP.NETCore应用程序的URL通过捆绑和缩小优化客户端资产到目前为止,我们在这本书中涵盖了......
  • .NET Core 3.1 通过 Web Service 读写 Salesforce 数据
    1.下载WSDL文件.   2.项目右键->添加->服务引用->WCFWebService,选择刚才下载的WSDL文件,修改命名空间为Salesforce.Core,最后勾选生成同步操作......
  • Spring Boot + WebSocket 实时监控异常
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • WebSphere Liberty for developers
    WebSphereLibertyfordevelopersDownloadAbstractThelightweightWebSphereLibertyisproduction-readyanddesignedfordevelopers.......
  • ASP.NET Core+Element+SQL Server开发校园图书管理系统(三)
    随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NETCore也应运而生。本文主要基于ASP.NETCore+Element+SqlServer开发一个校园图书管理系统为例,简述基于MVC三......
  • ASP.NET Core 6.0 基于模型验证的数据验证
    https://zhuanlan.zhihu.com/p/551581094 1.1、数据验证的场景比较传统的验证方式如下:publicstringTraditionValidation(TestModelmodel){if(string.IsNul......
  • efcore 问题集
    一、迁移    ①、数据迁移1、错误信息(附截图): Couldnotloadassembly'xxx.EntityFramework'.Ensureitisreferencedbythestartupproject'xxx.api'.......