玩转spark
本系列文章主要结合实战经验总结Spark的三部分内容:Spark的使用与优化、核心工作原理、相关生态圈组件。
JQW_YNU
无
展开
-
pyspark的windows7环境搭建
安装步骤注意:如有需要,本篇的所有资源将通过百度网盘提供,减少寻找和下载时间链接:https://pan.baidu.com/s/1v53Vt5NZEPZigCXE6rjDGQ提取码:64pi1.安装java这里选择version 1.8.,配置环境变量JAVA_HOME,PATH,CLASSPATH参考链接:Java JDK8下载地址,Java安装及环境配置注意ja...原创 2020-02-16 00:24:06 · 521 阅读 · 1 评论 -
sparkStreaming实时处理
分析案例: 需求:统计主站每个(指定)课程访问的客户端、地域信息分布 地域:ip转换 Spark SQL项目实战 客户端:useragent获取 Hadoop基础课程 ==> 如上两个操作:采用离线(Spark/MapReduce)的方式进行统计实现步骤: 课程编号、ip信息、useragent 进行相应的统计分析操作:MapReduce/Spark项目架构 日志收集:Flume 离线...原创 2018-05-11 20:15:18 · 948 阅读 · 0 评论 -
大数据-SparkStreaming
官方学习网址: https://spark.apache.org/docs/latest/streaming-programming-guide.html#a-quick-exampleSparkStreaming介绍: StreamingContext is the main entry point for all streaming functionality要初始化Spark Streami...原创 2018-06-01 18:38:23 · 339 阅读 · 0 评论 -
SparkStreaming常见案例
updateStateByKey算子需求:统计到目前为止累积出现的单词的个数(需要保持住以前的状态)java.lang.IllegalArgumentException: requirement failed: The checkpoint directory has not been set. Please set it by StreamingContext.checkpoint().需求:将...原创 2018-06-03 11:32:31 · 682 阅读 · 0 评论 -
SparkStreaming整合Flume-Push方式
SparkStreaming整合Flume有俩种方式详细学习文档地址:https://spark.apache.org/docs/latest/streaming-flume-integration.html方式一:Push方式整合步骤一:编写flume配置文件Flume Agent的编写: flume_push_streaming.confsimple-agent.sources = netca...原创 2018-06-03 13:51:03 · 391 阅读 · 0 评论 -
SparkStreaming整合Flume-Pull方式(核心)
------------------------------------------SparkStreaming第二种方式整合Flume-----------------------------------详细学习地址:https://spark.apache.org/docs/latest/streaming-flume-integration.html注意这种方式相比第一种方式更可靠,支持容错...原创 2018-06-03 21:02:26 · 652 阅读 · 0 评论 -
idea创建scala maven项目总结
步骤一:安装scala插件注意一般我们在idea上下载插件很容易因为网络原因下载不成功!所以去idea插件网址下载,但要知道自己idea scala的版本http://plugins.jetbrains.com/plugin/?idea&id=1347 测试:idea 重启, new project 显示scala选项代表安装成功!!步骤二:下载scala-sdk (注意这个scala-s...原创 2018-06-05 21:47:12 · 2674 阅读 · 0 评论 -
sparkStremingx项目实战(python定时日志生成器+flume+kafka+ spark+ hbase+ springBoot)
数据清洗一定是对Log4j熟悉操作用户行为访问日志:1.网站页面的访问量 2.网站的粘性 3.推荐用户行为日志分析的意义:眼睛, 神经通过定时调度工具每一分种产生的一批数据网站+ Linux croutab 项目实战:构建定时日志产生器----对接--》flume 构建conf*2---...原创 2018-06-06 10:17:43 · 1173 阅读 · 0 评论 -
sparkStreaming介绍与运行方式
Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams.Spark Streaming个人的定义: 将不同的数据源的数据经过Spark Streaming处理之...原创 2018-06-06 13:14:48 · 724 阅读 · 0 评论 -
sparkStreaming-WordCountDemo处理socket数据
步骤一:配置环境,特别注意虚拟机的hosts文件和window中的hosts文件,以及关闭防火墙 linux: sudo vim /etc/hosts 添加ip到name的映射,从而让外网访问你时用name便可 window: C:\Windows\System32\drivers\etc 将linux /etc/hosts 中的映射写进去,这用于在window上可以访问...原创 2018-06-06 13:28:17 · 269 阅读 · 0 评论 -
sparkStreaming处理文件系统数据(local/hdfs)
其他sparkStreaming项目案例地址:(建议每一个都是熟知)https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples/streaming sparkStreaming处理文件系统数据(local/hdfs):package com.imooc.sparkim...原创 2018-06-06 13:54:55 · 981 阅读 · 0 评论 -
精通spark学习需求
Spark基础、各组件功能使用Spark内核原理Spark内核源码Spark性能调优Spark SQL原理和性能调优Spark Streaming原理和性能调优原创 2018-08-15 12:20:54 · 929 阅读 · 0 评论 -
spark内核源码深度剖析
深度理解spark内核的前提和作用1、已经达到可以熟练进行Spark编程的程度。2、Spark内核源码的研究,是Spark学习的承上启下阶段。3、内核源码研究透彻之后,才可以通往Spark高手 / Spark精通的道路。4、才可以继续进行Spark性能优化的学习。5、才可以在实际工作中,在Spark应用报错出现故障时,读懂log,通过log分析问题的原因,甚至根据log直接到源...原创 2018-08-15 18:58:52 · 1619 阅读 · 0 评论 -
《深入理解SPARK:核心思想与源码分析》(第2章)
《深入理解Spark:核心思想与源码分析》一书前言的内容请看链接《深入理解SPARK:核心思想与源码分析》一书正式出版上市《深入理解Spark:核心思想与源码分析》一书第一章的内容请看链接《第1章 环境准备》本文主要展示本书的第2章内容:SPARK设计理念与基本架构“若夫乘天地之正,而御六气之辩,以游无穷者,彼且恶乎待哉?”——《庄子·逍遥游》n 本章导读:上一章,介...转载 2018-08-17 07:48:03 · 7509 阅读 · 1 评论 -
spark内核源码深度剖析Master注册机制原理
master注册机制原理图:核心代码块: Spark Master主备切换主要有两种机制,之中是基于文件系统,一种是基于Zookeeper.基于文件系统的主备切换机制需要在Active Master挂掉后手动切换到Standby Master上,而基于Zookeeper的主备切换机制可以实现自动切换Master。 切换流程图流程说明:Standby Mast...原创 2018-08-17 13:51:30 · 258 阅读 · 0 评论 -
sparkContext原理剖析
1.SparkContex原理剖析1.图解: 2.SparkContext源码分析1.TaskScheduler创建: SparkContext.scala // Create and start the scheduler private[spark] var (schedulerBackend, taskScheduler) = SparkContext.crea...原创 2018-08-23 17:00:10 · 452 阅读 · 0 评论 -
Spark内核源码深度剖析:基于Yarn的两种提交模式深度剖析
1.Spark的三种提交模式1、Spark内核架构,其实就是第一种模式,standalone模式,基于Spark自己的Master-Worker集群。 2、第二种,是基于YARN的yarn-cluster模式。 3、第三种,是基于YARN的yarn-client模式。 4、如果,你要切换到第二种和第三种模式,很简单,将我们之前用于提交spark应用程序的spark-submit脚本,加上...转载 2018-08-23 17:32:33 · 297 阅读 · 0 评论 -
Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法
Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法1、spreadOutApp尽量平均分配到每个executor上;2、非spreadOutApp尽量在使用单个executor的资源。 源码分析org.apache.spark.deploy.master.Master1、首先判断,master状态不是ALIVE的话...转载 2018-08-24 22:55:17 · 336 阅读 · 0 评论 -
Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
本課主題Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 [引言部份:你希望读者看完这篇博客后有那些启发、学到什么样的知识点]更新中...... Spark Worker 原理图 Worker 启动 Driver 源码鉴赏因为 Wo...原创 2018-08-25 09:40:31 · 303 阅读 · 0 评论 -
Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
资源调度管理任务调度与资源是通过 DAGScheduler、TaskScheduler、SchedulerBackend 等进行的作业调度 资源调度是指应用程序如何获得资源 任务调度是在资源调度的基础上进行的,没有资源调度那么任务调度就成为了无源之水无本之木Master 资源调度的源码鉴赏因為 Master 負責資源管理和調度,所以資源調度方法 scheduer 位於 Master....原创 2018-08-25 09:44:26 · 258 阅读 · 0 评论 -
Stage划分和Task最佳位置算法源码彻底解密
本課主題Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行;其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的...原创 2018-08-25 10:11:52 · 208 阅读 · 0 评论 -
打通 Spark 系统运行内幕机制循环流程
引言通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每个 Stage 内部有一系列任務,前面有分享過,任务是并行计算啦,这是并行计算的逻辑是完全相同的,只不过是处理的数据不同而已,DAGScheduler 会以 TaskSet 的方式把我们一个 DAG 构造的 Stage 中的所有任务提交给底层的调度器 ...原创 2018-08-25 17:12:45 · 279 阅读 · 0 评论 -
TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等
主題通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据本地性资源分配源码实现 引言TaskScheduler 是 Spark 整个调度的底层调度器,底层调度器是负责具体 Task 本身的运行的,所以豪无疑问的是一个至关重要的内容。希望这篇文...原创 2018-08-25 19:49:20 · 489 阅读 · 0 评论 -
Task执行内幕与结果处理解密
主题 Task执行内幕与结果处理解密 引言这一章我们主要关心的是 Task 是怎样被计算的以及结果是怎么被处理的了解 Task 是怎样被计算的以及结果是怎么被处理的 Task 执行原理流程图[下图是Task执行原理流程图]Executor 会通过 TaskRunner 在 ThreadPool 来运行具体的 Task,TaskRunner 内部会做一些准备的工作...原创 2018-08-26 15:30:57 · 317 阅读 · 0 评论 -
Task执行内幕与结果处理解密(简约版)
个人分类: spark1.当Driver中的CoarseGrainedSchedulerBackend给CoarseGrainedExecutorBackend发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,首先会反序列化TaskDescription:val taskDesc = ser.deserialize[...转载 2018-08-26 17:03:14 · 259 阅读 · 0 评论 -
BlockManager架构原理、运行流程图和源码解密
主题BlockManager 运行實例 BlockManager 原理流程图 BlockManager 源码解析 引言BlockManager 是管理整个Spark运行时的数据读写的,当然也包含数据存储本身,在这个基础之上进行读写操作,由于 Spark 本身是分布式的,所以 BlockManager 也是分布式的, BlockManager 原理流程图[下图是 Blo...原创 2018-08-26 17:06:25 · 274 阅读 · 0 评论 -
BlockManager原理和源码解密(简约版)
一、BlockManager运行实例观察从Application启动的角度来观察BlockManager;1,在Application启动时会在SparkEnv中注册BlockManagerMaster以及MapOutputTracker,其中a) BlockManagerMaster:对整个集群的Block数据进行管理的;b) MapOutputTracker:跟踪所有mapp...转载 2018-08-26 17:08:31 · 336 阅读 · 0 评论 -
CacheManager彻底解密:CacheManager运行原理流程图和源码详解
主题 CacheManager 运行原理图 CacheManager 源码解析 CacheManager 运行原理图[下图是CacheManager的运行原理图]首先 RDD 是通过 iterator 来进行计算:CacheManager 会通过 BlockManager 从 Local 或者 Remote 获取数据直接通过 RDD 的 compute 进行计算,有可能...原创 2018-08-26 17:27:30 · 7261 阅读 · 0 评论 -
cacheManager彻底解密(简约版)
一:CacheManager分析:1, CacheManager管理的缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;2, CacheManager需要通过BlockManager来操作数据;3, 当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:/** * Internal method to this RD...转载 2018-08-26 17:33:42 · 2789 阅读 · 0 评论 -
Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
主题Checkpoint 运行原理图 Checkpoint 源码解析 引言Checkpoint 到底是什么和需要用 Checkpoint 解决什么问题:Spark 在生产环境下经常会面临 Transformation 的 RDD 非常多(例如一个Job 中包含1万个RDD) 或者是具体的 Transformation 产生的 RDD 本身计算特别复杂和耗时(例如计算时常超过1个...原创 2018-08-26 17:48:00 · 1920 阅读 · 0 评论 -
Checkpoint彻底解密(简约版)
1、Checkpoint重大价值 2、Checkpoint运行原理图 3、Checkpoint源码解析一、Checkpoint到底是什么? 1、Spark在生产环境下经常会面临Transformation的RDD非常多(例如一个Job中包含1万个RDD)或者具体Transformation产生的RDD本身计算特别复杂和耗时(例如计算时常超过1个小时),此时我们必须考虑对计算结果数据的持久...转载 2018-08-26 17:51:24 · 1292 阅读 · 0 评论 -
Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践
主题Broadcast 运行原理图 Broadcast 源码解析 Broadcast 运行原理图Broadcast 就是将数据从一个节点发送到其他的节点上; 例如 Driver 上有一张表,而 Executor 中的每个并行执行的Task (100万个Task) 都要查询这张表的话,那我们通过 Broadcast 的方式就只需要往每个Executor 把这张表发送一次就行了,Exe...原创 2018-08-26 18:35:16 · 731 阅读 · 0 评论 -
Spark Broadcast内幕解密(简约版)
一:Broadcast彻底解析1,Broadcast就是将数据从一个节点发送到其他的节点上;例如Driver上有一张表,而Executor中的每个并行的Task(100万个Task)都要查询这张表,那我们通过Broadcast方式就只需要往每个Executor把这张表发送一次就行了,Executor中的每个Task查询这张唯一的表,而不是每次执行的时候都从Driver获得这张表!2,这就好...转载 2018-08-26 18:36:16 · 286 阅读 · 0 评论 -
Spark RPC(简约版)
一:Spark 1.6RPC解析1,Spark 1.6推出RpcEnv,RPCEndpoint,PRCEndpointRef为核心的新型架构下的RPC通信方式,就目前的实现而言,其底层依旧是Akka;2,Akka是基于Actor的分布式消息通信系统,而在Spark 1.6中封装了Akka,提供更高层的Rpc实现,目的是移除对Akka的依赖,为了扩展和自定义Rpc打下基础;二:RPCEn...转载 2018-08-27 00:05:33 · 223 阅读 · 0 评论 -
spark RPC详解
1,概述个人认为,如果把分布式系统(HDFS, HBASE,SPARK等)比作一个人,那么RPC可以认为是人体的血液循环系统。它将系统中各个不同的组件(如Hbase中的master, Regionserver, client)联系了起来。同样,在spark中,不同组件像driver,executor,worker,master(stanalone模式)之间的通信也是基于RPC来实现的。Sp...原创 2018-08-27 00:06:46 · 385 阅读 · 0 评论 -
Spark学习笔记1:Application,Driver,Job,Task,Stage理解
看了spark的原始论文和相关资料,对spark中的一些经常用到的术语做了一些梳理,记录下。1,Applicationapplication(应用)其实就是用spark-submit提交的程序。比方说spark examples中的计算pi的SparkPi。一个application通常包含三部分:从数据源(比方说HDFS)取数据形成RDD,通过RDD的transformation和act...原创 2018-08-27 00:23:18 · 1001 阅读 · 0 评论 -
[Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析
主題大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言我们谈大数据性能调优,到底在谈什么,它的本质是什么,以及 Spark 在性能调优部份的要点,这两点让在进入性能调优之前都是一个至关重要的问题,它的本质限制了我们调优到底要达到一个什么样的目标或者说我们是从什么本源上进行调优。希望这...原创 2018-08-27 00:29:17 · 294 阅读 · 0 评论 -
Spark性能优化第一季
Spark性能优化第一季1、Spark性能优化需要思考的基本问题 2、CPU和Memory 3、并行度和Task 4、网络一、Spark性能优化核心基石 1、Spark是采用Master-Slaves的模式进行资源管理和任务执行管理的,对于资源管理 a)资源管理:Master-Worders,在一台机器上可以有多个Workers; b)任务执行:Driver-Executors...转载 2018-08-27 00:34:56 · 222 阅读 · 0 评论 -
Spark性能优化第二季
Spark性能优化第二季1、Task性能优化 2、数据倾斜性能优化 3、网络性能优化一、Task性能优化 1、慢任务的性能优化:可以考虑每个Partition处理的数据量,同时建议开启spark.speculation,开启任务推测,在任务还没有完成的情况下开启相同的任务,谁先执行完就执行它。 2、尽量减少Shuffle,例如我们要尽量减少groupByKey的操作,因为group...转载 2018-08-27 00:43:16 · 230 阅读 · 0 评论 -
常见OOM异常
堆溢出当报错信息java.lang.OutOfMemoryError后面带有java heap space时,说明是java堆溢出。1由于Heap是用来存放实例的,堆溢出,也就说明了当前的实例对象过多,而且这些对象一直处于存活状态(JVM判断对象是否存活,是通过判断GC Roots和对象之间的是否存在可达路径)。出现这种问题,一般要考虑下列两种情况:内存泄露:一般出现这种情形,需...转载 2018-08-27 00:45:35 · 479 阅读 · 0 评论