Spark 1.3.1 部署

来源:互联网 发布:乖离数据下载很慢 编辑:程序博客网 时间:2024/05/16 17:52
参考:http://my.oschina.net/leejun2005/blog/394928

1     安装环境

Spark 1.3.1需要JDK1.6或更高版本,我们这里采用jdk 1.7.0_67

Spark 1.3.1需要Scala 2.10或更高版本,我们这里采用scala 2.11.6

2     部署Hadoop

Spark目前支持多种分布式部署方式:

1、Standalone Deploy Mode

2、Amazon EC2

3、Apache Mesos

4、Hadoop YARN

第一种方式是单独部署(可单机或集群),不需要有依赖的资源管理器,其它三种都需要将spark部署到对应的资源管理器上。本文采用基于Hadoop YARN的部署方式。

Hadoop部署方式参考:http://blog.csdn.net/wenjian68/article/details/37541689

3     安装scala

3.1  下载scala

wget http://downloads.typesafe.com/scala/2.11.6/scala-2.11.6.tgz

3.2  解压文件

tar -zxvf scala-2.11.6.tgz

3.3  配置环境变量

$vim /etc/profile
SCALA_HOME=/usr/local/scala-2.11.6PATH=$PATH:$SCALA_HOME/binecho SACLA_HOMEPATH
$ source/etc/profile

3.4  验证scala

$ scala -versionScala code runnerversion 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
$ scalaWelcome to Scalaversion 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67).Type inexpressions to have them evaluated.Type :help formore information.

4    安装spark

4.1  下载解压

wget http://mirror.bit.edu.cn/apache/spark/spark-1.3.1/spark-1.3.1-bin-hadoop2.6.tgztar -zxvfspark-1.3.1-bin-hadoop2.6.tgz

4.2  配置profile

$vim /etc/profile
export SPARK_HOME=usr/local/jediael/spark-1.3.1export PATH=$PATH:$SPARK_HOME/bin echo SPARK_HOMEPATH
$source/etc/profile

4.3  配置spark-env.sh

$vim $JAVA_HOME/conf/spark-env.sh
export JAVA_HOME=/usr/local/jdk1.7.0_67exportSCALA_HOME=/usr/lib/scala-2.11.6exportSPARK_MASTER_IP=masterexportSPARK_WORKER_INSTANCES=1exportSPARK_WORKER_MEMORY=1024mexportSPARK_MASTER_PORT=8090exportSPARK_MASTER_WEBUI_PORT=8091exportSPARK_WORKER_PORT=8092exportSPARK_WORKER_WEBUI_PORT=8093

4.4  配置slaves

$vim $JAVA_HOME/conf/slaves
slave1

4.5  配置spark-defaults.conf

$vim conf/spark-defaults.conf
spark.master                                    spark://master:8090spark.eventLog.enabled                  truespark.eventLog.dir                           hdfs://master:9000/spark_log

4.6  启动集群

$./sbin/start-all.sh

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

在Master上执行:

./sbin/start-master.sh

在Worker上执行:

./sbin/start-slave.sh 3 spark://master:8090 --webui-port 8091

然后检查进程是否启动,执行jps命令,可以看到Worker进程或者Master进程。然后可以在WEB UI上查看http://masterSpark:8091/可以看到所有的work 节点,以及他们的 CPU 个数和内存等信息。

4.7  Local模式运行demo

比如:

./bin/run-exampleSparkLR 2 local 

 或者  
./bin/run-exampleSparkPi 2 local

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

4.8  shell 交互式模式

./bin/spark-shell--master spark://master:8090

如果在conf/spark-env.sh中配置了MASTER:

exportMASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}

就可以直接用 ./bin/spark-shell启动了。

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

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

5     一个 scala & spark 例子

这个例子首先用shell 生成 150,000,000 个随机数,然后用spark 统计每个随机数频率,以观察随机数是否均匀分布。

shell:

generateNum(){    c=1    while [[ $c -le 5000000 ]]    do        echo $(($RANDOM/500))        ((c++))    done}for i in `seq 3`do    generateNum> ${i}.txt &donewaitecho "--------------- DONE -------------------"cat [0-9]*.txt > num.txt
hadoop fs -put/usr/local/hadoop-2.2.0/data/num.txt /spark

scala:

val file =sc.textFile("hdfs://master:9000//spark//num.txt")val count = file.flatMap(line => line.split("")).map(word => (word, 1)).reduceByKey(_+_)count.sortBy(_._2).map(x => x._1 + "\t" +x._2).saveAsTextFile("hdfs://master:9000//spark//result")

shell:

hadoop fs -cat /spark/result/p* | sort -k2n

0 0
原创粉丝点击