勿忘,须舍

  • 首页

  • 标签

  • 分类

  • 归档

  • python 随记

  • 关于

  • 搜索

spark参数配置说明

发表于 2019-10-18 分类于 python , spark

spark配置修改方式

Spark有以下三种方式修改配置:

  1. Spark properties (Spark属性)

    可以控制绝大多数应用程序参数,而且既可以通过 SparkConf 对象来设置,也可以通过Java系统属性来设置。

  2. Environment variables (环境变量)

    可以指定一些各个机器相关的设置,如IP地址,其设置方法是写在每台机器上的conf/spark-env.sh中。

  3. Logging (日志)

    可以通过log4j.properties配置日志。

spark配置参数

官方链接:https://spark.apache.org/docs/latest/configuration.html

其它参考:http://ifeve.com/spark-config/

spark web 用法

发表于 2019-10-18 分类于 spark

修改spark默认启动端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
8080 --> master WEB端口
8081 --> work WEB端口
7077 --> master通信端口
18080 --> spark历史服务器端口
4040 --> Spark当前执行的任务页面查看端口4040,如果任务结束了4040端口页面不能访问

50070:HDFSwebUI的端口号
8485:journalnode默认的端口号
9000:非高可用访问数rpc端口
8020:高可用访问数据rpc
8088:yarn的webUI的端口号
8080:master的webUI,Tomcat的端口号
7077:spark基于standalone的提交任务的端口号
8081:worker的webUI的端口号
18080:historyServer的webUI的端口号
4040:application的webUI的端口号
2181:zookeeper的rpc端口号
9083:hive的metastore的端口号
60010:Hbase的webUI的端口号
6379:Redis的端口号
8080:sparkwebUI的端口号
9092:kafka broker的端口

修改默认端口

在 standalone模式中配置spark-env.sh

1
2
3
4
5
6
7
8
# Master节点的web端口是8080 
export SPARK_MASTER_WEBUI_PORT=8080

# work节点的web端口是8081
export SPARK_WORKER_WEBUI_PORT=8081

# Master通信端口是7077
export SPARK_MASTER_PORT=7077

在 standalone模式中配置spark-defaults.confspark-env.sh

1
2
3
4
5
6
7
8
9
# Spark历史服务器端口是18080
spark.history.ui.port 18080

# Spark外部服务端口是6066,这个端口有被黑客攻击的漏洞建议关闭
spark.master.rest.enabled false
spark.master.rest.port 16066

# Spark当前执行的任务页面查看端口4040
spark.ui.port 14040

Spark Web UI详解

默认登陆URL

1
http://{spark_ip}:4040/jobs/

jobs页面

User: spark任务提交的用户,用以进行权限控制与资源分配。

Total Uptime: spark application总的运行时间,从app master开始运行到结束的整体时间。

Scheduling Mode: application中task任务的调度策略,由参数spark.scheduler.mode来设置,可选的参数有FAIR和FIFO,默认是FIFO。这与yarn的资源调度策略的层级不同,yarn的资源调度是针对集群中不同application间的,而spark scheduler mode则是针对application内部task set级别的资源分配,不同FAIR策略的参数配置方式与yarn中FAIR策略的配置方式相同。

Active Jobs: 正在运行的Job的基本信息。

Event Timeline: 在application应用运行期间,Job和Exector的增加和删除事件进行图形化的展现。这个就是用来表示调度job何时启动何时结束,以及Excutor何时加入何时移除。我们可以很方便看到哪些job已经运行完成,使用了多少Excutor,哪些正在运行。

Completed Jobs: 已完成Job的基本信息,如想查看某一个Job的详细情况,可点击对应Job进行查看。

注:Job默认都是串行提交运行的,如果Job间没有依赖,可以使用多线程并行提交Job,实现Job并发。

Jobs Detail页面

在Jobs页面点击进入某个Job之后,可以查看某一Job的详细信息:

Staus: 展示Job的当前状态信息。

Active Stages: 正在运行的stages信息,点击某个stage可进入查看具体的stage信息。

Pending Stages: 排队的stages信息,根据解析的DAG图stage可并发提交运行,而有依赖的stage未运行完时则处于等待队列中。

Completed Stages: 已经完成的stages信息。

Event Timeline: 展示当前Job运行期间stage的提交与结束、Executor的加入与退出等事件信息。

DAG Visualization: 当前Job所包含的所有stage信息(stage中包含的明细的tranformation操作),以及各stage间的DAG依赖图。DAG也是一种调度模型,在spark的作业调度中,有很多作业存在依赖关系,所以没有依赖关系的作业可以并行执行,有依赖的作业不能并行执行。

Stages页面

在Job Detail页点击进入某个stage后,可以查看某一stage的详细信息:

Total time across all tasks: 当前stage中所有task花费的时间和。

Locality Level Summary: 不同本地化级别下的任务数,本地化级别是指数据与计算间的关系(PROCESS_LOCAL进程本地化:task与计算的数据在同一个Executor中。NODE_LOCAL节点本地化:情况一:task要计算的数据是在同一个Worker的不同Executor进程中;情况二:task要计算的数据是在同一个Worker的磁盘上,或在 HDFS 上,恰好有 block 在同一个节点上。RACK_LOCAL机架本地化,数据在同一机架的不同节点上:情况一:task计算的数据在Worker2的Executor中;情况二:task计算的数据在Worker2的磁盘上。ANY跨机架,数据在非同一机架的网络上,速度最慢)。

Input Size/Records: 输入的数据字节数大小/记录条数。

Shuffle Write: 为下一个依赖的stage提供输入数据,shuffle过程中通过网络传输的数据字节数/记录条数。应该尽量减少shuffle的数据量及其操作次数,这是spark任务优化的一条基本原则。

DAG Visualization: 当前stage中包含的详细的tranformation操作流程图。

Metrics: 当前stage中所有task的一些指标(每一指标项鼠标移动上去后会有对应解释信息)统计信息。

Event Timeline: 清楚地展示在每个Executor上各个task的各个阶段的时间统计信息,可以清楚地看到task任务时间是否有明显倾斜,以及倾斜的时间主要是属于哪个阶段,从而有针对性的进行优化。

Aggregated Metrics by Executor: 将task运行的指标信息按excutor做聚合后的统计信息,并可查看某个Excutor上任务运行的日志信息。

Tasks: 当前stage中所有任务运行的明细信息,是与Event Timeline中的信息对应的文字展示(可以点击某个task查看具体的任务日志)。

Storage页面

storage页面能看出application当前使用的缓存情况,可以看到有哪些RDD被缓存了,以及占用的内存资源。如果job在执行时持久化(persist)/缓存(cache)了一个RDD,那么RDD的信息可以在这个选项卡中查看。

Storage Detail页面

点击某个RDD即可查看该RDD缓存的详细信息,包括缓存在哪个Executor中,使用的block情况,RDD上分区(partitions)的信息以及存储RDD的主机的地址。

Enviroment页面

Environment选项卡提供有关Spark应用程序(或SparkContext)中使用的各种属性和环境变量的信息。用户可以通过这个选项卡得到非常有用的各种Spark属性信息,而不用去翻找属性配置文件。

Executor页面

Executors选项卡提供了关于内存、CPU核和其他被Executors使用的资源的信息。这些信息在Executor级别和汇总级别都可以获取到。一方面通过它可以看出来每个excutor是否发生了数据倾斜,另一方面可以具体分析目前的应用是否产生了大量的shuffle,是否可以通过数据的本地性或者减小数据的传输来减少shuffle的数据量。

Summary: 该application运行过程中使用Executor的统计信息。
Executors: 每个Excutor的详细信息(包含driver),可以点击查看某个Executor中任务运行的详细日志。

SQL页面

SQL选项卡(只有执行了spark SQL查询才会有SQL选项卡)可以查看SQL执行计划的细节,它提供了SQL查询的DAG以及显示Spark如何优化已执行的SQL查询的查询计划。

参考

spark的UI界面及调优

https://www.jianshu.com/p/8143a50a5af9

https://blog.csdn.net/minge_se/article/details/79146737

spark异常处理

发表于 2019-10-18 分类于 spark

python io module

发表于 2019-10-16 分类于 python , module

参考:python3之模块io使用流的核心工具

docker mysql官方镜像操作

发表于 2019-10-15 分类于 docker

…

阅读全文 »

docker命令操作

发表于 2019-10-14 分类于 docker

查看docker版本

1
2
[root@hadoop01 ~]# docker -v
Docker version 19.03.3, build a872fc2f86
阅读全文 »

docker构建流程

发表于 2019-10-14 分类于 docker

docker构建镜像

1
docker build -t spark_clu:1.0.0 .

语法:

docker build [OPTIONS] PATH | URL | -

常用OPTIONS参数:

​ -f :指定要使用的Dockerfile路径;

–force-rm :设置镜像过程中删除中间容器;

-m :设置内存最大值;

–no-cache :创建镜像的过程不使用缓存;

–pull :尝试去更新镜像的新版本;

–quiet, -q :安静模式,成功后只输出镜像 ID;

–rm :设置镜像成功后删除中间容器;

–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

–network: 默认 default。在构建期间设置RUN指令的网络模式

Docker build 命令

docker存储镜像

1
2
docker save -o spark_clu.tar spark_clu:1.0.0
gzip spark_clu.tar # spark_clu.tar.gz

语法:

docker save [OPTIONS] IMAGE [IMAGE…]

OPTIONS选项

-o :输出到的文件。

docker删除镜像

1
docker rmi -f spark_clu:1.0.0

语法:

​docker rmi [OPTIONS] IMAGE [IMAGE…]

OPTIONS选项:

​-f :强制删除;

​–no-prune :不移除该镜像的过程镜像,默认移除;

docker载入镜像

1
docker load -i spark_clu.tar.gz

语法:

​docker load [OPTIONS]

OPTIONS 选项:

​–input , -i : 指定导入的文件,代替 STDIN。

​–quiet , -q : 精简输出信息。

docker安装

发表于 2019-10-12 分类于 docker

什么是docker

Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

阅读全文 »

python3.7.3安装

发表于 2019-10-11 分类于 python

安装依赖

  • 安装gcc编译器
1
2
3
yum -y install gcc

注:有些系统版本已经默认安装gcc,通过 gcc --version 查看
  • 安装其它依赖包
1
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

下载python3.7.3安装包

  • 最新版本下载地址:https://www.python.org/downloads/
1
# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

安装python3.7.3

  • 创建安装目录,例:
1
2
3
# mkdir /usr/local/python3

注:安装路径可变
  • 解压下载的安装包
1
2
3
# tar zxvf /Python-3.7.3.tgz .

注: 解压路径可自行指定
  • 进入解压后的目录,编译安装
1
2
3
4
# cd Python-3.7.3
# ./configure --prefix=/usr/local/python3
...
# make && make install

建立软链接

1
2
# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

测试

1
2
3
# python3

# pip3

Python 迭代器和生成器

发表于 2019-10-10 分类于 python

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个实现了迭代器协议的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

阅读全文 »
1…8910…16
Mr Wang

Mr Wang

行动了才会有故事,说出来才会有结果。
154 日志
59 分类
43 标签
RSS
GitHub E-Mail Weibo
© 2022 Mr Wang
总访问量次 | 总访客数人