废话少说直接上部署方案
部署方案,为了便于测试我将采用local的模式,master 和worker 都在同一个节点上,sprk-0.9.1.0
cd conf目录下配置spark-env.sh,添加如下配置项
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=1g
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
SPARK_MASTER_WEBUI_PORT=8090#修改访问集群监控的端口号,默认8080
配置slaves,添加运行worker的节点
hadoop00
启动spark集群(伪分布式单节点)
sbin/start-all.sh
通过UI页面查看是否启动成功,或者通过jps查看master和worker进程是否存在
运行测试程序,进入到spark shell下,需要制定进入spark的运行模式
spark运行的四种模式:Local、Standalone、Mesos、YARN
cd bin
在bin目录下执行,默认启动方式 ./spark-shell 是local模式(官方介绍在spark1.0默认启动模式是Standalone,但是实践证明spark1.0默认启动还是local模式)
MASTER=Local[2] ./spark-shell //启动本地模式,并指定两个线程来工作
或
MASTER=spark://IP:port(spark-env.sh中指定的端口号) ./spark-shell //Standalone模式
上测试例子,读取linux中的本地文件(注意不是hdfs中的文件)统计单词个数
val rdd = sc.textFile("/root/words.txt") //读取words.txt转换成RDD
rdd.count //统计文件中数据的行数,大家注意看图1中最后的执行时间8.209秒
如果把rdd放到内存中,先执行rdd.cache,然后再执行rdd.count,再看下耗时居然是0.3秒,请看图2
图1
图2
下图是一个完成的wordcount的过程
还可以将计算结果保存到文件中
会在指定的目录下产生如下的结果文件