Spark学习笔记-安装部署与运行实例

原创 2014年06月13日 17:11:19
首先解压scala,本次选用版本scala-2.11.1
[hadoop@centos software]$ tar -xzvf scala-2.11.1.tgz
[hadoop@centos software]$ su -
[root@centos ~]# vi /etc/profile
添加如下内容:
SCALA_HOME=/home/hadoop/software/scala-2.11.1
PATH=$SCALA_HOME/bin
EXPORT SCALA_HOME
[root@centos ~]# source /etc/profile
[root@centos ~]# scala -version
Scala code runner version 2.11.1 -- Copyright 2002-2013, LAMP/EPFL

然后解压spark,本次选用版本spark-1.0.0-bin-hadoop1.tgz,这次用的是hadoop 1.0.4
[hadoop@centos software]$ tar -xzvf spark-1.0.0-bin-hadoop1.tgz
进入到spark的conf目录下
[hadoop@centos conf]$ cp spark-env.sh.template spark-env.sh
[hadoop@centos conf]$ vi spark-env.sh
添加如下内容:
export SCALA_HOME=/home/hadoop/software/scala-2.11.1
export SPARK_MASTER_IP=centos.host1
export SPARK_WORKER_MEMORY=2G
export JAVA_HOME=/usr/software/jdk

如果是要集群安装部署的话,需要修改文件conf/slaves,添加要作为worker的主机
然后将spark-1.0.0-bin-hadoop1目录拷贝到相应主机上,注意目录要一致。

启动
[hadoop@centos spark-1.0.0-bin-hadoop1]$ sbin/start-master.sh
可以通过 http://centos.host1:8080/ 看到对应界面
[hadoop@centos spark-1.0.0-bin-hadoop1]$ sbin/start-slaves.sh spark://centos.host1:7077
可以通过 http://centos.host1:8081/ 看到对应界面

下面在spark上运行第一个例子:与Hadoop交互的WordCount
首先将word.txt文件上传到HDFS上,这里路径是 hdfs://centos.host1:9000/user/hadoop/data/wordcount/001/word.txt
进入交互模式
[hadoop@centos spark-1.0.0-bin-hadoop1]$ master=spark://centos.host1:7077 ./bin/spark-shell
scala>val file=sc.textFile("hdfs://centos.host1:9000/user/hadoop/data/wordcount/001/word.txt")  
scala>val count=file.flatMap(line=>line.split(" ")).map(word=>(word,1)).reduceByKey(_+_) 
scala>count.collect()

可以看到控制台有如下结果:
res0: Array[(String, Int)] = Array((hive,2), (zookeeper,1), (pig,1), (spark,1), (hadoop,4), (hbase,2))

同时也可以将结果保存到HDFS上
scala>count.saveAsTextFile("hdfs://centos.host1:9000/user/hadoop/data/wordcount/001/result.txt")

接下来再来看下如何运行Java版本的WordCount
这里需要用到一个jar文件:spark-assembly-1.0.0-hadoop1.0.4.jar
WordCount代码如下:
public class WordCount {
	
	private static final Pattern SPACE = Pattern.compile(" ");

	@SuppressWarnings("serial")
	public static void main(String[] args) throws Exception {
		if (args.length < 1) {
			System.err.println("Usage: JavaWordCount <file>");
			System.exit(1);
		}

		SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount");
		JavaSparkContext ctx = new JavaSparkContext(sparkConf);
		JavaRDD<String> lines = ctx.textFile(args[0], 1);

		JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
					@Override
					public Iterable<String> call(String s) {
						return Arrays.asList(SPACE.split(s));
					}
				});

		JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {
					@Override
					public Tuple2<String, Integer> call(String s) {
						return new Tuple2<String, Integer>(s, 1);
					}
				});

		JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {
					@Override
					public Integer call(Integer i1, Integer i2) {
						return i1 + i2;
					}
				});

		List<Tuple2<String, Integer>> output = counts.collect();
		for (Tuple2<?, ?> tuple : output) {
			System.out.println(tuple._1() + " : " + tuple._2());
		}
		
		ctx.stop();
	}
}
导出类文件生成jar包,这里生成为mining.jar。然后执行下面命令,其中--class 指定主类,--master 指定spark master地址,后面是执行的jar和需要的参数。

[hadoop@centos spark-1.0.0-bin-hadoop1]$ bin/spark-submit --class org.project.modules.spark.java.WordCount --master spark://centos.host1:7077 /home/hadoop/project/mining.jar hdfs://centos.host1:9000/user/hadoop/data/wordcount/001/word.txt

可以看到控制台有如下结果:
spark : 1
hive : 2
hadoop : 4
zookeeper : 1
pig : 1
hbase : 2

最后再来看下如何运行Python版本的WordCount
WordCount代码如下:
import sys
from operator import add

from pyspark import SparkContext

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print >> sys.stderr, "Usage: wordcount <file>"
        exit(-1)
    sc = SparkContext(appName="PythonWordCount")
    lines = sc.textFile(sys.argv[1], 1)
    counts = lines.flatMap(lambda x: x.split(' ')) \
                  .map(lambda x: (x, 1)) \
                  .reduceByKey(add)
    output = counts.collect()
    for (word, count) in output:
        print "%s: %i" % (word, count)
输入文件路径可以是本地也可以是HDFS上文件,命令如下:
[hadoop@centos spark-1.0.0-bin-hadoop1]$ bin/spark-submit --master spark://centos.host1:7077 /home/hadoop/project/WordCount.py /home/hadoop/temp/word.txt 

[hadoop@centos spark-1.0.0-bin-hadoop1]$ bin/spark-submit --master spark://centos.host1:7077 /home/hadoop/project/WordCount.py hdfs://centos.host1:9000/user/hadoop/data/wordcount/001/word.txt 

可以看到控制台有如下结果:
spark: 1
hbase: 2
hive: 2
zookeeper: 1
hadoop: 4
pig: 1

版权声明:本文为博主原创文章,未经博主允许不得转载。

js将本地时间与服务器时间同步

注意,代码中使用了angular中时间的格式化方法,如果你没有使用angular,可以自己找格式化时间的方法代替! 1.首先获取本地时间和服务器时间的时间间隔。(这里假设服务器传过来的时间是 201...

linux 安装msmtp发送邮件

Linux下可以直接用mail命令发送邮件,但是发件人是user@servername,如果机器没有外网的dns,其他人就无法回复。此时,有一个可以使用网络免费邮箱服务的邮件发送程序就比较重要了。ms...

Spark学习笔记-安装部署与运行实例

先解压scala,本次选用版本scala-2.11.1 [hadoop@centos software]$ tar -xzvf scala-2.11.1.tgz [hadoop@cento...

Tachyon学习笔记-安装部署与运行实例

Tachyon版本:tachyon-0.5.0-bin.tar.gz

Oozie学习笔记-安装部署与运行实例

Oozie安装部署 1.oozie包的下载  3.0.*版本或者之前的版本是可以离线安装的(例如oozie-3.0.2-distro.tar.gz),在往上的版本(例如  oozie-3.3...

OpenStack学习笔记————OpenStack安装部署管理中常见问题解决方

一、网络问题-network 更多网络原理机制可以参考《OpenStack云平台的网络模式及其工作机制》。 1.1、控制节点与网络控制器区别 OpenStack平台中有两种类...

Kafka学习笔记-基本概念与安装部署

Kafka是Linkedin开源的消息系统,它主要用于日志处理的分布式消息队列,处理活跃的流式数据。活跃的流式数据在网站应用中非常常见,这些数据包括网站的pv、用户行为(登录、浏览、点击、分享、喜欢等...

使用docker安装部署Spark集群来训练CNN(含Python实例)

实验室有4台服务器(8个GPU/台),平日都只使用了其中的一个GPU,实在暴遣天物!于是决定使用docker安装部署Spark集群,将这些GPU都利用起来训练CNN。本文是博主含泪写出的踩坑总结,希望...
  • cyh24
  • cyh24
  • 2015年11月06日 15:03
  • 13900

MongoDB学习笔记-安装部署和简易API操作

解压安装包 tar -xzvf mongodb-linux-x86_64-ubuntu1404-3.2.8.tgz 启动MongoDB方法一: bin/mongod --dbpath=/ho...

ElasticSearch学习笔记-集群安装部署

集群版本:elasticsearch-2.3.3.tar.gz 集群节点: centos.master  192.168.10.10 centos.slave1   192.168.10.11 cen...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark学习笔记-安装部署与运行实例
举报原因:
原因补充:

(最多只允许输入30个字)