Spark本地模式运行

原创
2015/12/19 12:23
阅读数 9.9K

1.Spark介绍
Spark是基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

2.运行模式
本地模式
Standalone模式
Mesoes模式
yarn模式

下面测试一下“本地模式”的运行情况,本次测试在windows7下

1.环境准备

jdk 1.6
Spark 1.2.0   
官网:http://spark.apache.org/downloads.html
或者:http://archive.apache.org/dist/spark/
我们可以下载源码【spark-1.2.0.tgz】自己编译,或者直接下载【spark-1.2.0-bin-hadoop2.4.tgz】
注:本地jdk安装的是1.6,spark1.5+只能在jdk7,8上运行;
Scala  2.11.7  http://www.scala-lang.org/download/
Python 2.7.7  https://www.python.org/downloads/windows/

2.目录

将下载的【spark-1.2.0-bin-hadoop2.4.tgz】解压

bin:方便我们本地模式下的测试的命令
conf:是一些配置模板,我么可以将xxxx.template去掉template,重新配置

默认是直接支持scala和Python运行的,分别执行:spark-shell.cmd和pyspark.cmd

运行spark-shell.cmd:

运行pyspark.cmd:

1.当然spark本身也支持java语言,我们可以通过spark-submit.cmd执行java程序

创建一个maven项目用于测试:

<dependency>
        <groupId>org.apache.spark</groupId>
	<artifactId>spark-core_2.10</artifactId>
	<version>1.2.0</version>
</dependency>

自动会将依赖的jar包都下载下来,jar包比较多,要稍微等一下

package com.spark;

import java.util.Arrays;
import java.util.regex.Pattern;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;

public class WordCount {

	private static final Pattern SPACE = Pattern.compile(" ");

	public static void main(String[] args) {
		SparkConf conf = new SparkConf().setAppName("JavaWordCount");
		JavaSparkContext ctx = new JavaSparkContext(conf);

		String filePath = "D:/systemInfo.log";
		JavaRDD<String> lines = ctx.textFile(filePath, 1);
		JavaRDD<String> words = lines
				.flatMap(new FlatMapFunction<String, String>() {
					@Override
					public Iterable<String> call(String s) {
						return Arrays.asList(SPACE.split(s));
					}
				});
		System.out.println("wordCount:" + words.count());
	}
}
通过maven将我们的项目打成一个jar包


spark-submit参数说明:  Usage: spark-submit [options] <app jar | python file> [app options]

具体说明看这个:http://my.oschina.net/u/140462/blog/519409


通过4040端口可以查看spark的相关信息:http://localhost:4040

2.java程序还可以不通过spark-submit来运行,可以直接在本地运行:

package com.spark;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.regex.Pattern;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;

public final class JavaWordCount {
	private static final Pattern SPACE = Pattern.compile(" ");

	public static void main(String[] args) throws Exception {
		SparkConf conf = new SparkConf().setMaster("local").setAppName(
				"JavaWordCount");
		JavaSparkContext ctx = new JavaSparkContext(conf);

		String filePath = "";
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.println("Enter FilePath:");
		System.out.println("e.g. D:/systemInfo.log");

		while (true) {
			System.out.println("> ");
			filePath = reader.readLine();
			if (filePath.equalsIgnoreCase("exit")) {
				ctx.stop();
			} else {
				JavaRDD<String> lines = ctx.textFile(filePath, 1);
				JavaRDD<String> words = lines
				.flatMap(new FlatMapFunction<String, String>() {
						@Override
						public Iterable<String> call(String s) {
							return Arrays.asList(SPACE.split(s));
						}
					});
				System.out.println("wordCount:" + words.count());
			}
		}
	}
}
结果如下:
Enter FilePath:
e.g. D:/systemInfo.log
> 
D:/systemInfo.log
wordCount:48050
>

setMaster为local,具体master URL参数如下图:

上图引用:http://www.infoq.com/cn/articles/apache-spark-introduction

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
7 收藏
0
分享
返回顶部
顶部