Centos 7 SBT install - Spark-1.4.1+MLlib的安装和搭建

1. CentOS 7 SBT Install 

curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
sudo yum install sbt


2 Spark 1.4.1 + MLLib 安装和搭建

用户需要搭建一个基于Spark+MLlib的视频处理平台,本文使用虚拟机,先使用虚拟机验证平台搭建的可行性。

1)操作系统版本号为ubuntu-12.04。

2)需要下载/安装的软件如下:spark-1.4.1, scala-2.11.6, SBT,假设存放在用户根目录 “~./” 下,Spark基于函数式编程语言Scala语言开发,所以需要安装Scala;Spark使用SBT编译程序,所以需要安装SBT.

3)Spark+MLlib安装过程

(a)创建Spark安装目录

由于下载的spark安装包自带MLlib插件,所以不需要单独安装MLlib插件。我是在http://spark.apache.org/mllib/   下载的支持mllib的spark安装文件,在网站的右下角可以看到“Download Spark Includes MLlib”下载链接,点击下载。

mkdir ~/spark
cd ~/spark
tar zxvf spark-1.4.1-bin-hadoop2.6.tgz

(b)安装Scala包

下载地址为http:  //www.scala-lang.org/download/2.11.6.html   

 减压安装包  

tar zxvf  scala-2.11.6.tgz

将安装包拷贝到系统安装目录/usr/lib下

mv scala-2.11.6 /usr/lib

在配置文件/etc/profile后添加如下内容

#SCALA
export SCALA_HOME=/usr/lib/scala-2.11.6
export PATH=$PATH:$SCALA_HOME/bin

export SPARK_HOME=/root/spark/spark-1.4.1-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin

并执行如下命令后就可以验证scala是否成功安装

source /ect/profile
scala -version

Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
(c)配置spark环境变量和部署Spark集群环境

首先,配置conf/spark-env.sh

cd ~/spark/spark-2.11.6

若没有改文件,将conf/spark-env.sh重命名,并且添加Java、hadoop、scala路径以及master的ip

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

在文件conf/spark-env.sh末尾添加下述内容

export HADOOP_CONF_DIR=~./data_test/hadoop-2.7.0/etc/hadoop
export SPARK_MASTER_IP=xx.xx.xx.51

export SCALA_HOME=/usr/lib/scala-2.11.6
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
其次,在conf/slaves添加slave节点的hostname,过程如上所述,添加后结果如下

# A Spark Worker will be started on each of the machines listed below.
#localhost

bigdatatest-2

bigdatatest-2位计算节点,master节点为bigdatatest-1。

其次,在所有slave机器上配置spark

将master节点上的hadoop安装文件传输给所有的slave节点,过程如下

cd ~
scp -r spark bigdatatest-2:~./

所有节点使用相同的账户,spark安装目录必须要项目,只是由于master会登陆到slave上执行命令,并认为slave的安装路径和master的安装路径相同。

4)启动Spark集群

cd ~/spark/spark-1.11.6

./sbin/start-all.sh

并云jps判断进程是否启动

5646 Master
13283 NameNode
13844 ResourceManager
5791 Jps

运行spark自带例子

./bin/run-example SparkPi

5)   一个简单的Spark测试用例

参考自http://spark.apache.org/docs/latest/quick-start.html

这个小例子用于统计输入文件中字母“a”和字母“b”的个数。网站上提供了Scala、Java、Python三种实现,这里就只做一下Scala的吧,这里需要安装SBT(我们使用 sbt 创建、测试、运行和提交作业,可以简单将SBT看做是Scala世界的Maven)。

由于Spark没有自带SBT,因此需要自己安装BST,Spark使用SBT工具编译程序,由于本文基于Ubuntu系统,所以使用sudo apt-get install sbt的方式安装    

echo "deb http://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-get update
sudo apt-get install sbt

详细安装过程见 http://www.scala-sbt.org/release/tutorial/Installing-sbt-on-Linux.html

当然用户也可以自己下载源文件编译安装。

   下面就来写这个简单的spark app吧!

mkdir  ~/spark/myproject

cd       ~/spark/myproject

在~/spark/myproject创建如下目录结构

./
simple.bst
src
src/main
src/main/scala/
src/main/scala/simpleApp.scala
其中simple.bst为
name := "Simple Project"
version := "1.4.1"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.4.1"
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
simpleApp.scala为
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "YOUR_SPARK_HOME/spark_home/README.md" // Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
}
由于本文使用hadoop的HDFS,因此YOUR_SPARK_HOME在这里指Spark在HDFS上的存放输入文件的目录,具体位置可以通过 hdfs dfs -ls 命令查看。

在运行例子前,需要将输入文件README.md上传到HDFS的文件夹下。

hdfs dfs -copyFromLocal README.md  YOUR_SPARK_HOME

然后是编译

cd ~./spark/myproject

bst package   

编译过程比较长,编译完后会看到

[success] Total time: 2 s, completed Jul 27, 2015 2:27:19 PM

运行

spark-submit --class "SimpleApp" --master local target/scala-2.11/simple-project_2.11-1.4.1.jar 

会在一堆终端输入中看到执行结果

15/07/27 14:30:08 INFO scheduler.TaskSchedulerImpl: Removed TaskSet 1.0, whose tasks have all completed, from pool 
Lines with a: 60, Lines with b: 29
15/07/27 14:30:08 INFO spark.SparkContext: Invoking stop() from shutdown hook


6)  停止Spark集群

cd ~./spark/spark/spark-2.11.6

./sbin/stop-all.sh


参考:

http://www.cnblogs.com/tec-vegetables/p/3780046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值