Spark-1.0.0 standalone分布式安装教程

  Spark目前支持多种分布式部署方式:1、Standalone Deploy Mode;二Amazon EC2、;3、Apache Mesos;4、Hadoop YARN。第一种方式是单独部署,不须要有依赖的资源管理器,其它三种都须要将spark部署到对应的资源管理器上。html

  除了部署的多种方式以外,较新版本的Spark支持多种hadoop平台,好比从0.8.1版本开始分别支持Hadoop 1 (HDP1, CDH3)、CDH四、Hadoop 2 (HDP2, CDH5)。目前Cloudera公司的CDH5在用CM安装时,可直接选择Spark服务进行安装。java

  目前Spark最新版本是1.0.0。linux

  咱们就以1.0.0版本,来看看如何实现Spark分布式集群的安装:web

1、Spark 1.0.0须要JDK1.6或更高版本,咱们这里采用jdk 1.6.0_31;shell

2、Spark 1.0.0须要Scala 2.10或更高版本,咱们这里采用scala 2.10.3;apache

3、https://spark.apache.org/downloads.html 下载合适的bin包来安装,咱们这里选择CDH4版本的spark-1.0.0-bin-cdh4.tgz;下载到tongjihadoop165上;分布式

4、解压bin包:tar –zxf spark-1.0.0-bin-cdh4.tgz;oop

5、重命名:mv spark-1.0.0-bin-cdh4 spark-1.0.0-cdh4;ui

6、cd spark-1.0.0-cdh4 ;spa

  mv ./conf/spark-env.sh.template ./conf/spark-env.sh

7、vi ./conf/spark-env.sh 添加如下内容:

  export SCALA_HOME=/usr/lib/scala-2.10.3

  export JAVA_HOME=/usr/java/jdk1.6.0_31

  export SPARK_MASTER_IP=10.32.21.165

  export SPARK_WORKER_INSTANCES=3

  export SPARK_MASTER_PORT=8070

  export SPARK_MASTER_WEBUI_PORT=8090

  export SPARK_WORKER_PORT=8092

  export SPARK_WORKER_MEMORY=5000m

 

  SPARK_MASTER_IP这个指的是master的IP地址;SPARK_MASTER_PORT这个是master端口;SPARK_MASTER_WEBUI_PORT这个是查看集群运行状况的WEB UI的端口号;SPARK_WORKER_PORT这是各个worker的端口    号;SPARK_WORKER_MEMORY这个配置每一个worker的运行内存。

8、vi ./conf/ slaves  每行一个worker的主机名,内容以下:

      10.32.21.165

  10.32.21.166

  10.32.21.167

9、(可选) 设置 SPARK_HOME 环境变量,并将 SPARK_HOME/bin 加入 PATH:

       vi /etc/profile ,添加内容以下:

       export SPARK_HOME=/usr/lib/spark-1.0.0-cdh4

export PATH=$SPARK_HOME/bin:$PATH

10、将tongjihadoop165上的spark复制到tongjihadoop166和tongjihadoop167上:

  sudo scp -r hadoop@10.32.21.165:/usr/lib/spark-1.0.0-cdh4  /usr/lib

  安装scala时也能够这样远程拷贝文件并修改环境变量文件/etc/profile,改完以后别忘了source。

11、执行   ./sbin/start-all.sh    启动spark集群;

  若是start-all方式没法正常启动相关的进程,能够在$SPARK_HOME/logs目录下查看相关的错误信息。其实,你还能够像Hadoop同样单独启动相关的进程,在master节点上运行下面的命令:

  在Master上执行:./sbin/start-master.sh

  在Worker上执行:./sbin/start-slave.sh 3 spark://10.32.21.165:8070 --webui-port 8090

12、检查进程是否启动,执行jps命令,能够看到Worker进程或者Master进程。而后能够在WEB UI上查看http://tongjihadoop165:8090/能够看到全部的work 节点,以及他们的 CPU 个数和内存等信息。

十3、Local模式运行demo

  好比:./bin/run-example SparkLR 2 local   或者  ./bin/run-example SparkPi 2 local

  这两个例子前者是计算线性回归,迭代计算;后者是计算圆周率

十4、启动交互式模式:./bin/spark-shell --master spark://10.32.21.165:8070 , 若是在conf/spark-env.sh中配置了MASTER(加上一句export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}),就能够直接用  ./bin/spark-shell启动了。

  spark-shell做为应用程序,是将提交做业给spark集群,而后spark集群分配到具体的worker来处理,worker在处理做业的时候会读取本地文件。

  这个shell是修改了的scala shell,打开一个这样的shell会在WEB UI中能够看到一个正在运行的Application,以下图:

  最下面的是运行完成的Applications,workers列表是集群的节点列表。

  咱们能够在这个打开的shell下对HDFS上的数据作一些计算,在shell中依次输入:

  A、val file = sc.textFile("hdfs://10.32.21.165:8020/1639.sta")  #这是加载HDFS中的文件

  B、file.map(_.size).reduce(_+_)         #这是计算文件中的字符个数    

  运行状况,以下图:

 

       最终结果能够看出有346658513个字符。速度很是快用时不到3s。

  或者B阶段执行val count = file.flatMap(line => line.split("\t")).map(word => (word, 1)).reduceByKey(_+_) 和count.saveAsTextFile("hdfs://10.32.21.165:8020/spark") 将计算结果存储到HDFS上的/spark目录下。

  也能够执行./bin/spark-shell --master local[2] ,启动一个本地shell ,[2]能够指定线程数,默认是1。

  执行exit能够退出shell。

十5、执行   ./sbin/stop-all.sh   中止spark集群

       也能够经过单独的进程的stop脚本终止

 

 

注意:三台机器spark所在目录必须一致,由于master会登录到worker上执行命令,master认为workerspark路径与本身同样。

 

参考:

一、  http://www.linuxidc.com/Linux/2014-06/103210p2.htm

二、  http://spark.apache.org/docs/latest/

三、  http://blog.csdn.net/myrainblues/article/details/22084445

相关文章
相关标签/搜索