自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(297)
  • 收藏
  • 关注

原创 R语言入门之R与RStudio的详细安装过程(图文很详细哦!!!)

R与RStudio的安装教程一、什么是R二、什么是RStudio三、R和RStudio安装前说明四、安装R五、安装RStudio六、测试软件安装是否成功七、RStudio界面介绍一、什么是RR是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。简单来说,R是一门统计计算语言,是一套开源的数据分析解决方案。二、什么是RStudioRStudio是一款R语言的IDE,R自带的环境操作起来可能不是方便,而Rstudio很好地

2020-09-20 19:49:28 47624

原创 Flink常见面试题总结(全是干货哦!!!)

Flink常见面试题总结1、面试题一:应用架构2、面试题二:压测和监控3、面试题三:为什么用 Flink4、面试题四:checkpoint 的存储5、面试题五:exactly-once 的保证6、面试题六:状态机制7、面试题七:海量 key 去重8、面试题八:checkpoint 与 spark 比较9、面试题九:watermark 机制10、面试题十:exactly-once 如何实现11、面试题十一:CEP12、面试题十二:三种时间语义13、面试题十三:数据高峰的处理更多关于Flink的详细内容请查

2020-09-20 10:58:01 7894 2

原创 Flink之Flink CEP 复杂事件处理简介

Flink CEP 复杂事件处理简介一、什么是复杂事件处理 CEP二、Flink CEP2.1 Event Streams2.2 Pattern API2.3 Pattern 检测2.4 select2.5 flatSelect2.6 超时事件的处理一、什么是复杂事件处理 CEP一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件。特征:目标:从有序的简单事件流中发现一些高阶特征输入:一个或多个由简单事件构成的事件流处理:识别简单事件之间的内在联系,

2020-09-20 10:32:25 1595

原创 Flink之Table API 与 SQL

Table API 与 SQL一、需要引入的 pom 依赖二、简单了解 TableAPI2.1 动态表2.2 字段三、Table API 的窗口聚合操作3.1 通过一个例子了解 TableAPI3.2 关于 group by3.3 关于时间窗口四、SQL 如何编写Table API 是流处理和批处理通用的关系型 API,Table API 可以基于流输入或者批输入来运行而不需要进行任何修改。Table API 是 SQL 语言的超集并专门为 Apache Flink 设计的,Table API 是 Sca

2020-09-20 10:17:11 1331

原创 Flink之状态编程和容错机制

状态编程和容错机制一、有状态的算子和应用程序1.1 算子状态(operator state)1.2 键控状态(keyed state)二、状态一致性2.1 一致性级别2.2 端到端(end-to-end)状态一致性三、检查点(checkpoint)3.1 Flink 的检查点算法3.2 Flink+Kafka 如何实现端到端的 exactly-once 语义四、选择一个状态后端(state backend)流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,

2020-09-20 09:47:14 1557 1

原创 Flink之ProcessFunction API(底层 API)

ProcessFunction API一、KeyedProcessFunction二、TimerService 和 定时器(Timers)三、侧输出流(SideOutput)四、CoProcessFunction我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如 MapFunction 这样的 map 转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API 提供了一系列的 Low-Level 转换算子。可以访问时间戳、wat

2020-09-20 08:49:28 1255

原创 在windows环境下安装netcat的详细过程

下载链接: https://eternallybored.org/misc/netcat/解压后,把nc.exe复制到C:\Windows\System32目录下:运行cmd,查看是否安装成功,输入命令:nc -h

2020-09-19 11:21:55 3187

原创 IDEA安装完插件Scala后 通过add frameworks support找到不到scala插件

如下图所示:创建完项目,准备添加scala插件时却发现找不到解决方法:现在首先project structure 中删除已经存在插件:在里面的Modules中找到已经存在的:选中点击移除:然后重新add frameworks support添加:查看是否添加成功:在 External Libraries 目录下 出现Scala的sdk...

2020-09-19 10:36:48 10116 1

原创 Spark性能调优与故障处理之(6)Spark Troubleshooting故障排除

Spark Troubleshooting一、控制 reduce 端缓冲大小以避免 OOM二、JVM GC 导致的shuffle文件拉取失败三、解决各种序列化导致的报错四、解决算子函数返回 NULL 导致的问题五、YARN-CLIENT 模式导致的网卡流量激增问题六、YARN-CLUSTER 模式的JVM 栈内存溢出无法执行问题七、解决SparkSQL导致的 JVM 栈内存溢出八、持久化后的 RDD 数据丢失一、控制 reduce 端缓冲大小以避免 OOM在 Shuffle 过程,reduce 端 ta

2020-09-17 20:50:40 2068

原创 Spark性能调优与故障处理之(5)Spark 数据倾斜优化

Spark 数据倾斜优化一、聚合原数据二、过滤导致倾斜的 key三、提高shuffle操作中的reduce并行度3.1 reduce 端并行度的设置3.2 reduce 端并行度设置存在的缺陷四、使用随机 key 实现双重聚合五、将reduce join转换为 map join六、sample 采样对倾斜 key单独进行join七、使用随机数以及扩容进行 joinSpark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同 task 所处理

2020-09-17 20:22:22 920

原创 Spark性能优化与故障处理之(4)Spark JVM 调优

JVM 调优一、降低 cache 操作的内存占比1.1 静态内存管理机制1.2 统一内存管理机制二、调节 Executor 堆外内存三、调节连接等待时长对于 JVM 调优,首先应该明确,full gc/minor gc,都会导致 JVM 的工作线程停止工作,即 stop the world。一、降低 cache 操作的内存占比1.1 静态内存管理机制根据 Spark 静态内存管理机制,堆内存被划分为了两块,Storage 和 Execution。Storage 主要用于缓存 RDD 数据和 broa

2020-09-17 19:38:54 568

原创 Spark性能调优与故障处理之(3)Spark Shuffle 调优

Shuffle 调优一、调节 map 端缓冲区大小二、调节 reduce 端拉取数据缓冲区大小三、调节 reduce 端拉取数据重试次数四、调节 reduce 端拉取数据等待间隔五、调节 SortShuffle 排序操作阈值一、调节 map 端缓冲区大小在 Spark 任务运行过程中,如果 shuffle 的 map 端处理的数据量比较大,但是map 端缓冲的大小是固定的,可能会出现 map 端缓冲数据频繁 spill 溢写到磁盘文件中的情况,使得性能非常低下,通过调节 map 端缓冲的大小,可以避免频

2020-09-17 19:24:55 1096

原创 Spark性能调优与故障处理之(2)Spark 算子调优

Spark 算子调优一、mapPartitions二、foreachPartition 优化数据库操作三、filter 与 coalesce 的配合使用四、repartition 解决 SparkSQL 低并行度问题五、reduceByKey 本地聚合一、mapPartitions普通的 map 算子对 RDD 中的每一个元素进行操作,而 mapPartitions 算子对 RDD中每一个分区进行操作。如果是普通的 map 算子,假设一个 partition 有 1 万条数据,那么 map 算子中的 f

2020-09-17 19:12:42 415

原创 Spark 性能调优与故障处理之(1)Spark常规性能调优

常规性能调优一、最优资源配置二、RDD 优化2.1 RDD 复用2.2 RDD 持久化2.3 RDD 尽可能早的 filter 操作三、广播大变量四、Kryo 序列化五、调节本地化等待时长一、最优资源配置Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交 Spark 任务时进行指定,标准的 Spark 任务提交脚本如下所示:/usr/opt/modul

2020-09-17 18:16:49 326

原创 mydql报错:1171-All parts of a PRIMARY KEY must be NOT NULL

mysql 错误代码:1171错误原因:在创建主键id的时候没有取消上图的允许空值,导致报错1171解决方法:取消上允许空值

2020-09-17 09:17:26 17645 4

原创 Spark内核解析之(8)Spark 核心组件深度剖析

Spark 核心组件深度剖析一、BlockManager 数据存储与管理机制二、Spark 共享变量底层实现2.1 广播变量2.2 累加器一、BlockManager 数据存储与管理机制BlockManager 是整个 Spark 底层负责数据存储与管理的一个组件,Driver 和Executor 的所有数据都由对应的 BlockManager 进行管理。Driver 上有 BlockManagerMaster,负责对各个节点上的 BlockManager 内部管理的数据的元数据进行维护,比如 blo

2020-09-16 19:25:14 243

原创 Spark内核解析之(7)Spark 内存管理原理剖析

Spark 内存管理原理剖析一、堆内和堆外内存规划1.1 堆内内存1.2 堆外内存二、内存空间分配2.1 静态内存管理2.2 统一内存管理三、存储内存管理3.1 RDD 的持久化机制3.2 RDD 的缓存过程3.3 淘汰与落盘四、执行内存管理在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务

2020-09-16 18:57:39 287

原创 Spark内核解析之(6)Spark Shuffle运行原理剖析

Spark Shuffle运行原理剖析一、Shuffle 的核心要点1.1 ShuffleMapStage 与 FinalStage1.2 Shuffle 中的任务个数1、map 端 task 个数的确定2、reduce 端 task 个数的确定1.3 reduce 端数据的读取二、HashShuffle 解析2.1 未经优化的 HashShuffleManager2.2 优化后的 HashShuffleManager三、SortShuffle 解析3.1 普通运行机制3.2 bypass 运行机制一、S

2020-09-16 17:59:47 314

原创 Spark内核解析之(5)Spark 任务调度原理机制深度剖析

Spark 任务调度原理机制剖析一、Spark 任务提交流程二、Spark 任务调度概述三、Spark Stage 级调度四、Spark Task 级调度4.1 调度策略1、FIFO 调度策略2、FAIR 调度策略4.2 本地化调度4.3 失败重试与黑名单机制在工厂环境下,Spark 集群的部署方式一般为YARN-Cluster 模式,之后的内核分析内容中我们默认集群的部署方式为 YARN-Cluster 模式。一、Spark 任务提交流程在上一章中我们讲解了 Spark YARN-Cluster 模

2020-09-15 20:37:30 308

原创 Spark内核解析之(4)SparkContext原理分析

在 Spark 中由 SparkContext 负责与集群进行通讯、资源的申请以及任务的分配和监控等。当 Worker 节点中的 Executor 运行完毕 Task 后,Driver 同时负责将SparkContext 关闭。通常也可以使用 SparkContext 来代表驱动程序(Driver)。下图为SparkContext 与集群交互流程图:SparkContext 是用户通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDD、累加器和广播变量。SparkContext

2020-09-15 19:47:08 429

原创 Spark内核解析之(3)Spark 通讯架构原理剖析

一、Spark 通信架构概述Spark2.x 版本使用 Netty 通讯框架作为内部通讯组件。spark 基于 Netty 新的 rpc框架借鉴了 Akka 的中的设计,它是基于 Actor 模型,如下图所示:Spark 通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通信。具体各个组件之间的关系图如下:Endpoint(Client/Master/Worker)有 1 个 InBox 和 N 个 OutBox(N>=1,N

2020-09-15 19:36:12 281

原创 Spark内核解析之(2)Spark 三大部署模式原理剖析

因为之前已经写过相关的文章,这里就不重复了,下面是三种模式的文章链接。一、Local 模式博文链接: https://blog.csdn.net/weixin_43520450/article/details/108579683二、Standalone 模式博文链接: https://blog.csdn.net/weixin_43520450/article/details/108580266三、Yarn 模式博文链接: https://blog.csdn.net/weixin_43520450

2020-09-15 19:06:16 293

原创 Spark内核解析之(1)核心原理概述

Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制、Spark任务调度机制、Spark 内存管理机制、Spark 核心功能的运行原理等,熟练掌握 Spark内核原理,能够帮助我们更好地完成 Spark 代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在。一、Spark 核心组件1.1 DriverSpark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:(1

2020-09-15 19:00:34 973

原创 Spark sql 用户自定义函数

自定义函数一、用户自定义 UDF 函数二、用户自定义聚合函数在 Shell 窗口中可以通过 spark.udf 功能用户可以自定义函数。一、用户自定义 UDF 函数scala> val df =spark.read.json("examples/src/main/resources/people.json")df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> df.show()+----+-

2020-09-14 19:13:57 273 1

原创 Spark SQL 编程总结

SparkSQL 编程一、SparkSession 新的起始点二、DataFrame2.1 创建2.2 SQL 风格语法(主要)2.3 DSL 风格语法(次要)2.4 RDD 转换为 DateFrame2.5 DateFrame 转换为 RDD三、DataSet3.1 创建3.2 RDD 转换为 DataSet3.3 DataSet 转换为 RDD四、DataFrame 与 DataSet 的互操作4.1 DataFrame 转 Dataset4.2 Dataset 转 DataFrame五、RDD、Dat

2020-09-14 18:56:46 1495

原创 Spark RDD 编程进阶篇(扩展)

RDD 编程进阶一、累加器1.1 系统累加器1.2 自定义累加器二、广播变量(调优策略)一、累加器累加器用来对信息进行聚合,通常在向 Spark 传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果。1.1 系统累加器针对一个输入的日志文件,如果我们想计算文件中所有空

2020-09-14 17:11:53 304

原创 Spark RDD算子实例——统计广告点击量 Top3

1、数据准备数据结构:时间戳,省份,城市,用户,广告,中间字段使用空格分隔。数据样式如下:1516609143867 6 7 64 161516609143869 9 4 75 181516609143869 1 7 87 121516609143869 2 8 92 91516609143869 6 7 84 241516609143869 1 8 95 51516609143869 8 1 90 291516609143869 3 3 36 161516609143869 3 3

2020-09-14 16:19:09 1289

原创 Spark三大运行模式之Yarn 模式

一、模式概述Spark 客户端直接连接 Yarn,不需要额外构建 Spark 集群。有 yarnclient 和 yarn-cluster 两种模式,主要区别在于:Driver 程序的运行节点。yarn-client:Driver 程序运行在客户端,适用于交互、调试,希望立即看到 app 的输出yarn-cluster:Driver 程序运行在由 RM(ResourceManager)启动的 AP(APPMaster)适用于生产环境。运行模式图:二、安装使用(1)修改 hadoop 配

2020-09-14 15:57:46 1779 1

原创 Spark三大运行模式之Standalone 模式

Standalone 模式一、模式概述二、安装使用三、JobHistoryServer 配置四、HA配置一、模式概述构建一个由 Master+Slave 构成的 Spark 集群,Spark 运行在集群中。二、安装使用(1)进入 spark 安装目录下的 conf 文件夹[atguigu@hadoop102 module]$ cd spark/conf/(2)修改配置文件名称[atguigu@hadoop102 conf]$ mv slaves.template slaves[atguig

2020-09-14 15:46:23 529

原创 Spark三大运行模式之Local 模式

Local 模式一、模式概述二、安装使用三、提交流程四、数据流程一、模式概述Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以通过以下几种方式设置Master。(1)local:所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;(2)local[K]:指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指定几个线程,最大化利用Cpu的计算能力;(3)lo

2020-09-14 15:30:09 5497 1

原创 大数据开发架构——调度系统的分类解析

调度系统的分类解析一、什么是调度系统二、调度系统的两大种类1、资源调度系统2、作业调度系统三、作业调度系统的两大种类1、定时分片类作业调度系统2、DAG工作流类调度系统一、什么是调度系统调度系统,更确切地说,作业调度系统(Job Scheduler)或者说工作流调度系统(workflow Scheduler)是任何一个稍微有点规模,不是简单玩玩的大数据开发平台都必不可少的重要组成部分。除了Crontab,Quartz这类偏单机的定时调度程序/库。开源的分布式作业调度系统也有很多,比较知名的比如:oozi

2020-09-13 09:53:55 2989 2

原创 VM ware提示:“无法关机 虚拟机繁忙”

在使用VM ware过程中,可能会遇到以下这种情况:虚拟机无法关闭,并且在结束掉VM ware进程后 再次打开 也不会恢复。解决方法:方法一:(1)打开任务管理器: Ctrl + shift+ Esc(2)找到 VMware workstation VMX(3)选中 结束进程方法二:(如果上面的进程结束不了可以尝试该方案)到虚拟机的安装目录里,找到以.lck为后缀结尾的文件并将其删除。问题已解决,接下来就可以正常关闭虚拟机了!!!注意:每打开一个虚拟机,就会有一个VMX进程,

2020-09-12 18:10:05 2378 2

原创 Spark——数据读取与保存

Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text 文件、Json 文件、Csv 文件、Sequence 文件以及 Object 文件;文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。一、文件类数据读取与保存1.1 Text 文件(1)数据读取:textFile(String)scala> val hdfsFile = sc.textFile("hdfs://hadoop102:9000/fruit.txt")hdfsF

2020-09-12 11:25:28 1548

原创 Spark——键值对 RDD 数据分区

键值对RDD数据分区一、获取 RDD 分区二、Hash 分区三、Ranger 分区四、自定义分区Spark 目前支持 Hash 分区和 Range 分区,用户也可以自定义分区,Hash 分区为当前的默认分区,Spark 中分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过Shuffle 过程属于哪个分区和 Reduce 的个数。注意:(1)只有 Key-Value 类型的 RDD 才有分区的,非 Key-Value 类型的 RDD 分区的值是 None。(2)每个 RDD的分区 I

2020-09-11 20:38:10 280

原创 Spark——RDD 依赖关系

RDD 依赖关系一、 Lineage(血缘)二、 窄依赖三、 宽依赖四、 DAG有向无环图五、 任务划分(面试重点)一、 Lineage(血缘)RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。将创建 RDD 的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD 的 Lineage 会记录 RDD 的元数据信息和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。(1)读取一个 HDFS 文件并将其中内容映射成一个个元组scala&

2020-09-11 19:49:57 444

原创 Spark——aggregateByKey 案例

参数:(zeroValue:U,[partitioner: Partitioner]) (seqOp: (U, V) => U,combOp: (U, U) => U)1、作用在 kv 对的 RDD 中,,按 key 将 value 进行分组合并,合并时,将每个 value 和初始值作为 seq 函数的参数,进行计算,返回的结果作为一个新的 kv 对,然后再将结果按照key 进行合并,最后将每个分组的 value 传递给 combine 函数进行计算(先将前两个 value进行计算,将返回

2020-09-11 17:11:10 305

原创 Spark中MapPartition和Map的区别

1、map():每次处理一条数据2、mapPartition():每次处理一个分区的数据,这个分区的数据处理完后,原 RDD 中分区的数据才能释放,可能导致 OOM。开发指导:当内存空间较大的时候建议使用 mapPartition(),以提高处理效率。...

2020-09-11 16:36:04 459 1

原创 Spark RDD算子实战总结(超详细哦,绝对的干货!!!)

Spark RDD算子一、Spark算子概述二、Transformation算子下面来具体说明:三、Actions算子下面来具体说明:四、宽依赖和窄依赖一、Spark算子概述RDD:弹性分布式数据集,是一种特殊集合、支持多种来源、有容错机制、可以被缓存、支持并行操作,一个RDD代表多个分区里的数据集。RDD有两种操作算子:Transformation(转换):Transformation属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住了数据集的逻辑操作Action

2020-09-10 19:37:56 3986

原创 IntelliJ IDEA 没有Tomcat 也没有Application Servers的解决办法

按照网上的例子都是添加tomcat和application servier,但是我的plugin里面都找不到这些.如下图所示:解决方法:检查自己的idea是否是社区版本还是旗舰版本,也就是免费开源版本还是收费版本。免费版本不支持Application Servers也不支持Tomcat,所以此时更换旗舰版本是可以解决这个问题的。(可下载网上的IDEA破解版本,免费哦!!!)...

2020-09-09 16:16:15 4520 1

原创 Java中为什么字段不能被重写?

先看一下下面这个例子,新建两个Sub对象,一个指向Sub类型的引用,一个指向 Super类型的引用。输出结果如下:我们创建了两个Sub对象,但是为什么第二个对象打印出来的结果是"Super"呢?1、隐藏字段代替了重写在java官方提供的tutorial有一段关于隐藏字段的明确定义:Within a class, a field that has the samename as a field in the superclass hides the superclass’s field, e

2020-09-07 19:13:45 493

空空如也

空空如也

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

TA关注的人

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