IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Spark1.0.0 on Standalone 模式部署

    book_mmicky发表于 2014-05-13 15:22:50
    love 0
    1:Spark1.0.0 Standalone Mode安装
    A:部署包生成
    首先,官网 http://d3kbcqa49mib13.cloudfront.net/spark-1.0.0.tgz 下载源代码,解压后切换到源码目录,运行部署包生成程序make-distribution.sh

    $ ./make-distribution.sh --hadoop 2.2.0 --with-yarn --tgz

    spark源码根目录下的make-distribution.sh可以带以下参数:
    • --hadoop VERSION:打包时所用的Hadoop版本号,不加此参数时hadoop版本为1.0.4。
    • --with-yarn:是否支持Hadoop YARN,不加参数时为不支持yarn。
    • --with-hive:是否在Spark SQL 中支持hive,不加此参数时为不支持hive。
    • --skip-java-test:是否在编译的过程中略过java测试,不加此参数时为略过。
    • --with-tachyon:是否支持内存文件系统Tachyon,不加此参数时不支持tachyon。
    • --tgz:在根目录下生成 spark-$VERSION-bin.tgz,不加此参数时不生成tgz文件,只生成/dist目录。
    • --name NAME:和--tgz结合可以生成spark-$VERSION-bin-$NAME.tgz的部署包,不加此参数时NAME为hadoop的版本号。
    • 注意参数的顺序要按上面的顺序来
    运行成功后,在根目录下生成名为spark-1.0.0-bin-2.2.0.tgz的部署包,该部署包含有支持hadoop2.2.0的Spark应用程序包和spark例程。笔者在百度云盘pan.baidu.com/s/1dDmqK4h#dir/path=%2Fdeploy上分享了spark1.0.0的部署包、支持tachyon0.41的部署包和支持hive的部署包。

    B:规划
    虚拟机hadoop1(IP地址为192.168.1.171)作为Master
    虚拟机hadoop1(IP地址为192.168.1.171)、hadoop2(IP地址为192.168.1.172)、hadoop3(IP地址为192.168.1.173)作为slave
    由于hadoop1、hadoop2、hadoop3之前已经安装了hadoop2.2.0集群,所以省却了安装JAVA、建立用户hadoop的SSH无密码登录过程。当然,Spark集群可以独立于hadoop集群外安装,但是需要安装JAVA、建立SSH无密码登录。关于JAVA安装和建立SSH无密码登录可以参照hadoop2.2.0测试环境搭建。另外,为了避免Spark应用程序要打包scala包(详见Spark1.0.0 多语言编程之Scala实现),在集群的每个节点上安装了scala2.10.4(安装目录/app/scala2104)。

    C:在Master上生成安装目录
    将生成的spark-1.0.0-bin-2.2.0.tgz文件复制到Master(即hadoop1)上并解压
    [root@hadoop1 hadoop]# tar zxf spark-1.0.0-bin-2.2.0.tgz
    [root@hadoop1 hadoop]# mv spark-1.0.0 spark100
    [root@hadoop1 hadoop]# cd spark100
    [root@hadoop1 spark100]# ls -lsa

         
    D:配置集群文件
    [root@hadoop1 spark100]# vi conf/slaves
    [root@hadoop1 spark100]# cat conf/slaves 

    hadoop1

    hadoop2 hadoop3

    [root@hadoop1 spark100]# cp conf/spark-env.sh.template conf/spark-env.sh
    [root@hadoop1 spark091]# vi conf/spark-env.sh
    [root@hadoop1 spark091]# cat conf/spark-env.sh

    export SPARK_MASTER_IP=hadoop1

    export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=1 export SPARK_WORKER_INSTANCES=1 export SPARK_WORKER_MEMORY=1g

    另外设置一下操作系统的环境变量,然后source一下
    [root@hadoop1 spark100]# vi /etc/profile
    [root@hadoop1 spark100]# source /etc/profile

    export SCALA_HOME=/app/scala2104

    export SPARK_HOME=/app/hadoop/spark100

    export PATH=$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH


    E:派发安装文件到slaves
    [root@hadoop1 spark100]# cd ..
    [root@hadoop1 hadoop]# chown -R hadoop:hadoop spark100
    [root@hadoop1 hadoop]# su - hadoop
    [hadoop@hadoop1 ~]$ cd /app/hadoop/
    [hadoop@hadoop1 hadoop]$ scp -r spark100 hadoop2:/app/hadoop/
    [hadoop@hadoop1 hadoop]$ scp -r spark100 hadoop3:/app/hadoop/

    F:启动集群
    在Master主机hadoop1上启动spark standalone集群
    [hadoop@hadoop1 hadoop]$ cd spark100
    [hadoop@hadoop1 spark100]$ sbin/start-all.sh
    通过浏览器访问http://hadoop1:8080可以监控spark Standalone集群

     
    2:测试
    最好的spark测试程序就是spark-shell了,关于spark-shell,在spark1.0.0有了较大的变动,会在专门的章节里加以描述,然后给以链接。
    在本实验standalone集群中,设置了3个节点,每个节点一个worker实例,每个worker实例使用1个core和3G内存。下面将启动2个spark-shell客户端:
    • 前者运行在standalone集群中的hadoop1上,后者运行在standalone集群外的客户端wyy上。
    • 前者的executor使用缺省的内存;后者executor使用2g内存。
    • 前者的executor使用2个core;后者不加限制,因为整个集群总共3个core,前者使用了2个,所以后者只能使用1个。如果前者的spark-shell不限制core的话,会使用掉3个core,导致第二个spark-shell将无法申请到资源,处于等待状态。
    A:在集群中启动spak-shell
    [hadoop@hadoop1 spark100]$ bin/spark-shell --master spark://hadoop1:7077  --total-executor-cores 2
    B:在集群外一台ubuntu客户端wyy上启动spak-shell(注意配置文件和集群中的一致)
    hadoop@wyy:/app/hadoop/spark100$ bin/spark-shell --master spark://hadoop1:7077 --executor-memory 2g
    C:监控spark集群


     



沪ICP备19023445号-2号
友情链接