本节书摘来异步社区《Spark Cookbook 中文版》一书中的第1章,第1.4节,作者: 【印度】Rishi Yadav(亚达夫)译者: 顾星竹 , 刘见康 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.4 在Amazon EC2上部署Spark
Amazon弹性计算云(Amazon EC2)是一个能够提供可变大小的云计算实例的网络服务,Amazon EC2提供以下特性。
- 通过互联网按需提供IT资源。
- 提供足够多的实例。
- 像支付水电费账单一样,按你使用实例的时间付费。
- 没有配置成本,无需安装,没有任何开销。
- 当你不需要实例时,只需关闭或者终止它们即可离开。
- 支持所有常用操作系统。
EC2提供不同类型的实例,以满足所有计算需求,例如通用实例、微实例、内存优化实例、存储优化实例等,并提供微实例的免费试用。
1.4.1 准备工作
Spark绑定的spark-ec2脚本使得在Amazon EC2上安装、管理以及关闭Spark集群变得很容易。
开始之前需要以下准备工作。
1.登录你的Amazon AWS账号(http://aws.amazon.com/cn/)。
2.点击右上角的我的账户下拉菜单中的安全证书。
3.点击访问密钥并创建访问密钥(如图1-2所示)。
4.记下访问密钥ID(Access Key ID)和私有访问密钥(Secret Access Key)。
5.现在,点开服务,点击EC2。
6.点击左侧菜单网络与安全下面的密钥对。
7.如图1-3所示,点击创建密钥对(Create Key Pair),输入kp-spark作为密钥对的名字。
8.下载私钥文件并复制到home/hduser/keypairs文件夹下。
9.设置文件权限许可为600。
10.将公钥ID和密钥ID的设置到环境变量中(请使用你自己的值替换本文的样本)。
$ echo "export AWS_ACCESS_KEY_ID=\"AKIAOD7M2LOWATFXFKQ\"">> /
home/hduser/.bashrc
$ echo "export AWS_SECRET_ACCESS_KEY=\"+Xr4UroVYJxiLiY8DLT4DLT4D4s
xc3ijZGMx1D3pfZ2q\"">> /home/hduser/.bashrc
$ echo "export PATH=$PATH:/opt/infoobjects/spark/ec2">> /home/
hduser/.bashrc
1.4.2 具体步骤
1.Spark绑定了在Amazon EC2上安装Spark集群的脚本。让我们使用以下命令部署集群。
$ cd /home/hduser
$ spark-ec2 -k <key-pair> -i<key-file> -s <num-slaves> launch
<cluster-name>
2.以下列数值为例部署集群。
$ spark-ec2 -k kp-spark -i /home/hduser/keypairs/kp-spark.pem
--hadoop-major-version 2 -s 3 launch spark-cluster
提示
- <密钥对>:这是AWS中创建的EC2密钥对的名字。
- <密钥文件>:这是你下载的私钥文件。
- <从节点库数>:这是部署的从节点的数量。
- <集群名称>:这是集群名字。
3.有时,缺省值可能不可用;在这种情况下,你就需要重发请求来制定特定的可用区域。
$ spark-ec2 -k kp-spark -i /home/hduser/keypairs/kp-spark.pem –z
us-east-1b --hadoop-major-version 2 -s 3 launch spark-cluster
4.如果你的应用需要实例关闭后保留数据,那么就为它增加一个EBS卷(例如一个10GB的空间)。
$ spark-ec2 -k kp-spark -i /home/hduser/keypairs/kp-spark.pem
--hadoop-major-version 2 -ebs-vol-size 10 -s 3 launch spark-
cluster
5.如果你使用的是Amazon spot实例,做法如下。
$ spark-ec2 -k kp-spark -i /home/hduser/keypairs/kp-spark.pem
-spot-price=0.15 --hadoop-major-version 2 -s 3 launch spark-
cluster
提示
Spot实例服务允许你自己定价来租Amazon EC2的计算能力。你只需要竞标Amazon EC2的空闲实例,当你的竞标价格大于当前标价时,你就可以使用该服务。该服务的价格是根据市场供求关系实时变化的(来源:amazon.com)。
6.一切部署完毕后,打开最后打印出来的网页URL来检查集群状态,如图1-4所示。
7.检查集群状态,如图1-5所示。
8.现在,在EC2上使用Spark集群,让我们使用安全外壳协议(SSH)连接到主节点上。
$ spark-ec2 -k kp-spark -i /home/hduser/kp/kp-spark.pem login
spark-cluster
你应该会看到图1-6所示的内容。
9.检查主节点上的目录并查看它们的用途,如表1-2所示。
10.检查临时实例的HDFS版本。
$ ephemeral-hdfs/bin/hadoop version
Hadoop 2.0.0-chd4.2.0
11.使用以下命令检查永久实例的HDFS版本。
$ persistent-hdfs/bin/hadoop version
Hadoop 2.0.0-chd4.2.0
12.改变日志的配置层。
$ cd spark/conf
13.如图1-7所示,默认日志层信息非常冗长,所以我们把它改成Error级别。
重命名模板为log4.properties。
$ mv log4j.properties.template log4j.properties
使用vi或者你喜欢的编辑器打开log4j.properties。
$ vi log4j.properties
把命令行 | log4j.rootCategory=INFO, console|改为log4j.rootCategory= ERROR, console。
14.修改之后将所有配置复制到所有的从节点上。
$ spark-ec2/copydir spark/conf
你应该会得到如图1-8所示的信息。
15.销毁Spark集群。
$ spark-ec2 destroy spark-cluster
1.4.3 参考资料
http://aws.amazon.com/ec2