一、执行第一个Spark程序

1、执行程序

我们执行一下Spark自带的一个例子,利用蒙特·卡罗算法求PI:

启动Spark集群后,可以在集群的任何一台机器上执行一下命令:

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://master:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

/home/spark/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar \

100

在执行过程中bash上的信息:

执行完成bash上的信息:

执行过程中WebUI上的信息:

执行完以后WebUI上的信息:

2、命令解析

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \

①spark-submit:提交任务,它是一个Driver,至于它的实现细节后续会有介绍

--class org.apache.spark.examples.SparkPi \

②—class 指定任务的类名(使用反射调用该类的main方法)

--master spark://master:7077 \

③—master 指定集群Master的地址

--executor-memory 1G \

④—executor 指定为每个executor分配的内存大小

--total-executor-cores 2 \

⑤—total-executor 指定分配给所有executor总的处理器核数

(这里先说一下executor是Worker启动的子进程,executor负责执行任务,其细节以后会介绍的。)

/home/spark/spark-1.6.1-bin-hadoop2.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar \

⑥指定任务的jar包地址

100

⑦任务的类的main方法的参数

二、使用 spark-shell

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序,spark-shell也是一个Driver。

1、启动 spark-shell

/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-shell \

--master spark://master:7077 \

--executor-memory 1g \

--total-executor-cores 2

这个命令的解析其实和上面的spark-submit是一样的,我在这再啰嗦一遍:

参数说明:

--master spark://master:7077 指定Master的地址

--executor-memory 1g 指定每个executor可用内存为1G

--total-executor-cores 2 指定所有executor总的处理器核数为2

还有一点需要非常注意:

如果启动 spark shell 时没有指定master地址,但是也可以正常启动 spark shell 和执行 spark shell 中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

还要说明一点:

spark shell 中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用 sc 即可。SparkContext是Spark集群的入口,Driver只有初始化了SparkContext才可以向Spark集群提交任务,所以这个SparkContext和重要,以后我们会详细介绍整个SparkContext的初始化流程的,现在可以先记住SparkContext是集群的入口,就像Spring中的ApplicationContext一样。

2、在spark shell中编写WordCount程序

(1)首先启动hdfs

(2)向hdfs上传文件words.txt 到 hdfs://hadoop01:9000/spark/words.txt

words.txt的内容:

hello tom
hello jim
hello tom and kitty

(3)在spark shell 中用scala语言编写spark程序:

sc.textFile("hdfs://hadoop01:9000/spark/words.txt").flatMap(_.split(" "))

.map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hadoop01:9000/spark/out")

(4)使用hdfs命令查看结果:

hdfs dfs -cat hdfs://hadoop01:9000/spark/out/part*

(jim,1)
(tom,2)
(hello,3)
(and,1)
(kitty,1)

(5)程序简单说明:

sc.textFile("hdfs://hadoop01:9000/spark/words.txt") 从hdfs中读取数据

flatMap(_.split(" ")) 先map再压平

map((_,1)) 将单词和1构成元组

reduceByKey(_+_) 按照key进行reduce,并将value累加

saveAsTextFile("hdfs://hadoop01:9000/spark/out") 将结果写入到hdfs中

最后:

也可以使用 IDEA 编写完一个程序后打包,使用spark-submit方式提交到集群,在这里我就不写了。一定要注意spark-submit的配置命令不要出错,还要注意自己的程序需要的参数的正确,不要忘了起hdfs。

转载于:https://www.cnblogs.com/lumingkui/p/5532362.html

Spark系列—02 Spark程序牛刀小试相关推荐

  1. 【大数据Spark系列】Spark教程:详细全部

    Spark作为Apache顶级的开源项目,是一个快速.通用的大规模数据处理引擎,和Hadoop的MapReduce计算框架类似,但是相对于MapReduce,Spark凭借其可伸缩.基于内存计算等特点 ...

  2. Spark系列之Spark应用程序运行机制

    声明:         文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除.感谢.转载请注明出处,感谢. By luoye ...

  3. Spark系列之Spark体系架构

    title: Spark系列 第四章 Spark体系架构 4.1 Spark核心功能 Alluxio 原来叫 tachyon 分布式内存文件系统 Spark Core提供Spark最基础的最核心的功能 ...

  4. Spark系列之Spark在不同集群中的架构

    title: Spark系列 第十二章 Spark在不同集群中的架构 ​ Spark 注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用 ...

  5. Spark系列之Spark启动与基础使用

    title: Spark系列 第三章 Spark启动与基础使用 3.1 Spark Shell 3.1.1 Spark Shell启动 安装目录的bin目录下面,启动命令: spark-shell $ ...

  6. Spark系列之Spark概述

    title: Spark系列 What is Apache Spark™? Apache Spark™ is a multi-language engine for executing data en ...

  7. Spark系列之Spark的资源调优

    title: Spark系列 第十一章 Spark的资源调优 11.1 概述 ​ 在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在sparksubmit命令中 ...

  8. 大数据Spark系列之Spark基本概念解析

    1)Application 用户在 spark 上构建的程序,包含了 driver 程序以及在集群上运行的程序代码,物理机器上涉及了 driver,master,worker 三个节点. 2)Driv ...

  9. 大数据Spark系列之Spark单机环境搭建

    1. 下载spark与scala Spark下载地址 http://mirrors.hust.edu.cn/apache/spark/spark-2.4.5/spark-2.4.5-bin-hadoo ...

最新文章

  1. 华为自带浏览器绕坑大法!
  2. Java之IO流学习总结【上】
  3. Python Day18
  4. @RequestMapping,@ResponseBody,@RequestBody用法
  5. 【数据结构】C++单链表实现多项式加法(直接输入多项式)
  6. 从网络字节流中提出整数
  7. hadoop--常见错误及解决方法
  8. LeetCode--33. 搜索旋转排序数组(二分法)
  9. 计算机组成原理第二次小组讨论课,巢湖电大开放教育计算机科学与技术(doc 6页).doc...
  10. C# 图片处理之:彩色图片转为黑白图
  11. 十二、流程控制之条件运算符
  12. 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
  13. Xcode升级之后,报 Moudule ‘xxx‘ not found,或 Could not find module ‘xxx‘ for target ‘arm64-apple-ios
  14. 为张孝祥老师的离世表示哀悼
  15. 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)
  16. 汽车行业如何借助微信小程序引流
  17. Android--ImageView读取本地路径图片
  18. Linux--系统网络测试和测试工具
  19. 前端如何保存图片?并在相册中查看。
  20. Emgucv类型转换

热门文章

  1. 【Java并发编程】:使用synchronized获取互斥锁
  2. Linux基础练习题(二)
  3. JS实战 · 复选框全选操作
  4. '固定' table宽度,走起!
  5. Zend Debugger 配置
  6. NO1:在Windows端安装SecureCRT来连接Linux
  7. SQL2005-使用openrowset 里读取excel文件
  8. Selenium备忘手册 [转]
  9. pythonwhile循环love_input和while循环——Python编程从入门到实践
  10. CSDN光合计划-纯干货福利-推荐几个算法、分布式、数据库全系列学习教程(企业实用技术类)