2016-11-30 42 views
2

我正嘗試在所有從屬機器上使用pip install來更新正在運行的EMR羣集。我怎樣才能做到這一點?在EMR從站上運行命令?

我不能用bootstrap步驟來做,因爲它是一個長時間運行的EMR,我不能把它取下來。

EMR集羣正在運行Spark &紗線,所以我通常會使用spark slaves.sh,但我無法在主節點上找到該腳本。它安裝在我還沒找到的地方嗎?或者有什麼方法可以安裝它?

我見過其他問題說使用yarn分佈式shell,但我找不到如何做到這一點的工作示例。

順便說一句,集羣正在使用EMR 4.8.0,我認爲Spark 1.6.1。

+0

嘗試像ansible/Saltstack這樣的工具來實現你的目標。或者試試這個linux腳本 - https://hvivani.com.ar/2015/06/19/yarn-execute-a-script-on-all-the-nodes-of-the-cluster/。 – annunarcist

回答

3

您可以從節點運行yarn命令以獲取所有節點的列表,並且您可以使用SSH在所有這些節點上運行命令。就像之前提到的文章一樣,你可以運行類似於

#Copy ssh key(like ssh_key.pem) of the cluster to master node. 
aws s3 cp s3://bucket/ssh_key.pem ~/ 

# change permissions to read 
chmod 400 ssh_key.pem 

# Run a PIP command 
yarn node -list|sed -n "s/^\(ip[^:]*\):.*/\1/p" | xargs -t -I{} -P10 ssh -o StrictHostKeyChecking=no -i ~/ssh_key.pem [email protected]{} "pip install package"