Spark入门- Spark运行Local本地模式

2022-12-01 21:20:33 浏览数 (1)

一、Spark单机模式部署

Spark版本 : spark-2.4.7-bin-hadoop2.7

1、安装配置JDK环境
2、下载Spark

官网下载http://spark.apache.org/

然后上传到LInux服务器上

3、解压
代码语言:javascript复制
tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz
解压目录说明
代码语言:javascript复制
bin        可执行脚本
conf       配置文件
data       示例程序使用数据
examples   示例程序
jars       依赖 jar 包
python     pythonAPI
R          R 语言 API
sbin       集群管理命令
yarn       整合yarn需要的文件
4、启动master节点
代码语言:javascript复制
./sbin/start-master.sh
5、启动woker节点:./sbin/start-slave.sh

例如:start-slave.sh spark://Ice:7077

参数:表示master节点的访问地址(注意host-ip映射)

6、连接单机Spark集群
代码语言:javascript复制
spark-shell --master spark://Ice:7077 (Spark Scala交互式开发环境,“:quit”退出)

二. 运行官方求PI的案例

代码语言:javascript复制
bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.11-2.4.7.jar 100

结果片段:Pi is roughly 3.1416503141650316

2.1、spark-submit语法
代码语言:javascript复制
./bin/spark-submit 
--class <main-class> 
--master <master-url> 
--deploy-mode <deploy-mode> 
--conf <key>=<value> 
... # other options
<application-jar> 
[application-arguments]
  • master 指定 master 的地址,默认为local. 表示在本机运行.
  • class 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
  • deploy-mode 是否发布你的驱动到 worker节点(cluster 模式) 或者作为一个本地客户端 (client 模式) (default: client)
  • conf: 任意的 Spark 配置属性, 格式key=value. 如果值包含空格,可以加引号"key=value"
  • application-jar: 打包好的应用 jar,包含依赖. 这个 URL 在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
  • application-arguments: 传给main()方法的参数
  • executor-memory 1G 指定每个executor可用内存为1G
  • total-executor-cores 6 指定所有executor使用的cpu核数为6个
  • executor-cores 表示每个executor使用的 cpu 的核数

三、使用 Spark-shell

Spark-shellSpark 给我们提供的交互式命令窗口(类似于 Scala 的 REPL)

3.1、打开 Spark-shell
代码语言:javascript复制
$ bin/spark-shell 
代码语言:javascript复制
Spark context Web UI available at http://Ice:4040
Spark context available as 'sc' (master = local[*], app id = local-1608775323264).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _ / _ / _ `/ __/  '_/
   /___/ .__/_,_/_/ /_/_   version 2.4.7
      /_/
         
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_251)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

四、wordcount案例

4.1、 创建 2 个文本文件
代码语言:javascript复制
mkdir input
cd input
touch 1.txt
touch 2.txt
写入内容
4.2、打开 Spark-shell
代码语言:javascript复制
bin/spark-shell 
查看进程和通过 web 查看应用程序运行情况

可以看到一句Spark context Web UI available at http://Ice:4040

4.3、访问地址:http://Ice:4040
4.4 运行 wordcount 程序
代码语言:javascript复制
sc.textFile("./input").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_   _).collect

scala> sc.textFile("/root/sparkdemo/demo1/input").flatMap(.split(" ")).map((, 1)).reduceByKey(_ _).collect res0: Array[(String, Int)] = Array((are,1), (SQL,1), (world,1), (you,1), (hadoop,1), (how,1), (MapReduce,1), (hello,2), (spark,4), (hi,1), (core,1)) scala>

4.5、登录Ice:4040查看程序运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fCXxgJmX-1609287306339)(image/image2.png)]

4.6、 提交流程
4.7、 wordcount 数据流程分析
  1. textFile("input"):读取本地文件input文件夹数据;
  2. flatMap(_.split(" ")):压平操作,按照空格分割符将一行数据映射成一个个单词;
  3. map((_,1)):对每一个元素操作,将单词映射为元组;
  4. reduceByKey(_ _):按照key将值进行聚合,相加;
  5. collect:将数据收集到Driver端展示。

0 人点赞