自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hery_csnd168的博客

不积跬步无以至千里,不积小流无以成江海

  • 博客(40)
  • 资源 (7)
  • 收藏
  • 关注

原创 1008深度分析wordcount

以 Spark 2.1.0 的 examples 项目自带的 JavaWordCount 为例,从 Java 语言出发,介绍广为人知的 word count,并展示 Spark API 的使用。通过对此例子的介绍,还将帮助读者把调度系统、计算引擎、部署模式等内容串联起来,以对 Spark 核心知识的掌握上升到一个更高的层次。JavaWordCount 的实现public final class J...

2020-04-03 21:28:59 117

原创 1004RDD分析二

RDD有与调度系统相关的 API,还提供了很多其他类型的 API,包括对 RDD 进行转换的 API、对 RDD 进行计算(动作)的 API 及 RDD 检查点相关的 API。转换 API 里的计算是延迟的,也就是说调用转换 API 不会向 Spark 集群提交 Job,更不会执行转换计算。只有调用了动作 API,才会提交 Job 并触发对转换计算的执行。转换 API转换(transform)是...

2020-04-03 21:28:31 151

转载 Apache Spark 内存管理详解

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

2020-04-03 21:28:04 90

原创 Spark Streaming(下)--实时流计算Spark Streaming实战

1、实例演示1.1流数据模拟器1.1.1流数据说明在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境将定义流数据模拟器。该模拟器主要功能:通过Socket方式监听指定的端口号,当外部程序通过该端口连接并请求数据时,模拟器将定时将指定的文件数据随机获取发送给外部程序。1.1.2模拟器代码import java.io.{PrintWriter}import jav...

2020-04-03 21:26:14 125

原创 0201初识 Spark

Spark 是一个通用的并行计算框架,由加州伯克利大学(UC Berkeley)的 AMP 实验室开发于 2009 年,并于 2010 年开源,2013 年成长为 Apache 旗下在大数据领域最活跃的开源项目之一。Spark 目前已经走过了 0.x 和 1.x 两个时代,现在正在 2.x 时代稳步发展。Spark 也是基于 map reduce 算法模型实现的分布式计算框架,拥有 Hadoop ...

2020-04-03 21:25:13 88

原创 1002数据源 DataSource

从 Spark 1.3.0 开始,Spark 推出了 DataFrame 的 API,与此同时 DataSource 也被引入到 Spark 中。Spark 将文本文件、CSV 文件、JSON 文件等一系列格式的输入数据都作为数据源。特质 DataSourceRegister 是对所有数据源的抽象,DataSourceRegister 的所有具体实现都被注册到了 DataSource 中。Data...

2020-04-03 21:24:41 135

原创 1001数据结构基本概念

基本概念本章会涉及一些基本概念,包括数据类型(DataType)、结构类型(StructType)、结构字段(StructField)及元数据(Metadata)。通过本节对这些基本概念的介绍,有利于本章后续内容的展开。DataType 简介DataType 是 Spark SQL 的所有数据类型的基本类型,Spark SQL 的所有数据类型都继承自 DataType,DataType 的继承体系...

2020-04-03 21:24:26 164

原创 1005数据集合 Dataset

Dataset 是特定领域对象的强类型集合,可通过功能或关系操作进行并行转换。当 Dataset 的泛型类型是 Row 时,Dataset 还可以作为 DataFrame。DataFrame 的类型定义如下。type DataFrame = Dataset[Row]有了行的数据集合,DataFrame 看起来更像是关系数据库中的表。DataFrame 是专门为了数据科学应用设计,支持从 KB 到 ...

2020-04-03 21:24:12 131

原创 1006DataFrameReader 详解

DataFrameReader 用于通过外部数据源的格式(如 text、CVS 等)和数据结构加载 Dataset,DataFrameReader 还提供了非常丰富的操作 DataFrame 的 API。有了DataFrame-Reader,我们就可以将各种格式的数据源转换为 Dataset 或DataFrame,进而以面向关系型数据的方式操纵各种格式的数据。DataFrameReader属性so...

2020-04-03 21:23:46 469

原创 1007SparkSession 详解

Spark 2.0 引入了 SparkSession,为用户提供了一个统一的切入点来使用 Spark 的各项功能。SparkSession 还提供了 DataFrame 和 Dataset 相关的 API 来编写 Spark 应用程序。SparkSession 降低了学习曲线,使得工程师可以更容易地使用 Spark。SparkSession 的属性如下。sparkContext:即 SparkCo...

2020-04-03 21:23:27 239

原创 spark源码学习目录

1001数据结构基本概念1002数据源 DataSource1003检查点的实现1004RDD分析二1005数据集合Dataset1006DataFrameReader1007SparkSession 详解1008深度分析wordcount

2020-04-03 21:23:00 93

原创 0906Master详解

概述 Master 是 local-cluster 部署模式和 Standalone 部署模式中,整个 Spark 集群最为重要的组件之一,它的设计将直接决定整个集群的可扩展性、可用性和容错性。Master 的职责包括 Worker 的管理、Application 的管理、Driver 的管理等。Master 负责对整个集群中所有资源的统一管理和分配,它接收各个 Worker 的注册、更新状态、...

2020-04-03 21:22:45 171

原创 1003检查点checkPoint的实现

检查点是很多分布式系统为了容灾容错引入的机制,其实质是将系统运行期的内存数据结构和状态持久化到磁盘上,在需要时通过对这些持久化数据的读取,重新构造出之前的运行期状态。Spark 使用检查点主要是为了将 RDD 的执行状态保留下来,在重新执行时就不用重新计算,而直接从检查点读取。CheckpointRDD 是对检查点数据进行操作的 RDD,例如,读写检查点数据。RDDCheckpointData 表...

2019-10-25 11:19:39 168

原创 kafka概念

背景:当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:如何收集这些巨大的信息 如何分析它 如何及时做到如上两点以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统。kafka的几个特...

2019-10-25 11:18:51 135

转载 Spark算子使用示例

1. 算子分类从大方向来说,Spark 算子大致可以分为以下两类Transformation:操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。Action:会触发 Spark 提交作业(Job),并将数据输出 Spark系统。从小方向来说,Spark 算子大致可以分为以下三类:Value数据类型的Tran...

2018-04-17 15:55:52 320

转载 Spark 2.x 性能调优-IBM

IBM Big Data PerformanceJesse Chen, [email protected] Troubleshooting Spark 2.x Building SparkRunning Spark-  ‘--verbose’-  Missing external JARs-  OOM on Spark driver-  OOM on executors-  GC pol...

2018-03-13 09:37:54 1640

原创 11shuffle调优之合并map端输出文件

前置条件每个executor有2个CPU core,4个task。task是线程执行的,所以先并行跑2个task,再跑剩下的2个task。问题分析:默认的shuffle行为,对性能有什么样的影响?实际生产环境的条件:100个节点,每个节点一个executor,那么有100个executor,每个executor2个CPU core,总共1000个task,每个executor平均10个task那...

2018-03-13 09:24:40 421

原创 10 shuffle调优原理概述-性能优化

什么的情况下会发生shuffle?在spark中,最主要是以下几个算子:groupByKey,reduceByKey,countByKey ,join等什么是shuffle?groupBykey ,把分布在集群各个节点上的数据中,同一个key,对应的values,都给集中到一块,集中到集群中的同一个节点,更严密的一点说,就是集中到一个节点的一个executor的一个task中。然后呢,集中一个ke...

2018-03-12 15:48:39 173

转载 09JVM调优之调节executor堆外内存与连接等待时长

executor 堆外内存有时候,如果你的 spark 作业处理的数据量特别特别大,比如有几亿数据量,然后spark 作业一运行,时不时的报错,出现 shuffle file cannot find 诸如此类的错误,导致 executor、task lost,out of memory(内存溢出),出现这种情况可能是说 executor 的堆外内存不太够用,导致 executor 在运行的过程中可...

2018-03-12 13:48:26 196

转载 08JVM调优之原理概述以及降低cache操作的内存占比

性能调优分类常规性能调优:分配资源、并行度等等方式。JVM 调优(Java虚拟机):JVM相关的参数。通常情况下,如果你的硬件配置、基础的 JVM 的配置都 ok 的话,JVM 通常不会造成太严重的性能问题,反而更多的是在 troubleshooting 中 JVM 占了很重要的地位, JVM 造成线上的 spark 作业的运行报错,甚至失败(比如OOM)。shuffle 调优(相当重要):spa...

2018-03-12 13:47:49 172

转载 07性能调优之调节数据本地化等待时长

数据本地化等待时长Spark 在 Driver上,对 Application 的每一个 stage 的 task 进行分配之前都会计算出每个 task 要计算的是哪个分片数据,即 RDD 的某个 partition。Spark 的 task 分配算法优先会希望每个 task 正好分配到它要计算的数据所在的节点,这样的话就不用在网络间传输数据。但是呢,通常来说,有时事与愿违,可能 task 没有机会...

2018-03-12 13:46:48 140

转载 06性能调优之使用 fastutil 优化数据格式

fastutil 介绍fastutil 是扩展了Java标准集合框架(Map、List、Set;HashMap、ArrayList、HashSet)的类库,提供了特殊类型的map、set、list和queue。fastutil 能够提供更小的内存占用,更快的存取速度。我们使用fastutil提供的集合类,来替代自己平时使用的JDK的原生的Map、List、Set,好处在于:fastutil集合类,...

2018-03-12 13:46:03 355

转载 05性能调优之Kryo序列化

Kryo 序列化原因在广播大变量进行优化后,还可以进一步优化,即优化这个序列化格式。 默认情况下,Spark内部是使用Java的序列化机制ObjectOutputStream / ObjectInputStream这种对象输入输出流机制来进行序列化。 这种默认序列化机制的好处在于:处理起来比较方便,也不需要我们手动去做什么事情,只是在算子里面使用的变量必须是实现Serializable接口的,可序...

2018-03-12 13:42:56 469

转载 04性能调优之广播大变量

问题分析Spark Application的Driver进程,其实就是我们写的Spark作业打成的jar运行起来的进程,以随机抽取map步骤为例,其工作时过程大致为: 这种默认的情况下,task执行的算子中使用了外部的变量,每个task都会获取一份变量的副本,有什么缺点呢?在什么情况下会出现性能上的恶劣的影响呢?因为map本身是不小,存放数据的一个单位是Entry,还有可能会用链表的格式的来存放E...

2018-03-12 13:42:10 160

转载 03性能调优之重构RDD架构以及RDD持久化

RDD架构重构与优化一种情况是从一个RDD到几个不同的RDD,算子和计算逻辑其实是完全一样的,结果因为人为的疏忽计算了多次,获取到了多个RDD。所以尽量去复用RDD,差不多的RDD可以抽取称为一个共同的RDD,供后面的RDD计算时,反复使用。公共RDD一定要实现持久化 当第一次对RDD2执行算子,获取RDD3的时候,就会从RDD1开始计算,就是读取HDFS文件,然后对RDD1执行算子,获取到RDD...

2018-03-12 13:38:09 159

转载 02性能调优之调节并行度

以 Spark 中的 WordCount 作业为例,每个Spark作业其实都是一个 Application,每个 Application 对应多个 Jobs,一个 action 操作(比如 collect)触发一个 job,在WordCount程序中有一个 job,每个 job 拆成多个 stage(发生 shuffle 的时候回拆分出一个 stage),reduceByKey 处会发生 shuf...

2018-03-07 09:20:04 146

转载 01性能调优之分配更多资源

分配更多资源性能调优的王道就是增加和分配更多的资源,性能和速度上的提升是显而易见的。基本上,在一定范围之内,增加资源与性能的提升是成正比的。写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,我觉得就是要来调节最优的资源配置,在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,那么才是考虑去做后面的这些性能调优的点。分配哪些...

2018-03-07 09:05:36 175

原创 RDD实现详解

RDD是Spark最基本也是最根本的数据抽象, 它具备像MapReduce等数据流模型的容错性, 并且允许开发人员在大型集群上执行基于内存的计算。 现有的数据流系统对两种应用的处理并不高效: 一是迭代式算法, 这在图应用和机器学习领域很常见; 二是交互式数据挖掘工具。 这两种情况下, 将数据保存在内存中能够极大地提高性能。 为了有效地实现容错, RDD提供了一种高度受限的共享内存, 即

2017-04-06 18:25:48 1788

原创 Spark架构综述

用户程序从最开始的提交到最终的计算执行, 需要经历以下几个阶段:1) 用户程序创建SparkContext时, 新创建的SparkContext实例会连接到Cluster Manager。 Cluster Manager会根据用户提交时设置的CPU和内存等信息为本次提交分配计算资源, 启动Executor。2) Driver会将用户程序划分为不同的执行阶段, 每个执行阶段由一组完全相同的Task组...

2017-04-06 18:00:33 577

转载 java常用的几种线程池比较

1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应

2017-03-04 15:10:20 350

原创 二叉树结构

dsfad

2017-03-03 17:00:26 247

转载 第58课:使用Java和Scala在IDE中开发DataFrame实战学习笔记

本期内容:1. 使用Java开发DataFrame实战2.  使用Scala开发DataFrame实战 自Spark1.3开始大多数SparkSQL都基于DataFrame编程。因为DataFrame高效且功能强大。可以把SparkSQl作为一个分布式查询引擎。SparkSQL一般都和Hive一起使用。使用Java开发Spark应用程序的原因:

2016-06-03 09:23:10 575

原创 Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解

内容:1、Scala主构造器2、构造器重载3、私有构造器一

2015-08-02 14:39:56 495

原创 Scala学习第7天 Scala类的属性和对象私有字段实战详解

Scala类的使用实战

2015-08-02 14:39:20 388

原创 Scala学习第六天 Map、Tuple、Zip实战解析

1、Map、Tuple、Zip使用

2015-08-02 14:38:17 313

转载 Scala学习第四天 Scala的For与Function进阶实战、Lazy的使用

1、For&Function进阶(1)For 使用def main(args: Array[String]): Unit = { for (i <- 1 to 2; j <- 1 to 2 if i != j) //将1到2的集合每次循环赋值给i,将1到2的集合每次循环赋值给j,如果i!=j,就输出当i=1,j=2结果为102,当i=2,j=1结果是201 println(

2015-08-02 14:37:50 251

原创 Scala学习第五天 Scala数组操作实战详解

1、数组的基本操作//声明一个固定长度的数组,类型为Int,元素个数为10. val nums= new ArrayInt//声明一个类型为String的固定长度的数组,元素个数为10 .val a =new ArrayString//直接以Array的方式声明一个数组,初始化第一个元素为’Hello’,第二个元素为”World”,通过类型推导,判断出//数组的类型为String.val s= A

2015-08-02 14:37:23 392

原创 Scala学习第三天 Tuple、Array、May与文件操作入门实战

1、Tuple 元组Tuple是Scala的容器对象之一,元组中可以有很多的数据,索引是从_1开始,不同于Java的数组,是从0开始的,而且元组可以包含不同类型的元素,十分灵活。def main(args: Array[String]): Unit = { val triple = (100, "Scala", "Spark"); println(triple._1) printl

2015-08-02 14:37:02 333

转载 Scala学习第二天 Scala函数定义、流程控制、异常处理

1、Scala的函数定义定义函数,需要给出函数的名称、参数和函数体,按照以下格式定义scala函数.def 函数名称(函数输入参数类型): Unit{ //函数的实现提} 1.2 没有输入参数的函数 def doWhile() { var line = "" do { line = readLine() println

2015-08-02 14:31:50 390

转载 Scala学习第一天 scala开发环境搭建和helloword解析

1、什么是Scala?Scala 本身是函数式编程和面向对象编程结合的语言,函数式编程适合于数值型计算。面向对象特别适合于大型工程和项目的组织,和团队的分工协作。Scala在函数式编程和面向对象编程基础之上构建了一门非常优雅的语言。借助于scala可以构造各种规模的项目,在做计算的时候非常的精致和富裕表现力。从软件工程和数值计算来看,Scalas是一门近乎于完美的语言,既具有j

2015-08-02 14:30:54 377

LearningSparkSQL_Code.zip

spark2.0的sparksql代码,各种示例源码,适合入门开发人员参考使用

2017-10-23

研发反模式最终版

研发反模式研发反模式研发反模式研发反模式研发反模式

2017-09-28

阿里巴巴Java开发手册最新版

阿里巴巴Java开发手册最新版,阿里巴巴Java开发手册最新版

2017-09-28

用户画像说明

用户画像,用户画像,用户画像,用户画像,用户画像,用户画像,用户画像

2017-09-28

sourcetree-证书

sourcetree,证书,注册,git工具,license,sourcetree,证书,注册,git工具,license

2017-09-28

Apache_Spark源码走读

2016-11-12

Storm分布式实时计算模式

2016-11-12

空空如也

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

TA关注的人

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