你好,游客 登录 注册 搜索
背景:
阅读新闻

Spark安装与学习

[日期:2013-08-11] 来源:Linux社区  作者:jerrylead [字体: ]

摘要:Spark是继Hadoop之后的新一代大数据分布式处理框架,由UC Berkeley的Matei Zaharia主导开发。我只能说是神一样的人物造就的神器,详情请猛击http://www.spark-project.org

 
        Created 2012-05-09
 
        Modified 2012-08-13
 
1 Scala安装
 
      当前,Spark最新版本是0.5,由于我写这篇文档时,版本还是0.4,因此本文下面的所有描述基于0.4版本。
 
不过淘宝的达人已经尝试了0.5,并写了相关安装文档在此 http://www.linuxidc.com/Linux/2013-08/88592.htm 。
 
~~~~~~~~~~~~~~~以下开始我的安装文档~~~~~~~~~~~~~~
 
        我使用的Spark的版本是0.4,只存在于github上,该版本使用的Scala版本是0.9.1.final。所以先到http://www.scala-lang.org/node/165下载scala-2.9.1.final.tar.gz。解压后放到本地 /opt 下面,在 /etc/profile 里添加
 
export SCALA_HOME=/opt/scala-2.9.1.final
 
export PATH=$SCALA_HOME/bin:$PATH
 
2 git安装
 
由于下载Spark和编译Spark需要git,因此先安装git,安装方法可以到Ubuntu软件中心直接装,也可以apt-get装。装好后需要到https://github.com 去注册一个帐号,我注册的是JerryLead,注册邮箱和密码,然后根据网站上的get-start提示生成RSA密码。
 
注意:如果本地之前存在rsa_id.pub,authorized_keys等,将其保存或着将原来的密码生成为dsa形式,这样git和原来的密码都不冲突。

3 Spark安装
 
首先下载最新的源代码

git clone git://github.com/mesos/spark.git 

得到目录spark后,进入spark目录,进入conf子目录,将 spark-env.sh-template 重命名为spark-env.sh,并添加以下代码行:

export SCALA_HOME=/opt/scala-2.9.1.final
 

回到spark目录,开始编译,运行

$ sbt/sbt update compile 

这条命令会联网下载很多jar,然后会对spark进行编译,编译完成会提示success

[success] Total time: 1228 s, completed May 9, 2012 3:42:11 PM
 

可以通过运行spark-shell来和spark进行交互。
 
也可以先运行测试用例./run <class> <params>

./run spark.examples.SparkLR local[2]
 

在本地启动两个线程运行线性回归。

./run spark.examples.SparkPi local
 

在本地启动运行Pi估计器。
 
更多的例子在examples/src/main/scala里面
 
3 Spark导出
 
在使用Spark之前,先将编译好的classes导出为jar比较好,可以
 

 

$ sbt/sbt assembly
 

将Spark及其依赖包导出为jar,放在
 

 

core/target/spark-core-assembly-0.4-SNAPSHOT.jar
 

可以将该jar添加到CLASSPATH里,开发Spark应用了。
 
一般在开发Spark应用时需要导入Spark一些类和一些隐式的转换,需要再程序开头加入
 

 

import spark.SparkContext
 
import SparkContext._
 

4 使用Spark交互模式 

 

1. 运行./spark-shell.sh
 
2. scala> val data = Array(1, 2, 3, 4, 5) //产生data
 
data: Array[Int] = Array(1, 2, 3, 4, 5)
 
3. scala> val distData = sc.parallelize(data) //将data处理成RDD
 
distData: spark.RDD[Int] = spark.ParallelCollection@7a0ec850 (显示出的类型为RDD)
 
4. scala> distData.reduce(_+_) //在RDD上进行运算,对data里面元素进行加和
 
12/05/10 09:36:20 INFO spark.SparkContext: Starting job...
 
5. 最后运行得到
 
12/05/10 09:36:20 INFO spark.SparkContext: Job finished in 0.076729174 s
 
res2: Int = 15
 

接下来请看第2页精彩内容http://www.linuxidc.com/Linux/2013-08/88596p2.htm

推荐阅读:

Spark 0.7.0 发布,开源集群计算环境 http://www.linuxidc.com/Linux/2013-03/81990.htm

Spark 并行计算模型 http://www.linuxidc.com/Linux/2012-12/76490.htm

Spark,一种快速数据分析替代方案 http://www.linuxidc.com/Linux/2013-08/88590.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款