优雅解决Spark Application jar包冲突问题
前言当我们开发的SparkApplication变得越来越复杂,依赖的jar包越来越多时,难免会碰到jar包冲突的问题。举个例子:我们的业务代码用到了一个第三方库,好比:guava(虽然好用,但是版本间的兼容性差的一坨翔)Spark本身也依赖了guava,但是和业务代码中依赖的guava版本不同这种
记一次HDFS性能问题排查
问题表现HDFS刚上线没有任何问题。就最近现网读写HDFS时,阶段性比较慢,也不是一直都比较慢,慢的时候读取一次需要20秒左右,一般毫秒级就可以返回。问题分析慢一次后,紧接着就快。这种表现第一印象就是JVMGC导致的吧。那我就使用jstat进行分析。运行jstat-gcutil[pid][<i
Spark之BloomFilter有趣的bitwise运算
最近好奇的研究了下Spark的BloomFilter的实现,发现其org/apache/spark/util/sketch/BitArray.java对bit处理的实现很巧妙(源码可能是从其他开源项目借鉴的也不好说),从中学到不少东西,记录下。BitArray巧妙的核心设计BitArray内部采用l
SparkSQL自定义Hint优化器解决JOIN热点数据问题
场景有时我们通过sparkSQL来分析数据,当使用Join操作时,最让人头疼的莫过于数据倾斜了,如果你是大表关联小表的情况,那情况还不是很糟糕,可以使用MAPJOIN来破解一下,spark使用spark.sql.autoBroadcastJoinThreshold参数来自动开启MAPJOIN;BUT
使用Spark GraphX 探索你不知道的金庸武侠世界
GitHub地址:https://github.com/weijie-he/jinyong一、缘起2018年10月30日,金庸在香港逝世,享年94岁。知道这个消息之后,我的情绪很低落,讲台上老师在讲什么仿佛也听不见了,脑海中一直在回想着先生写过的关于离别的句子。程英道:“三妹,你瞧这些白云聚了又散,
Spark 核心概念RDD的另类解读
1Spark的RDD提到Spark必说RDD,RDD是Spark的核心,如果没有对RDD的深入理解,是很难写好spark程序的,但是网上对RDD的解释一般都属于人云亦云、鹦鹉学舌,基本都没有加入自己的理解。本文基于Spark原创作者的论文,对Spark的核心概念RDD做一个初步的探讨,希望能帮助初学
利用Mesos构建多任务调度系统
背景公司内部的云平台为各个业务线提供了大量的实体机和虚拟机来运行业务的服务,经过统计发现,这些分配给业务的机器cpu,memory等资源利用并不充分;如果能够充分利用这些机器上的空闲资源同时又能保证业务服务的正常运行,将会节省不少的机器资源;选型一提到多任务运行和调度,大部分人可能首先都会想到Kub
Spark 的“血液” --Spark RPC(一)简述
一.Sparkrpc概述首先说明RPC,引用百度百科:RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。SparkRPC可以说是S
Spark RPC 框架源码分析(二)运行时序
前情提要:SparkRPC框架源码分析(一)简述一.SparkRPC概述概述上一篇我们已经说明了SparkRPC框架的一个简单例子,以及一些基本概念的说明。这一篇我们主要讲述其运行时序,从而揭露SparkRPC框架的运行原理。我们将分为两部分,分别从服务端和客户端来看。所用spark版本:spark
深入浅出 Hadoop YARN
一.HadoopYarn是什么在古老的Hadoop1.0中,MapReduce的JobTracker负责了太多的工作,包括资源调度,管理众多的TaskTracker等工作。这自然是不合理的,于是Hadoop在1.0到2.0的升级过程中,便将JobTracker的资源调度工作独立了出来,而这一改动,直
Flink-复杂事件(CEP)
什么是复杂事件CEP?一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件。特征:目标:从有序的简单事件流中发现一些高阶特征输入:一个或多个由简单事件构成的事件流处理:识别简单事件之间的内在联系,多个符合一定规则的简单事件构成复杂事件输出:满足规则的复杂事
大话Spark(3)-一图深入理解WordCount程序在Spark中的执行过程
本文以WordCount为例,画图说明spark程序的执行过程WordCount就是统计一段数据中每个单词出现的次数,例如hellosparkhelloyou这段文本中hello出现2次,spark出现1次,you出现1次.先上完整代码:objectWordCount{defmain(args:Ar
大话Spark(4)-一文理解MapReduce Shuffle和Spark Shuffle
Shuffle本意是混洗,洗牌的意思,在MapReduce过程中需要各节点上同一类数据汇集到某一节点进行计算,把这些分布在不同节点的数据按照一定的规则聚集到一起的过程成为Shuffle.在Hadoop的MapReduce框架中,Shuffle是连接Map和Reduce之间的桥梁,Map的数据要用到R
大话Spark(5)-详述Spark Standalone/Client/Cluster运行模式
之前在大话Spark(2)里讲过SparkYarn-Client的运行模式,有同学反馈与Cluster模式没有对比,这里我重新整理了三张图分别看下Standalone,Yarn-Client和Yarn-Cluster的运行流程。1、独立(Standalone)运行模式独立运行模式是Spark自身实
大话Spark(1)-Spark概述与核心概念
说到Spark就不得不提MapReduce/Hadoop,当前越来越多的公司已经把大数据计算引擎从MapReduce升级到了Spark.至于原因当然是MapReduce的一些局限性了,我们一起先来看下Mapreduce的局限性和Spark如何做的改进.Spark概述MapReduce局限性1仅支持M
大话Spark(6)-源码之SparkContext原理剖析
SparkContext是整个spark程序通往集群的唯一通道,他是程序的起点,也是程序的终点。我们的每一个spark个程序都需要先创建SparkContext,接着调用SparkContext的方法,比如说sc.textFile(filepath),程序最后也会调用sc.stop()来退出。让我们
大话Spark(7)-源码之Master主备切换
Master作为SparkStandalone模式中的核心,如果Master出现异常,则整个集群的运行情况和资源都无法进行管理,整个集群将处于无法工作的状态。Spark在设计的时候考虑到了这种情况,Master可以起一个或者多个StandbyMaster,当Master出现异常的时候,StandyM
大话Spark(8)-源码之DAGScheduler
一、把job划分成多个Stage(Stage内部并行运行,整个作业按照Stage的顺序依次执行)二、提交任务以下分别介绍下DAGScheduler是如何做这2件事情的,然后再跟源码看下DAGScheduler的实现。一、如何把Job划分成多个Stage1)回顾下宽依赖和窄依赖窄依赖:父RDD的每个分
SparkSql 中 JOIN的实现
Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分析场景都离不开Join,如今SparkSQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在Spark中是如何组织运行的。SparkSQL总体流程介绍在阐述Join实现之
Spark SQL连接Hive-概述
概述Hadoop作为最早开源的大数据处理系统,经过多年发展为业界主流架构,并拥有一套完善的生态圈,同时作为应用在HDFS之上的数仓解决方案,通过这么多年发展,是个大企业大数据平台广泛采用的方案。但是Hive由于采用的MR计算架构,存在一定性能瓶颈,而各种新兴的大数据处理架构蓬勃发展,如果摆脱MR计算