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

    xiaoxiao2023-12-30  155

    本节书摘来异步社区《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 相关资源:Apache Spark 2.x Machine Learning Cookbook
    最新回复(0)