自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (4)
  • 收藏
  • 关注

原创 学完spark一脸懵逼怎么办,基于spark最新版本3.0.0我们来探探spark底层运行原理,看完不懂的来捶我【狗头】

文章目录前言:一 spark应用运行流程图示二 spark应用运行流程源码分析1 提交参数的封装2 反射创建对象3 向yarn发送指令启动AM4 yarn会在某个NM启动AM5 AM启动Driver线程,执行用户类的main方法6 AM向RM注册并申请资源7 RM向AM返回可用资源,AM根据本地化级别分配资源8 AM根据资源访问NM,并启动Executor9 Executor向Driver发送消息,注册Executor(反向注册)——这部分是通信方面的内容,后面会详细在讲解一遍,(3.0.0版本和之前版本

2020-07-30 11:51:49 1073 1

原创 进大厂必会的几个常用排序算法的图解剖析以及详细代码

进大厂必会的几个常用排序算法的图解以及详细代码排序算法算是我们接触过的最普及的算法,正是因为如此,诞生了很多的排序的算法,像我们熟知的冒泡排序、选择排序、插入排序,这几个的原理非常简单,弄懂之后代码实现也比较简单,这里作者就不再重复老套了,不知道的同学可以搜索相关博客和视频学习。接下来本篇主要介绍的就是五个相对复杂一点的排序算法,分别是快速排序,希尔排序,归并排序,基数排序以及堆排序,可能有的同学会问已经有上面几个排序算法了,为什么还会诞生这么多不同的算法,其实这个问题认真思考就能知道了,最简单一点就是

2020-07-10 20:46:12 2350 6

原创 配置hive on spark后启动报错

因为hive底层用的执行引擎是MapReduce,所以导致了运行起来非常慢,所以我们要更换执行引擎,就有了hive on spark,基于hive的基础上将执行引擎换成spark版本:hive 3.1.2spark3.0.0需要配置的信息在spark的配置文件spark-defaults.conf中spark.master yarnspark.eventLog.enabled truespark.e

2020-08-14 20:48:16 1613 2

原创 spark中四个ByKey算子的区别

我们今天又来分析算子的具体实现了,如果只是知道一个方法的是干什么的,对于作用比较相似的方法我们很难分辨应该具体用什么,所以懂了具体的原理,我们就知道在具体业务场景下应用哪个方法更好reduceByKey:参数:func, [numTasks]作用:在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用指定的reduce函数,将相同key的值聚合到一起,reduce任务的个数可以通过第二个可选的参数来设置aggregateByKey:参数:(zeroValue:U,[partitione

2020-08-01 16:31:53 1546

原创 spark算子中reduceByKey和groupByKey两者的区别

spark中算子应该是重点中的重点了,今天我们来分析一下两个算子reduceByKey和groupByKey这两个算子都属于k-v类型的算子我们先来看看这两个算子的作用是什么?reduceByKey是通过key对数据进行聚合groupByKey是通过key对数据进行分组这两个都需要对数据进行打乱重组,所以都会有shuffle两者的区别:reduceByKey:在shuffle之前有combine(预聚合)操作,返回结果是RDD[k,v]。groupByKey:直接进行shuffle。我

2020-08-01 16:29:16 1623

原创 一文搞懂spark中shuffle原理,基于最新版本spark3.0.0源码分析

文章目录前言spark中shuffle机制1 shuffleReader读取数据2 shuffleWriter写数据2.1 shuffle具体写操作3 shuffle的分类3.1 HashShuffle3.1.1 未优化的HashShuffle3.1.2优化的HashShuffle3.2 SortShuffle3.2.1 普通SortShuffle3.2.2 bypass SortShuffle3.2.3 SortShuffle的管理shuffleWriter划分总结:前言在执行Task过程中,我们知

2020-08-01 14:45:00 2523 2

原创 spark最新版本3.0.0中job划分、调度以及任务的提交执行流程源码分析

文章目录前言一 整个任务的流程图示二 任务的划分、调度和执行1 调用行动算子生成job2 划分阶段并发送Task给Executor3 Executor执行Task前言上文我们对spark整个应用运行流程进行了整体的分析,但是后面最后一步关于任务的划分、调度和执行就一笔带过了,今天我们就来对spark任务的执行流程的底层源码分析,搞懂这个会对我们理解spark几个术语有比较清楚的理解了,如:术语描述关系job工作调用一个行动算子就会有一个job生成stage阶段有一

2020-07-31 11:16:11 1051 3

原创 hadoop中关于shuffle机制的源码分析

今天我们来分析一些MR中shuffle阶段的流程源码分析shuffle阶段处于mapper之后reducer之前,是在mapTask的后半部分和reduceTask的前半部分一、MapTask中的shuffle阶段Mapper中调用context.write()方法后mapper的write方法一直进入到MapTask类中的write方法,然后默认分区方法是HashPartitioner类中的方法public int getPartition(K key, V value,

2020-07-31 11:01:17 898 4

原创 最新版本spark3.0.0中fileText分区数据存储原理

spark中从外部存储系统创建RDDval rdd = sc.textFile("input/2.txt",4)该方法和从内存中创建一样也是有两个参数的def textFile( path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = withScope { assertNotStopped() hadoopFile(path, classOf[TextInputForma

2020-07-31 10:48:14 704

原创 最新版本spark3.0.0中mkRDD分区数据存储原理

spark中从内存中创建RDD,也叫从集合中创建有两种方式创建: //第一种 val rdd = sc.parallelize(List(1,2,3,4,5)) //第二种 val rdd = sc.makeRDD(List(1,2,3,4,5))其实在底层makeRDDR方法调用的还是parallelize方法def makeRDD[T: ClassTag]( seq: Seq[T], numSlices: Int = defaultParallelism): RD

2020-07-31 10:45:05 776

原创 hadoop中MR的切片机制源码分析

上篇关于job提交的源码分析中我们将整体流程大概分析了,本篇重点分析关于其中submit提交过程中对于文件的切片机制进行讨论在JobSubmitter类中200行左右进行了文件分片的处理,进入其中再进入主要的writeNewSplits()方法没有配置的情况下,默认是TextInputFormat,此时调用的是其继承与父类FileInputFormat的getSplits()方法其中具体获取最大值、最小值的方法如下图在切片中最重要的就是如下核心代码:实际读取数据是重写了父类的方法

2020-07-29 19:20:45 636

原创 hadoop中MapReduce的job提交流程的源码分析

hadoop中MapReduce的job提交流程的源码分析:业务代码job对象调用提交方法waitForCompletion(),此时进入源码分析流程进入到Job类中的此方法,首先判断任务的状态,如果state == JobState.DEFINE ,就执行submit()方法一、建立连接​connect();创建提交Job的代理new Cluster(getConfiguration());判断是本地yarn还是远程​initialize(jobTrackAddr, conf);二

2020-07-28 15:48:35 546

原创 scala泛型上下界限问题

scala泛型上下界限:1)语法def m[T <: Person] (a:T){ //泛型上限}def m[T >: Person] (a:T){ //泛型下限}2)说明​ 泛型的上下限的作用是对传入的泛型进行限定。**上限:传入的参数的类型必须是限定类型或者其子类类型**​ 下限:传入的参数的类型必须是限定类型或者其父类类型(有点鸡肋,后面会说)3)代码object SourceTest { def main(args: Array[String]): Un

2020-07-28 15:32:56 533

转载 超详细讲解深度优先遍历、回溯以及剪枝,结合【LeetCode——46全排列】讲解

LeetCode刷题刷到【46 全排列】时,知道大致解题思路应该是用递归的方法来实现,但是到具体怎么操作就不知道怎么开始了,思考了几分钟以后还是没有任何方法,所以就去看官方题解去了今天就是要分享的我遇到的这篇神题解,反正对我而言,是一篇难得的好文章,对于理解深度优先遍历中回溯和剪枝的问题非常有帮助,这位大佬也是一位知名的博主,非常厉害,推荐大家关注一波下面是具体的链接地址:【46 全排列详细题解:https://leetcode-cn.com/problems/permutations/solutio

2020-07-28 11:23:14 397

原创 最新spark3.0.0版本对接kafka数据源出现的问题

今天在学习spark-streaming中对接kafka数据源遇到一个问题,我用的都是最新的spark3.0.0版本的,版本如下:接下来说说我遇到的问题:用maven准备导入spark-streaming-kafka的依赖时,由于我用都是最新的版本,并且maven仓库用的是阿里云的镜像,导致一直无法下载下来,所以只好在maven仓库直接下载了jar包导入项目,可以正常调用方法jar包:spark-streaming-kafka-0-10_2.12-3.0.0.jar注意:还需要导入kafka的

2020-07-27 18:34:28 2252 2

原创 LeetCode每日算法——20200724之1024.除数博弈

1025 除数博弈难度;简单爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。示例 1:输入:2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。

2020-07-25 21:44:36 353

原创 大数据计算框架spark——自定义累加器内部方法作用以及源码分析

文章目录前言一 累加器的作用二 自定义累加器总结前言spark中有三大数据模型RDD、累加器以及广播变量,其中RDD是重中之重,所以后面我会出一系列专门讲解RDD的文章,今天我们说的也是比较重要的累加器一 累加器的作用累加器:又叫分布式共享只写变量可能现在还不是很理解这是什么意思,那么讲解累加器的作用之前我们先来看一个需求:我们需要将一个集合中的数据求和,我们可以这样求解(下面所有操作都是在idea代码实现的):val rdd = sc.makeRDD(List(1,2,3,4))val

2020-07-24 20:07:43 779

原创 LeetCode每日算法--20200723之64.最小路径和

文章目录前言**64 最小路径和****官方给出的题解思路和代码实现**前言现在开始准备开启一个船新的系列,那就是LeetCode的每日一题的解题思路以及代码,为以后面试阶段的算法打下基础,希望大家也能多多注重算法毕竟我刚开始接触编程时,就有人一直给我洗脑灌输的就是算法才是一个程序的灵魂,在我开始接触之后也慢慢认识到了算法的重要性,当然如果你只想做一个API调用工程师和crud程序员,那就当我没说【狗头。。。】前戏结束,那就废话不多说了,直接上题:64 最小路径和难度:中等给定一个包含非负整数

2020-07-24 13:37:34 349

原创 启动hdfs时报权限问题

配置好各种文件信息以及权限之后(前提是已经配置好其他该配置的信息之后,具体的问题需要查看日志信息来定位问题)执行命令start-dfs.sh命令报权限问题,如图:可能是ssh免密登录协议时的配置有问题,即分发公钥时没有分发给需要启动dfs的虚拟机通过查看命令vim ~/.ssh/authorized_keys和vim ~/.ssh/id_rsa.pub此时公钥没有分发给配置需要启动dfs(即配置nameNode)的虚拟机,需要再次分发公钥给该虚拟机ssh-copy-id hadoop102

2020-07-22 18:26:06 661

原创 关于hive表row format格式的问题

创建表时指定的各种参数中关于行的格式create table tablename( 列名 类型, ...)row format delimited fields terminated by '\t'这个只与存于hdfs上表中的文件的数据格式有关,如果是通过MapReduce计算插入的数据不需要判定数据格式insert into table tablename select * from tablename1;但是这样必须保证这两个表的列的个数和类型一致,不然会出错。注意:如果我们创建

2020-07-22 18:17:09 6193

原创 scala中运行报××类中main方法找不到问题

今天在学习scala中遇到一个找不到main的错误,可是其他的类都能正常运行报错代码如下:在网上搜索很多方法都不能解决,最后点进去idea的run configuration看到了这样的结果这里很明显的显示红色的报错,并且名字与我们起的类名也不一样,不禁有一个疑问scala不是支持这样定义类名吗?为什么还会在执行调用的时候不能识别$字符导致报错找不到该类的main方法,类都找不到了,main方法肯定找不到了之后为了验证scala能不能使用$字符开头的类名,重新创建一个object,并运行能

2020-07-22 18:09:57 1609

原创 scala学习中关于方法内部声明并调用方法执行顺序的问题

学习scala时遇到的一个问题object FunctionDemo1 { def main(args: Array[String]): Unit = { f6(p2="v2") } def f6 ( p1 : String = "v1", p2 : String ) { sayOk("lisi") println(p1 + p2) def sayOk(name : String=

2020-07-21 20:47:32 657

原创 Hbase概述以及快速入门

文章目录一 Hbase简介1.1 Hbase定义1.2 hbase数据模型1.2.1 Hbase逻辑结构1.2.2 Hbase物理存储结构1.2.3 数据模型1.3 Hbase架构二 Hbase快速入门2.1 Hbase安装部署2.1.1 查看Hbase服务启动及页面2.1.2 Hmaster的高启用2.2Hbase shell操作一 Hbase简介1.1 Hbase定义Hbase是一种分布式、可扩展、支持海量数据存储的nosql数据库1.2 hbase数据模型逻辑上,Hbase的数据模型与关系型

2020-07-17 20:04:16 402

原创 查看SecondaryNameNode网页问题

SecondaryNameNode所在节点:http://ip地址:9868/status.html无法查看SecondaryNameNode所在节点网页解决方法解决办法:路径:$HADOOP_HOME/share/hadoop/hdfs/webapps/static查看dfs-dust.js的第61行 'date_tostring' : function (v) { return moment(Number(v)).format('ddd MMM DD HH:mm:ss ZZ YYY

2020-07-13 09:59:32 1928

原创 hadoop客户端运行hdfs的方法出现错误

再Windows上用idea工具编写代码实现客户端操作hdfs命令,(有的电脑)可能会有部分命令不能成功并报错报错原因:fileNotFoundException:找不打hadoop_home和hdfs-user-dir目录(已经配置好环境变量的前提)此时检查其他都没有问题,能通过远程连接虚拟机进行hdfs的同样的shell命令并成功可以将配置的环境变量的hadoop的bin目录下的hadoop.dll和wiutils.exe文件复制到C:/windows/system32下就能正常操作hdfs的s

2020-07-13 09:53:46 818

原创 本地运行MR时报NativeIO$POSIX.stat错误

基于hadoop3.0在idea开发本地执行MapReduce时报的POSIX.stat的错误代码没有任何问题,看错误是关于文件的问题,猜测是不是输入输出路径的问题。此时输入的路径是一个文件夹,将路径换成一个具体的文件后,运行正常并且结果输出正常考虑到Linux上hadoop3.1能够输入文件夹直接进行运行,思考是不是3.0的版本还不支持能进行多文件的操作,将3.0版本换成3.1版本后进行操作完美运行,并且文件夹目录下多文件也能正常运行输出正确结果,验证了猜想。...

2020-07-12 19:17:50 755 6

原创 大数据集群需要的shell脚本(一)

大数据集群需要的shell脚本在大数据开发平台上,我们经常需要在各个机器上启动各种服务,非常麻烦和繁琐且浪费时间在这里总结了几个经常用到的shell脚本,方便学习和开发这里需要用到的脚本因为都是操作多台服务器,所以需要用到ssh,如多我们不配置ssh 免密登录,每次调用都会需要我们登录密码,所以运用这些脚本之前应该先配置好集群间的ssh免密登录,如果没有ssh服务的要先去安装ssh服务学习用的脚本,不是很严谨,望交流心得ssh免密登录ssh-keygen操作之后一直回车直到结束,然后分发公钥

2020-07-08 19:55:32 611

原创 hive自定义创建临时函数和永久函数以及遇到的问题

一 创建临时函数1、先要编写代码继承hive提供的类,并实现抽象方法后打包备用:org.apache.hadoop.hive.ql.udf.generic.GenericUDF org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;2、在hive命令行窗口创建函数①添加jar依赖add jar linux_jar_path;②创建临时函数create temporary function [dbname.]function_name AS

2020-07-07 00:20:57 4423

原创 kafka概述及快速入门

一 kafka概述1 kafka定义​ kafka是一个分布式的基于发布、订阅模式的消息队列,广泛应用于大数据实时处理领域。2 消息队列相当于一个中间商,在客户端和服务端中间建立一个缓冲并能处理数据的组件消息队列的好处:①解耦②缓冲③异步处理④削峰⑤可恢复性二 kafka快速入门1 安装部署①kafka是分布式的,所以需要配置在多台服务器上,且必须要有zookeeper的支持,需要先启动zookeeper服务才能启动kafka服务②kafka下载:http://kafka.ap

2020-07-07 00:18:00 325

原创 关于hive中explode函数可能出现的问题之并发修改异常

关于hive中explode函数可能出现的问题之并发修改异常今天运行hive的sql时,运行一段时间后报错,如下Hive Runtime Error while processing row (tag=0) {“key”:{“reducesinkkey0”:13199833},“value”:{"_col0":"-_CSo1gOd48","_col1":[“People”,“Blogs”]}}详细查看报错日志,可以得出是并发修改异常,然后思考是什么原因导致的错并发修改异常通常是对集合进行遍历操

2020-07-02 15:24:58 1180

spark-streaming-kafka.rar

spark3.0.0版本对接kafka数据源需要的jar包,最新的版本导致maven的阿里云仓库不能直接下载下来,所以需要手动导入jar包进行操作,有需要的朋友可以免费下载

2020-07-27

spark-token-provider-kafka-0-10_2.12-3.0.0.jar

spark3.0.0版本对接kafka数据源需要的jar包,最新的版本导致maven的阿里云仓库不能直接下载下来,所以需要手动导入jar包进行操作,有需要的朋友可以免费下载

2020-07-27

kafka-clients-2.5.0.jar

spark3.0.0版本对接kafka数据源需要的jar包,最新的版本导致maven的阿里云仓库不能直接下载下来,所以需要手动导入jar包进行操作,有需要的朋友可以免费下载

2020-07-27

spark-streaming-kafka-0-10_2.12-3.0.0.jar

spark3.0.0版本对接kafka数据源需要的jar包,最新的版本导致maven的阿里云仓库不能直接下载下来,所以需要手动导入jar包进行操作,有需要的朋友可以免费下载

2020-07-27

空空如也

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

TA关注的人

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