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 클러스터에 추가 소프트웨어를 설치하기 위한 부트스트랩 작업 생성