부트스트랩 작업 후 모든 Amazon EMR 노드를 업데이트하려면 어떻게 해야 하나요?

2분 분량
0

BOOTSTRAPPING 상태가 완료된 후 Amazon EMR 클러스터의 모든 노드를 업데이트하고 싶습니다.

해결 방법

부트스트랩 작업은 Amazon EMR이 Apache Hadoop 및 Apache Spark와 같은 애플리케이션을 설치 및 구성하기 전에 이루어집니다. Amazon EMR이 애플리케이션을 설치 및 구성한 후 모든 클러스터 노드를 변경하려면 부트스트랩 작업 스크립트를 연결하십시오.

노드에 적용하려는 변경 사항을 포함하여 다음 bash 스크립트를 업데이트합니다.

#!/bin/bash
set -xe

EMR_SECONDARY_BA_SCRIPT=$(cat <<'EOF'
while true; do
NODEPROVISIONSTATE=` sed -n '/localInstance [{]/,/[}]/{
/nodeProvisionCheckinRecord [{]/,/[}]/ {
/status: / { p }
/[}]/a
}
/[}]/a
}' /emr/instance-controller/lib/info/job-flow-state.txt | awk ' { print $2 }'`

if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then
sleep 10;
echo "Running my post provision bootstrap"
NODETYPE=$(cat /mnt/var/lib/instance-controller/extraInstanceData.json | jq -r '.instanceRole' | awk '{print tolower($0)}')

if [  "$NODETYPE" == "master" ]
then
echo "In Master"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON PRIMARY NODE######


elif [ "$NODETYPE" == "core"  ]
then
echo "In Core"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON CORE NODE######


elif [ "$NODETYPE" == "task"  ]
then
echo "In Task"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON TASK NODE######

fi

exit;
fi
sleep 10;
done
EOF
)

echo "${EMR_SECONDARY_BA_SCRIPT}" | tee -a /tmp/emr-secondary-ba.sh
chmod u+x /tmp/emr-secondary-ba.sh
/tmp/emr-secondary-ba.sh &> /tmp/emr-secondary-ba.log &
exit 0

참고: 기본적으로 위 스크립트는 hadoop 사용자를 사용합니다. 변경에 권한이 필요한 경우 사용자를 sudo로 업데이트하십시오.

bash 스크립트를 업데이트한 후 스크립트를 부트스트랩 작업 스크립트로 클러스터에 연결합니다.

관련 정보

클러스터 수명 주기 이해

Amazon EMR 클러스터에 추가 소프트웨어를 설치하기 위한 부트스트랩 작업 생성

AWS 공식업데이트됨 7달 전