Spark 1.3.1 部署

该博客详细介绍了如何在Hadoop YARN上部署Spark 1.3.1。内容包括安装环境、部署Hadoop、安装Scala,以及详细步骤如下载解压Spark、配置环境变量、启动集群、运行Local模式的demo和shell交互式模式。还提供了一个使用Scala和Spark的随机数频率统计例子。
摘要由CSDN通过智能技术生成
参考: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.6
PATH=$PATH:$SCALA_HOME/bin
echo SACLA_HOMEPATH
$ source/etc/profile

3.4  验证scala

$ scala -version
Scala code runnerversion 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
$ scala
Welcome 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.tgz
tar -zxvfspark-1.3.1-bin-hadoop2.6.tgz

4.2  配置profile

$vim /etc/profile
export SPARK_HOME=usr/local/jediael/spark-1.3.1
export 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_67
exportSCALA_HOME=/usr/lib/scala-2.11.6
exportSPARK_MASTER_IP=master
exportSPARK_WORKER_INSTANCES=1
exportSPARK_WORKER_MEMORY=1024m
exportSPARK_MASTER_PORT=8090
exportSPARK_MASTER_WEBUI_PORT=8091
exportSPARK_WORKER_PORT=8092
exportSPARK_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:8090
spark.eventLog.enabled                  true
spark.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 &
done
wait
echo "--------------- 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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值