自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱磊的博客

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

  • 博客(98)
  • 资源 (1)
  • 收藏
  • 关注

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

前面已经分析到了 DAGScheduler 对 stage 划分,并对 Task 的最佳位置进行计算之后,通过调用 taskScheduler 的 submitTasks 方法,将每个 stage 的 taskSet 进行提交。在 taskScheduler 的 submitTasks 方法中会为每个 taskSet 创建一个 TaskSetManager,用于管理 taskSet。然后向调度池...

2019-07-08 17:01:07 438

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

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

2019-07-03 23:40:07 593

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

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

2019-07-03 16:36:22 854

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

前一篇文章介绍了 Executor 进程的启动,最后启动的是 CoarseGrainedExecutorBackend,执行启动命令后会执行它的 main 方法,启动 CoarseGrainedExecutorBackend 进程。CoarseGrainedExecutorBackend 进程是 Executor 的守护进程,用户 Executor 的创建和维护。首先我们先看下 main 方法...

2019-07-02 18:24:32 748

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

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

2019-07-02 17:39:21 593

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

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

2019-07-02 16:02:57 499

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

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

2019-07-02 12:02:01 631

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

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

2019-07-01 23:16:15 1047

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

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

2019-07-01 17:17:09 841

转载 MapReduce 与 Spark 性能对比分析

Spark 和 MapReduce 的对比误区经常听到有人说Spark基于内存计算,将中间结果保存在内存中,避免了磁盘IO的次数。我觉得这句话的表面意思都对,但是很多人并没有了解其真正的含义。spark 为何比 mapreduce 快1. Spark是内存计算,难道MapReduce不是基于内存计算的吗?什么是内存计算,如果是指把磁盘中的数据读取到内存中做计算的话,那么MapReduce肯定也是内存计算。Spark的特殊之处在于可以将RDD缓存到内存之中,下次再使用此RDD时,不用再次计算,而是直接

2022-03-18 11:02:44 1399 1

转载 一文读懂Apache Kylin

前言随着移动互联网、物联网等技术的发展,近些年人类所积累的数据正在呈爆炸式的增长,大数据时代已经来临。但是海量数据的收集只是大数据技术的第一步,如何让数据产生价值才是大数据领域的终极目标。Hadoop的出现解决了数据存储问题,但如何对海量数据进行OLAP查询,却一直令人十分头疼。企业中的查询大致可分为即席查询和定制查询两种。之前出现的很多OLAP引擎,包括Hive、Presto、SparkSQL等,虽然在很大程度上降低了数据分析的难度,但它们都只适用于即席查询的场景。它们的优点是查询灵活,但是随着数据量

2021-03-03 17:35:39 655 1

原创 数据库三大范式

一、概述目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)就行了。二、三范式第一范式(1NF):强调数据表的原子性所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每

2021-02-26 11:53:23 733

转载 星型模型和雪花型模型比较

一、概述在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图 1 。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家

2021-02-23 10:20:54 310

原创 AWS EMR 上 Spark 任务 Exit status: -100 Container released on a *lost* node 错误

一、问题描述近期,使用 AWS EMR 集群上跑 Spark 任务时常出现 Exit status: -100. Diagnostics: Container released on a lost node 这样的报错信息,导致任务运行失败报错日志如下:ERROR cluster.YarnClusterScheduler: Lost executor 6 on ip-10-0-2-173.ec2.internal: Container marked as failed: container_1467

2021-01-22 15:17:38 2691

原创 AWS EMR 上 Spark 任务 Container killed Exit code 137 错误

一、问题描述近期,使用 AWS EMR 集群上跑 Spark 任务时常出现 Container killed on request. Exit code is 137 这样的报错信息,导致任务运行失败报错日志如下:Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 3.0 failed 4 times, most recent failure: Lost task

2021-01-22 14:53:26 3062

原创 大数据系统架构

大数据系统大体可以分成以下四个部分:1,数据采集层2,数据计算层3,数据服务层4,数据应用层下图是阿里巴巴大数据系统架构图:一、数据采集层数据采集主要分成以下三块数据:1,Web 端日志2,App 端日志3,第三方数据(比如 mysql 增量数据同步)Web 端和 App 端的日志数据都需要制定各个场景下的埋点规范,用来满足各种通用业务场景下(比如浏览、点击等)的数据分析。Web 端和 App 端数据采集一般都有各自的埋点 SDK 和对应的埋点管理平台,用来确保埋点数据的规范和准确

2020-10-26 18:24:47 8679

原创 SparkSQL 中的 hint

SparkSQL 2.2 增加了 Hint Framework 的支持,允许在查询中加入注释,让查询优化器优化逻辑计划。目前支持的 hint 有三个:COALESCE、REPARTITION、BROADCAST,其中 COALESCE、REPARTITION 这两个是 SparkSQL 2.4 开始支持。一、COALESCE、REPARTITION 使用SELECT /*+ COALESCE(2) */ ...SELECT /*+ REPARTITION(10) */ ...这两个 hint

2020-06-04 22:42:54 2992

原创 SparkSQL 性能调优参数

1,spark.hadoopRDD.ignoreEmptySplits默认是false,如果是true,则会忽略那些空的splits,减小task的数量。2,spark.hadoop.mapreduce.input.fileinputformat.split.minsize是用于聚合input的小文件,用于控制每个mapTask的输入文件,防止小文件过多时候,产生太多的task。3,spa...

2019-11-10 19:21:31 3098

原创 Linux 指令之安装软件

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

2019-07-28 16:25:39 625

原创 Linux 指令之用户和密码

1,修改密码的指令为:passwd# passwdChanging password for user root.New password:按照这个命令可以输入新密码。2,创建用户的指令为:useradd useradd stone执行这个指令,一个用户就会被创建了。接下来可以自己调用 passwd stone 来设置密码,然后再登陆。切换用户可以使用 su stone 命令。...

2019-07-28 16:23:57 875

原创 hexo 博客迁移

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

2019-07-26 16:36:59 642

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

Java 中堆内存是 JVM 管理内存中最大的一块内存,同时又是 GC 管理的重要区域。Java 堆内存主要分成两个区域:1,年轻代。年轻代内部又分成了两个区,一个是 Eden 区,一个是 Survivor 区。Survivor 区又划分成两块,一块是 from 区,一块是 to 区;2,老年代。具体一点可以看图:一、年轻代IBM 公司的专业研究表明,有将近 98% 的对象是朝生夕...

2019-07-12 14:49:38 526 1

转载 Spark 内存管理详解(下):内存管理

本文转自:Spark内存管理详解(下)——内存管理本文最初由IBM developerWorks中国网站发表,其链接为Apache Spark内存管理详解在这里,正文内容分为上下两篇来阐述,这是下篇,上一篇请移步博客列表的上一篇文章。Spark内存管理详解(上)——内存分配 1. 堆内和堆外内存 2. 内存空间分配Spark内存管理详解(下)——内存管理 3. 存储内存管理 ...

2019-07-10 14:20:54 878

转载 Spark 内存管理详解(上):内存分配

本文转自:Spark 内存管理详解(上)——内存分配Spark作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中占据着非常重要的角色。理解Spark内存管理的基本原理,有助于更好地开发Spark应用程序和进行性能调优。本文旨在梳理出Spark内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于Spark 2.1版本,阅读本文需要读者有一定的Spark和Java基...

2019-07-10 14:20:03 2265

原创 Spark 中的 RPC

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

2019-07-01 11:49:43 848

原创 Spark 的一些名词术语

摘抄官网关于 Spark 中常用的一些名词术语:TermMeaningApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.Application jarA jar containing the user’s Spark ap...

2019-06-28 14:47:19 634

转载 java 为什么要重写 hashCode 和 equals 方法

转自:https://blog.csdn.net/zknxx/article/details/53862572一、如果不被重写(原生)的 hashCode 和 equals 是什么样的?不被重写(原生)的 hashCode 值是根据内存地址换算出来的一个值。不被重写(原生)的 equals 方法是严格判断一个对象是否相等的方法(object1 == object2)。二、为什么需要重写...

2019-06-27 16:44:11 438

翻译 Spark 共享变量

翻译 Spark 共享变量部分的官方文档(Spark 2.4.3)。通常,当传递给 Spark 操作 (如 map 或 reduce ) 的函数在远程集群节点上执行时,在函数中使用的所有外部变量都是单独拷贝的变量副本。这些变量被复制到每台机器上,对远程机器上的变量更新不会传播回驱动程序。支持通用的、任务间的读写共享变量是很低效的。不过,Spark确实为两种常见的使用模式提供了两种有限的共享变量类...

2019-06-27 14:41:54 1041

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

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

2019-06-27 08:18:24 46458 2

原创 Spark 的 cogroup 和 join 算子

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

2019-06-26 18:02:10 1196

原创 Spark SQL 中 UDF 和 UDAF 的使用

Spark SQL 支持 Hive 的 UDF(User defined functions) 和 UDAF(User defined aggregation functions)UDF 传入参数只能是表中的 1 行数据(可以是多列字段),传出参数也是 1 行,具体使用如下:/** * 拼接一行中两列字段,数据类型一个为长整型,一个为字符串 * Created by zhulei on 2...

2019-06-26 15:08:22 1017

原创 Mac 上启动开启 sshd 服务

问题:用 ssh 远程连接 Mac 电脑时候出现 ssh: connect to host localhost port 22: Connection refused 拒绝连接的错误。解决方案:1,首先看一下本地是否开启了 sshd 服务:~ ps auwx | grep sshd发现 sshd 服务已经开启了,如果没开启请自行开启 sshd 服务再看情况;2,由于服务已经开启,但我...

2019-06-26 14:16:56 4736

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

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

2019-06-26 12:02:31 3355 1

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

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

2019-06-26 08:39:08 8136

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

问题:Spark 1.5.1 本地使用 SQLContext 报错:failure: ``union'' expected but `(' found这个报错在位置在开窗函数执行语句处。原因及解决方法:从 Spark 2.0 开始,Spark SQL 才本地实现了开窗函数(SPARK-8641),在 Spark 2.0 之前要使用开窗函数,必须使用 HiveContext 去操作。同...

2019-06-24 10:43:23 1185

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

上海查询社保的网站:上海一网通办一,养老保险:养老保险缴纳的费用分成两部分,一部分是个人缴纳的,这部分钱进入个人账户,可以随你的工作城市转移,另一部分是公司缴纳的,这部分钱不会进个人账户,会打到当地统筹账户中,用于退休老人养老金的领取(这里好坑,单位缴纳的很多,是你工资的 20%)。2019 年 6 月 20 日,目前的规定是:确定职工退休年龄。 普通职工是女性满50岁可退休,机关企事业单位...

2019-06-20 22:09:17 533

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

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

2019-06-16 14:23:07 784

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

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

2019-06-16 14:20:40 2247

原创 ShuffleManager 原理

在 Spark 的源码中,负责 shuffle 过程的执行、计算、处理的组件主要是 ShuffleManager。在 Spark 1.2 以前,默认的 shuffle 计算引擎是 HashShuffleManager。该 ShuffleMananger 有一个非常严重的弊端,就是会产生大量的磁盘文件,进而有大量的磁盘 IO 操作,比较影响性能。因此在 Spark 1.2 之后,默认的 Shuf...

2019-06-11 16:19:44 735

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

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

2019-06-06 16:13:29 2337 2

TabHostDemo

Android FragmentTabHost轻松实现微博主界面,相关解释在我的博客中:http://blog.csdn.net/zzz_zzz_z/article/details/51481378

2016-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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