1. 程式人生 > >在aws的ec2上部署spark

在aws的ec2上部署spark

在spark官網上有詳細的在ec2上部署spark的教程。

在併發程式設計網上也有相關中文教程

但是在使用情況下還是遇到了不少問題。

特別提醒,這種部署方式是要錢的!!!別問我是怎麼知道,看著信用卡我吃土!官方文件沒有說明收費問題,我當時也好奇免費套餐配置很低,這麼配置後居然工作例項配置那麼高,可惜我當時一股腦在解決問題上,沒有細究,後來才知道配置過程中要你的身份驗證檔案就是為了無感申請有償的伺服器!~~~

首先,accessid和金鑰對不是一個概念,我就是弄錯了,所以一直登入不上。

然後,在執行指令碼過程中,一些錯誤忘記記錄了,主要是一個連線spark叢集的錯誤:

Copying SSH key /home/tj/private/aws_spark.pem to master...
ssh: connect to host ec2-***-***-***-***.compute-1.amazonaws.com port 22: Connection refused
Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/tj/private/aws_spark.pem

[email protected]***-***-***-***.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned non-zero exit status 255, sleeping 300
ssh: connect to host ec2-***-***-***-***.compute-1.amazonaws.com port 22: Connection refused
Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/tj/private/aws_spark.pem
[email protected]
***-***-***-***.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned non-zero exit status 255, sleeping 300
ssh: connect to host -***-***-***-***.compute-1.amazonaws.com port 22: Connection refused
Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/tj/private/aws_spark.pem
[email protected]
***-***-***-***.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned non-zero exit status 255, sleeping 300
ssh: connect to host ec2-54-158-110-92.compute-1.amazonaws.com port 22: Connection refused
Traceback (most recent call last):
  File "./spark_ec2.py", line 925, in <module>
    main()
  File "./spark_ec2.py", line 766, in main
    setup_cluster(conn, master_nodes, slave_nodes, zoo_nodes, opts, True)
  File "./spark_ec2.py", line 406, in setup_cluster
    ssh(master, opts, 'mkdir -p ~/.ssh')
  File "./spark_ec2.py", line 712, in ssh
    raise e
subprocess.CalledProcessError: Command 'ssh -t -o StrictHostKeyChecking=no -i /home/tj/private/aws_spark.pem [email protected]***-***-***-***.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned non-zero exit status 255

報錯很清楚,就是無法連線到對應主機,我單獨執行命令也的確不能ssh過去。

嘗試多種方式,包括去除密碼校驗等,後來發現過一段時間就能ssh過去,就懷疑是例項啟動後還有很多程序沒起來。

然後就修改了對應的程式碼,主要是修改了部署指令碼目錄下的spark_ec2.py檔案,將啟動例項後等待的時間加長,如下兩行命令,將原等待命令註釋,增加修改。

575   ########################time.sleep(wait_secs)
576   time.sleep(600)

主要修改了wait_for_cluster函式中,將本來等待wait_secs數值改為600,也就是10分鐘。

果然就部署成功了。