《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

本节书摘来异步社区《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所示)。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

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


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

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所示。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

7.检查集群状态,如图1-5所示。

8.现在,在EC2上使用Spark集群,让我们使用安全外壳协议(SSH)连接到主节点上。

$ spark-ec2 -k kp-spark -i /home/hduser/kp/kp-spark.pem  login
  spark-cluster

你应该会看到图1-6所示的内容。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

9.检查主节点上的目录并查看它们的用途,如表1-2所示。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

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级别。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark

重命名模板为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所示的信息。


《Spark Cookbook 中文版》一1.4 在Amazon EC2上部署Spark


15.销毁Spark集群。

$ spark-ec2 destroy spark-cluster

1.4.3 参考资料

http://aws.amazon.com/ec2
上一篇:【译文】AppBarLayout的越界滚动行为


下一篇:剖析nsq消息队列(一) 简介及去中心化实现原理