spark入门
spark 入门1. 下载2. 二进制包目录3. 配置4. 启动5. 体验5.1 数据准备5.2 spark-shell5.3 加载数据5.4 简单体验6. spark UI6.1 UI 入口6.2 作业汇总6.3 作业计算过程6.4 作业DAG6.5 作业描述指标6.6 作业调度6.7 作业拆分6.8 作业执行6.9 任务执行详细6.10 任务日志1. 下载在spark下载地址,下载spark二进制包。http://spark.apache.org/downloads.html这里不仅仅需要选择_put a spark
文章信息
- 原文链接:https://jiayq.blog.csdn.net/article/details/106379738
- 发布时间:2020-05-27 14:44:21
- 阅读量:577
- 分类:大数据同时被 3 个专栏收录, 订阅专栏, spark, hadoop
- 标签:#spark入门, #spark集群安装, #spark体验, #spark可视化界面, #spark使用教程
摘要
文章浏览阅读577次。spark 入门1. 下载2. 二进制包目录3. 配置4. 启动5. 体验5.1 数据准备5.2 spark-shell5.3 加载数据5.4 简单体验6. spark UI6.1 UI 入口6.2 作业汇总6.3 作业计算过程6.4 作业DAG6.5 作业描述指标6.6 作业调度6.7 作业拆分6.8 作业执行6.9 任务执行详细6.10 任务日志1. 下载在spark下载地址,下载spark二进制包。http://spark.apache.org/downloads.html这里不仅仅需要选择_put a spark
spark 入门
- 1. 下载
- 2. 二进制包目录
- 3. 配置
- 4. 启动
- 5. 体验
- 5.1 数据准备
- 5.2 spark-shell
- 5.3 加载数据
- 5.4 简单体验
- 5.1 数据准备
- 6. spark UI
- 6.1 UI 入口
- 6.2 作业汇总
- 6.3 作业计算过程
- 6.4 作业DAG
- 6.5 作业描述指标
- 6.6 作业调度
- 6.7 作业拆分
- 6.8 作业执行
- 6.9 任务执行详细
- 6.10 任务日志
- 6.1 UI 入口
1. 下载
在spark下载地址,下载spark二进制包。
http://spark.apache.org/downloads.html

这里不仅仅需要选择spark版本,也需要选择spark编译环境的包。
spark中文文档
http://spark.apachecn.org/#/
spark英文文档
http://spark.apache.org/docs/latest/
这里借用网络上的一张图片来描述spark的生态圈:

之前在hadoop安装中安装好了hadoop。不过,spark有自己的资源调度,所以,我们只需要启动hadoop的hdfs即可。
因为spark是基于hadoop的,所以在第一步选择了hadoop的版本后,需要选择编译二进制包的hadoop的环境。选择之后,第三部会给出下载地址,点击进去,选择一个镜像,下载二进制包即可。
2. 二进制包目录
- bin: 和spark进行交互的可执行文件

- conf: 配置目录

- data: 一些spark计算的配置数据

- examples: spark一些例子


- jars: spark的自己的jar包

- kuberbetes: spark对于k8s的支持,包含一些dockerfile等

- LICENSE:开源协议
- licenses:开源授权协议等文件
- logs:spark的日志文件
- NOTICE:公告信息
- python: spark对python做的兼容支持
- R: spark对R语言做的兼容支持
- README.md:使用须知?
^v^ - RELEASE:发布包编译环境

- sbin:启动脚本,spark的一些启动的脚本,主要是使用配置文件里面设置的参数,启动bin目录里面的二进制文件。

- work: 记录了spark提交的作业历史

主要保存了作业的日志,包括输出与异常。 - yarn: spark对yarn的集成,之前就说过,spark自己集成了资源调度,所以我们安装好hadoop后,只需要启动hdfs即可,yarn可以交给spark自己管理。

3. 配置
因为spark是基于hadoop的,所以,如果你将hadoop的环境搭建好了,那么在hadoop的基础上搭建spark就很容易,甚至说,非常的简单(简单配置,不包含调优):
首先,conf是spark的配置目录:

这里面是一个个的template文件,默认是不存在任何配置文件的。
为了让spark能够启动,我们需要配置一些环境变量
cp spark-env.sh.template spark-env.sh
首先,拷贝模板,得到环境变量的配置文件
vim spark-env.sh
然后进行配置

主要是配置JAVA_HOME(JAVA_HOME可以省去,因为在hadoop中,已经配置了JAVA_HOME),SPARK_MASTER_HOST,SPARK_MASTER_IP,SPARK_MASTER_PORT
然后配置worker:
cp slaves.template slaves
得到worker的配置文件

在这个文件里面填入worker的主机名即可。
4. 启动
将配置好的spark二进制解压目录,拷贝到worker机器上的相同目录下。
然后在spark的sbin目录下执行 ./start-all.sh即可
使用jps验证
master

worker

访问界面http://master-host:8080/

5. 体验
5.1 数据准备
我准备了一个log文件,大小是460M左右

首先我们使用hdfs的命令,将文件存入hdfs中:
hadoop fs -mkdir /data
hadoop fs -put /data/ /study/data/real.log
存入成功后,使用hadoop fs -ls /data可以查看在hdfs中的文件

5.2 spark-shell
spark提供了交互界面,供开发人员开发调试等使用。
如果你不是使用scala开发,而是其他语言,需要启动对应语言的交互shell
| 编程语言 | 对应shell |
|---|---|
| scala | spark-shell |
| java | spark-class |
| python | pyspark |
| R | sparkR |
spark-shell在bin目录下:

这种方式启动spark-shell是默认启动单机模式的spark。
在交互式shell中使用ctrl+d退出
既然我们已将搭建好了集群的spark,那么就应该使用集群的spark。
spark-shell --master spark://host-10-0-228-117:7077
当然:spark-shell --master spark://10.0.228.117:7077也是可以的
交互式shell连接成功后:

此时在```http://10.0.228.117:8080/上可以看到一个活动:

这个shell的一些信息在界面上都可以看到。
在启动shell的时候,也可以指定shell的资源,名字等信息。
5.3 加载数据
我们在5.1中,将一个日志文件放到了hdfs中了,此时我们在shell中使用sc对象读取文件
val lines = sc.textFile("hdfs://host-10-0-228-117:8020/data/real.log")

此时,spark已经将log文件加载为了RDD[String]了
5.4 简单体验
println(lines.count())计算日志文件有多少行


println(lines.filter(l => l.contains("Stop")).count())统计包含指定字符的日志的行数

这里展示了将这个任务分为几个子任务进行处理

这是执行结果
println(lines.flatMap(l => l.split(" ").toStream).count())日志文件有多少个单词


6. spark UI
6.1 UI 入口
在```http://spark-master-host:4040/jobs可以查看我们之前执行的三次作业:











