自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱磊的博客

记录学习过程,写写工作日常

原创 SparkSQL 性能调优参数

1,spark.hadoopRDD.ignoreEmptySplits 默认是false,如果是true,则会忽略那些空的splits,减小task的数量。 2,spark.hadoop.mapreduce.input.fileinputformat.split.minsize 是用于聚合inpu...

2019-11-10 19:21:31

阅读数 37

评论数 0

原创 Linux 指令之安装软件

在 Linux 上安装软件应该去官网下载比较好,比如去 JDK 的官网下载 JDK ,会给出这样的下载列表。 对于 Linux 系统来说有三个安装包可以下载,格式分别为 rpm 和 deb 和 tar.gz 。tar.gz 是安装文件的压缩包,rpm 和 deb 分别是 CentOS 体系的 L...

2019-07-28 16:25:39

阅读数 183

评论数 0

原创 Linux 指令之用户和密码

1,修改密码的指令为:passwd # passwd Changing password for user root. New password: 按照这个命令可以输入新密码。 2,创建用户的指令为:useradd useradd stone 执行这个指令,一个用户就会被创建了。接下来可以...

2019-07-28 16:23:57

阅读数 230

评论数 0

原创 hexo 博客迁移

今天把 mac 上的 hexo 博客迁移到 win 电脑上。 1,安装 git; 2,安装 Node.js; 3,打开 git bash 客户端,输入 npm install hexo-cli -g ,开始安装 hexo; 4,在 win 电脑上创建你要存放博客项目的文件夹,比如我是放在 D 盘的...

2019-07-26 16:36:59

阅读数 144

评论数 0

原创 JVM 堆内存模型与 GC 策略

Java 中堆内存是 JVM 管理内存中最大的一块内存,同时又是 GC 管理的重要区域。 Java 堆内存主要分成两个区域: 1,年轻代。年轻代内部又分成了两个区,一个是 Eden 区,一个是 Survivor 区。Survivor 区又划分成两块,一块是 from 区,一块是 to 区; 2,老...

2019-07-12 14:49:38

阅读数 217

评论数 1

原创 Spark 源码分析(九): Task 启动

前面已经分析到了 DAGScheduler 对 stage 划分,并对 Task 的最佳位置进行计算之后,通过调用 taskScheduler 的 submitTasks 方法,将每个 stage 的 taskSet 进行提交。 在 taskScheduler 的 submitTasks 方法中会...

2019-07-08 17:01:07

阅读数 197

评论数 0

原创 Spark 源码分析(八):DAGScheduler 源码分析2(task 最佳位置计算)

前面一篇文章已经讲了 DAGScheduler 中的 stage 划分算法。 实际上就是每当执行到 RDD 的 action 算子时会去调用 DAGScheduler 的 handleJobSubmitted 方法,这个方法内部会根据当前的 RDD 创建一个 ResultStage,然后根据这个 ...

2019-07-03 23:40:07

阅读数 312

评论数 0

原创 Spark 源码分析(七): DAGScheduler 源码分析1(stage 划分算法)

前面几篇文章已经说清楚了从 spark 任务提交到 driver 启动,然后执行 main 方法,初始化 SparkContext 对象。 在初始化 SparkContext 对象的过程中创建了两个重要组件: 一个是 TaskScheduler(实际上是他的实现类 TaskSchedulerImp...

2019-07-03 16:36:22

阅读数 536

评论数 0

原创 Spark 源码分析(六): Executor 向 driver 进行注册

前一篇文章介绍了 Executor 进程的启动,最后启动的是 CoarseGrainedExecutorBackend,执行启动命令后会执行它的 main 方法,启动 CoarseGrainedExecutorBackend 进程。 CoarseGrainedExecutorBackend 进程是...

2019-07-02 18:24:32

阅读数 314

评论数 0

原创 Spark 源码分析(五): Executor 启动

上一篇已经将 Application 注册到了 master 上了,在 master 收到注册消息后会进行一系列操作,最后调用 schedule 方法。 这个 schedule 方法会去做两件事,一件事是给等待调度的 driver 分配资源,另一件事是给等待调度的 application 去分配资...

2019-07-02 17:39:21

阅读数 316

评论数 0

原创 Spark 源码分析(四): Application 的注册

在前面一篇文章中分析到了 SparkContext 中的 TaskScheduler 创建及启动。 在 StandaloneSchedulerBackend start 代码里除了创建了一个 DriverEndpoint 用于 standalone 模式下用来和 Executor 通信之外还会创...

2019-07-02 16:02:57

阅读数 252

评论数 0

原创 Spark 源码分析(三): SparkContext 初始化之 TaskScheduler 创建与启动

前面已经分析到了 driver 进程成功在某台 worker 上启动了,下面就开始执行我们写的那些代码了。以一个 wordcount 程序为例,代码如下: val conf = new SparkConf() .setAppName("WordCount") ...

2019-07-02 12:02:01

阅读数 252

评论数 0

原创 Spark 源码分析(二): Driver 注册及启动

上一篇文章已经已经执行到 Client 向 masterEndpoint 发送了 RequestSubmitDriver 信息,下面就看看 master 怎么注册 driver 信息,并且怎么让 worker 去启动 driver 的。 一,org.apache.spark.deploy.mast...

2019-07-01 23:16:15

阅读数 298

评论数 0

原创 Spark 源码分析(一):Spark Submit 任务提交

研究 Spark 内部是怎么运行的,怎么将 Spark 的任务从开始运行到结束的,先从 spark-submit 这个 shell 脚本提交用户程序开始。 我们一般提交 Spark 任务时,都会写一个如下的脚本,里面指定 spark-submit 脚本的位置,配置好一些参数,然后运行: ./bin...

2019-07-01 17:17:09

阅读数 306

评论数 0

原创 Spark 中的 RPC

Spark 是一个 通用的分布式计算系统,既然是分布式的,必然存在很多节点之间的通信,那么 Spark 不同组件之间就会通过 RPC(Remote Procedure Call)进行点对点通信。 Spark 的 RPC 主要在两个模块中: 1,spark-core 中,主要承载了更好的封装 ser...

2019-07-01 11:49:43

阅读数 273

评论数 0

原创 Spark 的一些名词术语

摘抄官网关于 Spark 中常用的一些名词术语: Term Meaning Application User program built on Spark. Consists of a driver program and executors on the cluster. A...

2019-06-28 14:47:19

阅读数 236

评论数 0

原创 Intellij IDEA 清除无用 import 快捷键以及自动清除设置

windows 系统下快捷键设置都在:File -> Settings -> Keymap 下面,入下图所示,设置清除无用 import 的 key 时 optimize imports,windows 下默认快捷键的值为:ctrl + alt + o : 如果要设置自动清除这些无用...

2019-06-27 08:18:24

阅读数 5879

评论数 0

原创 Spark 的 cogroup 和 join 算子

cogroup 这个算子使用的频率很低,join 算子使用频率较高,两者都是根据两个 RDD 的 key 进行关联。具体看下面的代码,先看下面的 2 个 RDD: SparkConf conf = new SparkConf() .setAppName("...

2019-06-26 18:02:10

阅读数 289

评论数 0

原创 Spark SQL 中 UDF 和 UDAF 的使用

Spark SQL 支持 Hive 的 UDF(User defined functions) 和 UDAF(User defined aggregation functions) UDF 传入参数只能是表中的 1 行数据(可以是多列字段),传出参数也是 1 行,具体使用如下: /** * 拼接...

2019-06-26 15:08:22

阅读数 258

评论数 0

原创 Mac 上启动开启 sshd 服务

问题: 用 ssh 远程连接 Mac 电脑时候出现 ssh: connect to host localhost port 22: Connection refused 拒绝连接的错误。 解决方案: 1,首先看一下本地是否开启了 sshd 服务: ~ ps auwx | grep sshd 发现...

2019-06-26 14:16:56

阅读数 793

评论数 0

原创 ssh 远程连接的两种验证方式

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。其目的是实现安全远程登录以及其它安全网络服务。 从客户端来看,SSH提供两种级别的安全验证。一种是基于口令的安全验证,另一种是基于密钥...

2019-06-26 12:02:31

阅读数 475

评论数 0

原创 git 指令:丢弃本地所有未提交的更改

指令: git clean -df //丢弃所有 untracked 的文件 git reset --hard //将 tracked 的文件重置到前一个版本

2019-06-26 08:39:08

阅读数 1972

评论数 0

原创 Spark:failure: ``union'' expected but `(' found

问题: Spark 1.5.1 本地使用 SQLContext 报错: failure: ``union'' expected but `(' found 这个报错在位置在开窗函数执行语句处。 原因及解决方法: 从 Spark 2.0 开始,Spark SQL 才本...

2019-06-24 10:43:23

阅读数 265

评论数 0

原创 社保查询或者转移的一些事

上海查询社保的网站:上海一网通办 一,养老保险: 养老保险缴纳的费用分成两部分,一部分是个人缴纳的,这部分钱进入个人账户,可以随你的工作城市转移,另一部分是公司缴纳的,这部分钱不会进个人账户,会打到当地统筹账户中,用于退休老人养老金的领取(这里好坑,单位缴纳的很多,是你工资的 20%)。 2019...

2019-06-20 22:09:17

阅读数 183

评论数 0

原创 从 MapReduce 的运行机制看它为什么比 Spark 慢

在 Hadoop1 中,MapReduce 计算框架即负责集群资源的调度,还负责 MapReduce 程序的运行。 MapReduce 的运行过程有三个关键进程: 1,大数据应用进程。这是用户启动的 MapReduce 程序进程,主要是指定 Map 和 Reduce 类、输入输出文件路径等,并提交...

2019-06-16 14:23:07

阅读数 249

评论数 0

原创 Yarn 的组成及其工作流程

在 Hadoop1 中 MapReduce 框架即负责集群的资源调度,还负责 MapReduce 程序的运行。由于这种架构资源调度和计算高度耦合,导致了一个 Hadoop 集群中只能跑 MapReduce 计算任务,无法跑其它的计算任务,维护成本很高。 在后面的 Hadoop2 中改成了 Yarn...

2019-06-16 14:20:40

阅读数 300

评论数 0

原创 ShuffleManager 原理

在 Spark 的源码中,负责 shuffle 过程的执行、计算、处理的组件主要是 ShuffleManager。 在 Spark 1.2 以前,默认的 shuffle 计算引擎是 HashShuffleManager。该 ShuffleMananger 有一个非常严重的弊端,就是会产生大量的磁盘...

2019-06-11 16:19:44

阅读数 391

评论数 0

原创 Spark 解决数据倾斜的几种常用方法

数据倾斜是大数据计算中一个最棘手的问题,出现数据倾斜后,Spark 作业的性能会比期望值差很多。数据倾斜的调优,就是利用各种技术方案解决不同类型的数据倾斜问题,保证 Spark 作业的性能。 一,数据倾斜原理 一个 Spark 作业,会根据其内部的 Action 操作划分成多个 job,每个 jo...

2019-06-06 16:13:29

阅读数 1063

评论数 2

原创 Spark 中一些常见的 troubleshooting

记录一些常见的 Spark 作业里的 troubleshooting。 1,shuffle reduce 端缓冲大小导致的 OOM 在 shuffle 过程中,reduce 端在拉取 map 端的数据时,每个 task 会有自己的 缓冲区用来存放每次拉取的数据,这个缓冲区默认是 48M。 如果 m...

2019-06-04 21:30:20

阅读数 108

评论数 0

原创 Spark 的 Yarn-cluster 模式和 Yarn-client 模式

Spark 支持 Yarn 集群的部署模式,在 Spark On Yarn 模式下,每个 Spark 的 Executor 作为一个 Yarn container 在运行,同事支持多个任务在同一个 container 中运行。 Yarn 的 Application Master 概念:在 Yarn...

2019-06-04 17:47:05

阅读数 167

评论数 0

原创 Spark 性能优化:代码中常用的几个调整点

前面三篇文章:资源分配,调整并行度,重构 RDD 和 RDD 持久化,这三种优化方式调整到位之后会让整个 Spark 作业执行速度有非常明显的提升。 除此之外我们还有很多其它性能优化的手段,但在和前面三种方式比较,正常情况下提升没有那么大。 1,使用广播变量 在 task 执行算子函数运算的时候,...

2019-05-30 16:08:42

阅读数 176

评论数 0

原创 Spark 性能优化:重构 RDD 及 RDD 持久化

在写 Spark 的应用时,应该尽量避免这两种情况: 1,几个功能明明可以在一个算子操作中完成,为了代码清晰,把这个算子拆分成多个算子进行操作。这种操作往往会增加很多的性能开销。 2,出现公用的 RDD 时候不做持久化操作,比如: RDD2 是会被复用的 RDD,默认情况下,第一次使用 RDD2...

2019-05-30 16:08:14

阅读数 113

评论数 0

原创 Spark 性能优化:调节并行度

并行度:Spark 作业中,会根据 action 操作划分成多个 job,每个 job 中会根据 shuffle 划分成多个 stage,每个 stage 会分配多个 task 去执行,各个 stage 划分的 task 数量就代表了 Spark 作业在该 stage 的并行度。 一,调整并行度的...

2019-05-30 16:07:44

阅读数 188

评论数 0

原创 Spark 性能优化:资源分配

性能调优的王道是分配更多的资源,当目前资源够用的情况下,分配的资源越充分,在性能和速度上的提升越明显。当资源无法分配更多时候才会去考虑后续的一些调优手段。 一,分配的资源有哪些? 1,分配的 executor 数量; 2,每个 executor 需要的 core 数量; 3,每个 executor...

2019-05-30 16:06:59

阅读数 284

评论数 0

原创 Spark 的执行过程

1,Spark 应用程序启动在自己的 JVM 进程中,即 Driver 进程。启动后 SparkContext 初始化执行配置和输入数据。SparkContext 启动 DAGScheduler 构造执行的 DAG 图,然后切分成最小的执行单位:task。 注:Spark 应用会根据 Action...

2019-05-27 09:15:16

阅读数 160

评论数 0

原创 什么是 RDD ?

Spark 中最基本的数据抽象是 RDD。 RDD:弹性分布式数据集 (Resilient Distributed DataSet)。 1,RDD 有三个基本特性 这三个特性分别为:分区,不可变,并行操作。 a, 分区 每一个 RDD 包含的数据被存储在系统的不同节点上。逻辑上我们可以将 RDD ...

2019-05-23 14:45:17

阅读数 104

评论数 0

原创 Spark 中 File,Block,Split,Task,Partition,RDD概念的理解

1,在 HDFS 中会以 Block 为单位进行存储很多的 File,也就是说每个 File 可能会被拆分成多个 Block 存储在 HDFS 上; 2,当 Spark 读取 HDFS 上的文件作为输入时,会根据具体数据格式对应的 InputFormat 进行解析,一般情况下是将很多个 Block...

2019-05-22 11:35:34

阅读数 152

评论数 0

原创 Spark 中几个 join 算子

Spark 中和 join 相关的算子有这几个:join、fullOuterJoin、leftOuterJoin、rightOuterJoin 这几种 join 算子和 sql 中的 join 类似,join 相当于内连接,fullOuterJoin 相当于全连接,leftOuterJoin 相当...

2019-05-16 14:35:57

阅读数 414

评论数 0

原创 .gitignore 规则不生效

问题:配置了 .gitignore 文件,但在 git add 的时候没有忽略掉。 有两种可能: .gitignore 文件配置有问题,比如我碰到过一次这个问题:我在 windows 系统下的 idea 中使用了 「Add to gitignore」 这个插件去添加需要被 ignore 的文件夹...

2019-04-27 10:46:52

阅读数 107

评论数 0

原创 AS中几个Gradle配置的作用

一个使用 Gradle 构建的 Android 项目中一般会涉及到三个 Gradle 相关的东西,分别是: 1,Gradle:是一个基于 Apache Ant 和 Apache Maven 概念的项目 自动化建构 工具。它使用一种基于 Groovy 的特定领域语言 来声明项目设置,而不是传统的 X...

2019-03-27 13:56:46

阅读数 243

评论数 0

提示
确定要删除当前文章?
取消 删除