Spark Standalone 安装与测试

安装环境 Ubuntu11.10 hadoop2.2.0 Spark0.9.1

   Spark的Standalone安装还得很容易的,但是我看他们写的不是很详细,也可能是我太菜了,有些看不懂,然后经过自己的摸索感觉有点感觉了,写下来记录下。

   我下载Spark0.9.1版(目前最新版,和之前的0.8.1目录中有些差别),因为环境为Hadoop2.2.0所以下载的Spark版本为spark-0.9.1-bin-hadoop2.tgz。

   解压后直接进入目录就可以进行操作,之前网上写的要先编译的步骤可以省略,因为我下载的是预编译的版本(在查资料的时候为这个问题纠结了很多),我的主目录是spark0.91,现把0.9.1版本和0.8.1版本的文件目录贴出对比下,这样可以结合网上的资料在0.9.1版本中操作

wKiom1NcfiCBb8EtAAO8N3AYBWc556.jpg

0.9.1版本把0.8.1版本中主目录下的一些脚本放在了bin文件和sbin文件里。

现在spark_home和scala(有人说要先安装scala,我没有装也可以进入交互界面,先不安装,随后再说,试验ing,也可能是0.9.1已集成了scala)还没有配置,在安装目录下(我的目录是spark0.91)运行命令bin/spark-shell(如果是0.8.1则在主目录下运行./spark-shell就行,因为0.9.1把spark-shell脚本放在了bin文件夹里)将出现如下界面,就可以运行命令了。但是我在进入spark-shell的时候会给出一个警告

14/04/27 10:58:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

意思是说本地hadoop库没有加载成功,查了下资料发现别人都是在进行hadoop上传文件等一些hadoop操作的时候才会弹出的警告,而我进行hadoop的操作时并无此警告,这个警告不知道会不会影响spark随后在YARN上的使用。

wKiom1NcjcnATLbZAAPZue3FBos992.jpg

   接下来就小试一下吧,在spark的交互界面里输入命令,感觉有点hive或者hbase的shell命令界面。输入命令

val data = Array(1, 2, 3, 4, 5) //产生data

这里的val的意思是不可变的变量,有点java中fianl的意思。这里之所以要用val修饰data应该是随后要把data装入内存,而spark的弹性分布式数据集的只读的序列。(我认为是这个原因,说的不对请大神多指点)

val distData = sc.parallelize(data) //将data处理成RDD

spark中运行程序都是rdd对象,所以要将data处理为rdd装入内存。 这些都属于spark的转换

下面就是spark的动作了

distData.reduce(_+_) //在RDD上进行运算,对data里面元素进行加和

运行上述代码结果为

wKiom1NckSjTQovUAAiMOakqGW4499.jpg

最后输出了结果并将结果存放在res0变量中,这个变量是自动生成的。

完成上述的测试应该可以说spark应该可以使用了

接下来是启动spark的master和work

在主目录下输入命令sbin/start-all.sh(0.8.1是输入bin/start-all.sh),然后用jps命令查看master和work的启动情况。也可以手动单独启动master 和work,命令为

  • sbin/start-master.sh

       - Starts a master instance on the machine the script is executed on.

  • sbin/start-slaves.sh

       - Starts a slave instance on each machine specified in the conf/slaves file.

  • sbin/start-all.sh

       - Starts both a master and a number of slaves as described above.

  • sbin/stop-master.sh

       - Stops the master that was started via the bin/start-master.sh script.

  • sbin/stop-slaves.sh

       - Stops the slave instances that were started via bin/start-slaves.sh.

  • sbin/stop-all.sh

       - Stops both the master and the slaves as described above.

(这点英语应该能看懂吧,我这六级没过的都能看懂,我想你们应该不成问题,嘿嘿)

web ui地址为localhost:8080(默认是8080端口)

wKioL1NclIaBZPp1AAMFLmuJIjQ948.jpg

看着这些都测试成功,接下来就来测试下能不能访问hdfs上的文件(官方文档介绍standalone也可以访问hdfs)在scala命令中输入

val file = sc.textFile("hdfs://sun:9000/in/file")
val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
count.collect()

其中file文件内容为

Hadoop is fast
Hadoop is cool

有资料说flatMap相当于mapreduce中的map函数,那运行flatMap的时候会调用mapreduce的map函数不?反正这次运行的时候没有调用mapreduce job(spark怎么调用mapreduce呢?这很迷惑,希望大神指点),reducByKey之前用过,就是个累加的功能

运行结果

wKioL1Ncl8yhdbNqAAM3NU2I8oI308.jpg

wKiom1Ncl_bzDDqeAAORdCI3sic556.jpg


对spark还是有点模糊,随后附上spark yarn 安装过程




你可能感兴趣的:(spark,library,load,hadoop2.2.0,native-hadoop)