自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 我的文章目录

Spark目录Spark任务提交流程Spark内存管理Spark ShuffleSpark通讯机制SparkSql解析过程KafkaKafka 解决了什么问题生产者原理Kafka 存储机制Leader的选举及副本同步机制Kafka HW及EpochKafka幂等性及事务HbaseHbase写入流程Hbase读取数据流程Hbase在内存读取数据的原理Hbase在文件中扫描数据的原理Hbase LSM树与Bloom过滤器Hbase Flush机制流程Hbase

2021-03-14 20:10:41 1196

原创 Spark目录

Spark目录Spark任务提交流程Spark内存管理Spark ShuffleSpark通讯机制SparkSql解析过程

2021-03-11 00:41:08 154

原创 Kafka文章目录

Kafka文章目录Kafka 解决了什么问题生产者原理Kafka 存储机制Leader的选举及副本同步机制Kafka HW及EpochKafka幂等性及事务

2021-03-06 16:17:36 71

原创 人话说LightGBM

LightGBM 和 XGBoost 两种模型都是GBDT 这种概念的工程化的实现,说人话就是你和你的兄弟姐妹有一些不同,但是都是你爸和你妈那套操作出来的。GBDT 这种概念又是建立在cart 决策树上。

2023-12-19 16:44:29 60

原创 音乐一拍到底多长

对一个音要唱多长的定义,并且使用4分音符,8分音符进行更细化的分割。一分钟多少拍,每首个都有一个人为规定的拍速度。拍是一个描述音符的最小单位。

2023-12-05 22:08:25 172

原创 SQL(指定日期的产品价格)

题都看不懂

2023-03-10 13:59:35 431

原创 sql(集合,行专列,上下级)

SQL集合,行转列

2023-03-10 13:58:33 356

原创 SQL(中间表的使用)

中间表的使用

2023-03-10 13:56:51 1305

原创 sql(聚合的使用)

聚合的使用

2023-03-10 13:56:07 359

原创 SQL总结-排名的使用

排名的使用SQL

2023-03-10 13:55:12 538

原创 动态规划思路

一些动态规划的总结

2023-03-10 13:49:26 329

原创 栈和队列使用

一、栈的使用栈在使用过程中,算法的运算过程应该是从后向前计算的在栈的不仅可以存放值还可以存放下标计算每日温度###当遇到比栈顶高的温度时,开始标记结果,然后继续出栈直到计算到比当前值大的温度,然后入栈根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4,

2021-05-12 00:57:32 777

原创 数组链表算法思路三(KMP算法)

思路在字符串的比较中,不能双重循环的去做,时间复杂度是n^2,需要进行简化例子:(KMP)有s,m两个字符串,s= abcdabcdx,m=abcdx,请找出m子串在s中起始位置。按照我们的常规思路我们会将m和s的每一个字符比较(有两个游标i,j,分别指向两个字符串的开头):1.如果m的第一个字符与s中的某一个位置的字符相等(比如:第一个),然后继续移动i,和j, i++ ,j++2.如果m中的某一个字符与s中不相等,就需要将两个指针重新定位仔细看上图的几步:当第一步匹配失败后,其实第二步

2021-05-12 00:55:26 268 1

原创 数组链表算法思路二

总体思路参考上一篇数组链表算法思路一例题:解题方法:1.遇到字母统计使用hash思想进行统计2.遇到数字可以使用异或运算例题一题目内容:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。解题思路字母异位词: 长度相同,只是字母的位置不相同此

2021-05-12 00:54:06 112

原创 数组链表算法思路一

解题方法:快慢指针推进程序降低复杂度HashMap,优先队列,双端队列辅助统计计算快排思想完成对半查找,无需进行构造搜索树使用kmp算法进行子串查找遇到字母统计使用hash思想进行统计遇到数字可以使用异或运算思维首先请放弃你那种暴力法,即动不动就上双重循环的思维方式。然后更多的使用切分和线性的方式去做数组或者链表的题,在动态规划中更是这样。例题一解题方法:使用快慢指针+Map进行辅助统计计算总结一句话:连续不重复字串最长题目内容LeetCode 第 03 题:给定一个字符串,

2021-05-12 00:52:16 109

原创 JVM 垃圾回收器

个人总结以官网为准,如有错误欢迎指出从思考问题开始如果你(运行的程序)在房间(内存)里不断的产生垃圾(可清除的对象),并且你青春期脾气不好,妈妈不想跟你小屁孩计较(避免打扰用户程序,减少stop the word),那妈妈会怎么做才能到达快速,并且不影响你打游戏?首先妈妈会进去看一眼,有哪些需要处理的垃圾,然后离开然后妈妈拿到工具,进入房间,把你骂出房间,快速处理再让你回来以上妈妈的行为在垃圾回收的过程中,映射为首先标记对象,然后stop the world 清理垃圾,然后恢复程序.

2021-05-10 00:29:20 92

原创 JVM GC原理

1.对象怎么判定已死:1.对象引用计数法每个对象都有一个引用计数器,当引用计数器归零时,即可判定对象已死。但是在互相引用的情况下,无法判定他们是否已死。2.图论(节点不可达)从GC root对象开始,如果发现有一个点,或者一个区域不可达,即判定这个区域的对象已死。GC ROOT对象:1.方法区静态变量的对象引用的对象。2.方法区常量引用的对象引用的对象。3.方法栈中局部变量表中的对象引用的对象。4.本地方法栈的对象引用的对象。2.方法区回收:1.常量回收没其他地方引用这个字面量了。.

2021-05-09 23:01:06 188 1

原创 JVM内存模型

图片引用他人,如有侵权,告知即删。1.程序计数器:1.线程私有。2.在jvm文档中没有定义OOM。3.用户代码推进器,不作用于native源码。4.用来分支,循环,跳转,异常处理等代码流程结构。2.虚拟机栈(方法栈)1.线程私有。2.StackOverFlowError&&OutOfMemoryError。3.一个方法就是一个栈帧,栈帧的出入栈表示方法的执行。4.栈帧上包含局部变量表,动态链接,操作数栈,方法出口信息。5.逃逸分析的介入,对象也可能分配到栈帧上,跟.

2021-05-09 22:56:40 129 1

原创 Spark ALS 协同过滤算法实践

个人总结,有误请指出ALS算法bibili上硅谷课程理论协同过滤算法上图中横坐标代表用户,纵坐标代表商品,每一个格子,代表第I个用户的对第I个商品的评分。这个矩阵是一个稀疏矩阵,而这些没有值得位置正是我们要推测的值。每个格子的的评分大体上可以看做一个独立事件,是很难准确的通过其他独立事件去推测的。因为它的可能实在太多了。所以综上我们提出两个问题:由于它每一个格子的可能性太多,那我们可以简单的理解为求解一个推测值的复杂度是很高的,为m*n,m,n分别为矩阵的横纵长度。由于每个用户对每个商.

2021-04-25 01:52:33 686

原创 Spark Shuffle源码领读

个人总结,以官网为准如有错误,欢迎指出主要步骤:在excutor线程池里执行ShuffleMapTask时,触发ShufflRdd的compute函数ShuffleRdd 使用BlockStoreShuffleReader 给SortShuffleWriter返回一个迭代器。-SortShuffleWriter 间接通过 ExternalSorter 调用迭代器的next函数开始获取shuffle前一步的数据ShuffleBlockFetcherIterator 在初始化的时候,先区分出.

2021-03-23 01:03:52 114

原创 Spark任务执行流程源码领读

流程CoarseGrainedExecutorBackend 受到启动任务的请求,并将任务反序列化给excutorExcutor将任务描述放到TaskRunner,然后放入线程池中线程启动后,首先想driver端发送任务状态并拉取jar等依赖调用Task的run方法执行(ShuffleMapTask,ResultTask)主要代码...

2021-03-21 22:07:05 88

原创 Spark任务切割提交源码领读

概述RDD的action算子触发SparkContext的runjob然后触发DAG的runjob方法DAG执行提交job方法,并递归切割stageDAG将任务提交给TaskSchedulerImplTaskSchedulerImpl与CoarseGrainedSchedulerBackend等协同将任务封装为TaskSetManger,并请求资源,TaskSchedulerImpl封装任务为TaskDesc并序列化发送给Excutor总结:重要的几个类及其作用:DAGSchedu.

2021-03-21 21:22:29 164

原创 Spark提交流程源码领读

Spark提交流程源码领读从上图一步步来解析通过SparkSubmit的脚本使用submit触发 doSubmit(arg[])然后自己调用submit(args: SparkSubmitArguments, uninitLog: Boolean),prepareSubmitEnvironment 它主要是使用从前两步解析的参数,选择对应的启动类,启动类不一定是我们写的主类。准备一些后面需要用到参数childArgs,childClasspath,sparkConf比如yarn模

2021-03-17 01:12:51 151

原创 Hbase文章目录

Hbase写入流程Hbase读取数据流程Hbase在内存读取数据的原理Hbase在文件中扫描数据的原理Hbase LSM树与Bloom过滤器Hbase Flush机制流程Hbase Compact机制流程Hbase Split机制流程

2021-03-14 19:56:25 85

原创 Hbase三大机制-合并文件流程

compact的类型Minor Compact 合并一部分小文件,不会处理标记删除,过期的数据Major Compact 合并所有的文件,处理标记删除,过期的数据,一般会关闭自动合并,在低峰时期手动合并触发的时机MemoryStore flush时,发现storefile的数量大于某个阈值时后台程序定时检查,首先检查是否满足上面的条件,然后在检查最早的时间是否是7天前的,然后执行Major Compact手动触发,无论minor compact 还是 major compact 都可以手.

2021-03-14 19:49:50 552

原创 Rigion切分流程

Rigion 切分策略也可以说是切分的时机静态大小切分策略(0.94版本之前)​ 从名字看是达到一定的大小即开始切割,注意这里是region中的某一个Store的大小超过了阈值(hbase.hregion.max.filesize)​ 存在的问题​ 它对大表还算一般友好,因为会被不断的切割,但时间长了后就会产生很多Region​ 对小表特别不友好,因为它永远不会分割​ Region数应该是需要适中就好,太大,数据太分散了会引起Re

2021-03-14 19:43:02 508

原创 Hbase三大机制-MemoryStore Flush

MemoryStore Flush的触发时机首先flush的单位是Region(一个region中可能存在多个MS)不是memoryStore某一个MemoryStore大小超过128M(默认)Region中的MemoryStore的总大小超过256MRegionServer中的JVM的40%,从MemoryStore中Region开始刷新,直到小于阈值即停止RegionServer中HLog数量达到上限时,从最早的HLog对应的Region刷新定时1小时刷新手动刷新以上几种触发方式解决

2021-03-14 19:37:24 433

原创 hbase lsm 树 与bloom过滤器

Hash 索引机制Hash索引机制支持增删改及随机读写操作,复杂度是O(1),对查询非常友好。但总所周知Hash是无序的,如果需要有序的数据,那么它便无能无力B+树它是一颗横跨内存与磁盘的树,树的子节点可以精确的找到某一个值。但数据在逻辑上是连续的,物理上是不连续的。比如:有可能1,2在树上靠的非常近,但当需要从磁盘读取数据,说不定一个在一端,磁盘需要扫描一圈才能走到下一个值所以它对初期读取数据是非常友好,但当数据越来越多时,可能读取性能就会下降。主要原因就数据在磁盘上不是顺序写入的,而是随机写入

2021-03-14 18:59:06 266

原创 Hbase内存数据结构跳跃表

Hbase内存中的数据怎么存储的?首先数据在内存中是有序的,按字典顺序进行排序,如:100,110,111内存中的数据结构为上图:跳跃表跳跃表概念:多层链表组成,每一层链表都有直接向下一层跳跃的连接处上层链表均为下层链表的子集每一层链表都是有序的跳跃表具有链表的有序性又解决了链表的查询复杂度高的问题。从O(n) 降到 log(n)查询:首先从左上角开始,在最底层的链表中查找如果遇到比自己小的,继续在本层链表中搜索如果遇到比自己大的,说明后面不可能存储在查找的值了,跳跃到下.

2021-03-14 18:43:33 323

原创 Hbase扫描HFile原理

HFile文件结构首先要了解下它,才能知道它是怎么查找的。如上图:HFile分为四部分(针对HFile v2)Trailer 我理解它就是一个类似于文件头的东西,存储一些HFile的基本信息,比如版本号,各个块的偏移量Load-on-open section 启动时会将它存入内存,保存一些一级索引的数据No-Scanned block section 理解它为二级索引即可scanned block section 理解它为三级索引加数据即可构建索引根据上图中的root data i

2021-03-14 18:29:51 206

原创 Hbase扫描数据流程

前提读取的过程中的寻址与大概流程其实与写入是一致的。重点看:在内存中查找和在StoreFile上的查找过程简述:先在zookeeper中找到root表regionserver的地址然后在root表中找到meta表的地址在meta表中找对应要扫描的表的地址整体扫描过程从内存到文件首先构建scanner体系,构建一个regionScanner -> storeScanner-> storeFileScanner,MemstoreScanner这里说实话也不太明白,目前只

2021-03-14 18:00:47 498

原创 Hbase写入过程

概念如上图:HMaster管理多个HRegionServer一个RegionServer存在多个HRgion一个HRegion有一个预写日志和多个store一个store存在一个memoryStore和多个StoreFileStoreFile是HFile的逻辑实现,其实就是一个东西写入流程:首先客户端配置zookeeper的地址,然后去zookeeper获取元数据表存放的位置然后找到具体的regionserver的地址与对应的表向内存中写入数据,到此对于客户端就结束了,所以hba.

2021-03-12 23:35:35 233

原创 SparkSql解析过程

引用:Spark SQL架构和原理Spark SQL 性能优化再进一步 CBO 基于代价的优化Spark SQL join的三种实现方式总结首先用户使用spark.sql 或者 select等api提交sql转化为未解析的逻辑计划为什么叫为解析的逻辑计划:因为没有考虑数据的转化为已解析的逻辑计划转化为优化后的逻辑计划转化为物理执行计划计算物理执行计划的开销模型,选择一个解析为RDD去执行例子以下以这个sql的解析为例:SELECT sum(v)..

2021-03-11 00:36:31 587

原创 Spark通讯机制

Spark通讯机制流程每个节点上RpcEndPoint 发送消息给DispatcherDispatcher 将本地指令放入Inbox,将外部指令放入outboxTransportClient轮询OutBox,将消息发送给另一个机器的TransportServer另一个台机器的TransportServer的将消息转给自己的Dispathcer,然后放入InboxDispatcher会轮询消费Inbox猜想:通讯机制用在哪些地方Shuffle 过程中MapoutTracker的通讯

2021-03-10 23:59:28 181

原创 Spark Shuffle

Spark Shuffleshuffle的分区数怎么确定?Map端由初始读取的数据源和算子计算后决定,比如:kafka的分区数Reduce端由spark.default.parallelism决定,如果没有配置,由上一个map的分区数一致Reduce怎么拉取数据?先上图:BlockManager 是传输数据MapoutputTracker是通讯流程:MapOutputTrackerWorker将自己的map端输出的文件位置信息通过包装为MapStatus发送给Driver端的M

2021-03-10 23:52:34 148

原创 Spark内存管理

Spark内存管理堆内内存,JVM管理堆外内存,操作系统为什么需要堆外内存?因为jvm存在回收不及时,不能精确回收估计内存的问题,容易造成OMM.同时也避免了频繁的GC带来的程序停顿,当然JVM也是由优势的。为什么无法精确回收?因为一个对象创建后,保存在堆中。清除是由JVM处理的,spark只能标记一下。序列化的对象spark可以精确的计算,但是非序列化的对象不能精确估计。所以在内存分配中会预留一小部分方式,防止计算的误差导致的OMM.内存管理方式静态管理这种方法是旧的方法容易造成

2021-03-08 23:52:10 169

原创 Spark任务提交流程

Spark提交任务流程总体概况:1.在提交脚本中配置需要的资源(粗颗粒分配),向ResourceManager提交app2.RM启动一个NM来启动ApplicationMaster,driver运行在此机器上,并创建了DAGScheduler,TaskScheduler.3.AM向RM请求资源的,AM然后在对应的NM启动Excutor4.Excutor初始化线程池并向driver注册,为driver监控做准备5.Driver开始执行用户写的代码,遇到action时产出一个job6.DAG 根

2021-03-08 23:25:19 764

原创 Kafka幂等性及事务

Kafka事务事务就是保住消息消费的原子性和稳定性。消息语义at most once: 最多一次,发了就不管了,爱去哪里去哪里at least once: 至少一次,一定要你给我回复了,我才停止发送exactly once: 恰好一次,每条消息被精确的发送以上前两种都是可以使用生产者ACK机制来实现的,但是精准的一次需要幂等性来协助。注意幂等性不等于就实现了精确的一次,实际业务中还需要考虑消费者端的问题:比如消息写入数据库失败了之类的问题。幂等性每个生产者会被分配一个Pro

2021-03-06 16:07:14 229

原创 Kafka HW及Epoch

引用:HW与Epoch的讨论HW存在的意义:(为了保持副本间可消费数据一致的标记)保证多个副本之间的数据一致,否则因为同步的延迟的问题会出现多个副本间数据不一致的问题。如果Leader重新选举,对于消费者来说还会出现跳跃消费数据,丢失数据的情况保证当出现Leader切换后,能够消费的数据一致HW存在的基础:LEO 日志末端位移,表示日志末端下一条数据的位移,如果它的值为10那么分区中存在0~9 10条数据,下一条的位移量是10怎么样更新HW简单的说:取LEO的最小值,就是保证所有的副本.

2021-03-06 15:45:24 655

原创 Leader的选举及同步机制

个人总结,请以官网为准如有错误,欢迎指出Leader的选举Kafka Leader 选举分为三种broker Leader 选举副本 Leader 选举消费组 Leader 选举Broker一个Broker即可以理解为一台机器,Broker主要负责监控管理分区和副本的状态。在分区与副本的状态发生变化时,做出对应的操作。比如:分区的Leader副本出现了故障,那么broker需要进行Leader 副本的选举。Broker中的Leader Broker 称为Controller控制器。.

2021-03-05 00:20:07 409 5

openstack4j-3

OpenStack4j - Block Storage (Cinder)_files OpenStack4j - Orchestration (Heat)_files

2017-08-22

openstack4j-2

openstack4j-2

2017-08-22

openstack4j

openstack4j

2017-08-20

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

TA关注的人

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