自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Presto Task 执行

文章目录一、创建TaskClient端Resource端二、更新TaskClient端Resource端三、运行Task1. TaskExecutor3. PrioritizedSplitRunner4. DriverSplitRunner5. Driver向Presto集群提交的所有查询最终都会转化成为一个个单独的Task在每个Worker节点上执行。每个task的作用就是处理一个或者多个Split,然后将处理的结果输送给下游Stage中的task。一、创建Task创建Task主要是调用HttpRe

2021-08-29 12:06:33 833

原创 Presto Connector开发

文章目录一、创建Maven工程二、注册Plugin三、定义Connector四、定义Metadata五、定义SplitManager六、定义RecordSetProviderPresto可以支持很多的数据源,并且数据源都是以plugin的方式添加的。Presto可以很方便地添加新的Connector,接下来以自带的presto-example-http为例,详细介绍在Presto中如何添加一个新的Connector。一、创建Maven工程在Presto目录下创建一个presto-example-htt

2021-08-28 16:44:30 2127 1

原创 Presto Functions开发

文章目录Function注册窗口函数示例函数SumByFunction实现函数注册聚合函数示例函数AverageAggregations实现函数注册标量函数示例函数ArrayDistinctFunction实现函数注册本文会从函数注册到函数的具体实现详细讲解Presto Functions的开发过程。需要注意的是Presto Functions并不能像Hive UDF一样动态加载。Function注册Function的注册是通过FunctionAndTypeManager来完成的,在MetadataM

2021-08-28 10:55:11 630

原创 【笔记】谈判:双赢的艺术

文章目录基础理论定事之前先定势谈判的定义:决策权力的被分享谈判的过程:从心智到行为谈判的开始:4P原则谈判的七个构成要素1. 破我执:Position(立场,你认为对方需要) 不等于 Interests(利益,对方真正的需要)发现利益的听力三角形谈判风格(Thomas Kilmann量表)2. Criteria(客观标准)3. Options(双方都能接受的解决方案)4. No-Agreement Alternative(替代方案,备选方案)5. Communication(沟通品质)6. Relation

2021-08-13 18:54:18 582

原创 Presto查询调度解析

文章目录提交查询生成查询计划并启动调度器查询调度过程stage调度策略创建stage调度器Source Stage调度可扩展分布式写出Stage调度输入都为远程数据源的Fixed/Single Stage调度输入包含本地数据源的Fixed Stage调度Presto将查询拆分成多个且有树状层级关系的Stage,实际就是将整个SQL处理过程拆分成多个具有各自功能的执行阶段。Presto将查询请求解析成各个执行阶段后,便会将各个阶段分配到各个计算节点中执行,这个分配的过程实际是基于Stage进行的,不同的St

2021-08-11 10:10:20 1645 1

翻译 【翻译】Dremel: Interactive Analysis of WebScale Datasets

文章目录作者公司摘要1. 简介2. 背景3. 数据模型4.嵌套列式存储4.1 重复和定义级别重复级别定义级别编码4.2 将记录拆分成列4.3 记录组装5. 查询语言6. 查询执行树结构查询调度器7. 实验本地磁盘MR 和 Dremel服务树拓扑每个分片的直方图记录内聚合可扩展性落后者8. 观察9. 相关工作10. 总结11. 致谢12. 参考文献附录A. 列条带化算法B. 记录组装算法C. FSM 构造算法D. SELECT-PROJECT-AGGREGATE计算算法作者Sergey Melnik, A

2021-07-27 20:27:36 900

翻译 【翻译】Impala: A Modern, Open-Source SQL Engine for Hadoop

文章目录作者公司摘要1. 引言2. IMPALA 的用户视图2.1 物理模式设计2.2 SQL 支持3. 架构3.1 状态分布3.2 目录服务4. 前端5.后端5.1 运行时代码生成5.2 I/O 管理5.3 存储格式6. 资源/工作负载管理6.1 Llama 和 YARN6.2 准入控制7. 评估7.1 实验设置7.2 单用户性能7.3 多用户性能7.4 与商业 RDBMS 的比较8. 规划8.1 进一步的 SQL 支持8.2 进一步的性能增强8.3 元数据和统计信息收集8.4 自动数据转换8.5 资源管

2021-07-18 11:41:35 310

翻译 【翻译】Presto: SQL on Everything

作者Raghav Sethi, Martin Traverso*, Dain Sundstrom*, David Phillips*, Wenlei Xie, Yutian Sun,Nezih Yigitbasi, Haozhun Jin, Eric Hwang, Nileema Shingte*, Christopher Berner*公司Facebook, Inc.摘要Presto是一个开源分布式查询引擎,支撑了Facebook内部大部分的SQL分析工作。Presto的设计目标是具有适应性、

2021-07-12 10:01:26 574

原创 Presto提交查询源码解析

文章目录概述CLI获取查询SQL组装并向Coordinator发送查询请求循环获取查询结果概述用户可以通过JDBC或者CLI提交查询语句,本文以CLI客户端为例来讲解Presto如何提交查询。Presto客户端对查询语句的提交主要分为三个步骤。从指定的文件、命令行参数或者CLI窗口中获取需要执行的SQL语句。将得到的SQL语句组装成一个RESTful请求,发送给Coordinator,并处理返回的response。Cli会不停地循环分批读取查询结果(并在屏幕进行动态显示),直到查询结果完全显示完

2021-06-26 16:08:18 799

原创 Presto概述

文章目录基础架构Coordinator服务Worker服务Presto模型ConnectorCatalogSchemaTablePresto查询执行模型StatementQueryStageExchangeTaskDriverOperatorSplitPage基础架构Presto是Facebook开源的MPP架构的OLAP查询引擎,可对从数G到数P的大数据进行交互式的查询,查询性能是Hive的10倍以上。Presto查询引擎是一个Master-Slave的架构,其架构图如下:由架构图可以看出,Pre

2021-06-22 09:30:54 451

原创 【笔记】项目领导力培训笔记

怎样算是一个成功的项目?- 技术层面:按时、按质、在预算内。QBT(Quality、Budget、Time)- 干系人满意度:团队、客户、领导和其他项目干系人的满意度;- 商业层面:投资回报、净现值、战略创新等;项目管理流程的四大阶段:启动、计划、执行与控制、结束。项目成功的主要驱动因素:最高管理层的支持;明确的目标和目的;客户的支持;财务上的支持;切合实际的计划;适合的资源;所有权;工作努力,精力集中的工作人员;有效的交流等。制约项目成功的主要因素:交流不够;缺乏领导能力;不明确/不实际的.

2021-06-07 09:59:40 279

原创 Livy任务提交源码解析

文章目录简介任务路由代码断任务远程Driver上建立RpcServerLivyServer接收客户端提交代码断任务LivyServer向远程Driver的RpcServer提交任务远程Driver的RpcServer接收任务Driver执行代码断任务Batch任务LivyServer接收batch任务创建BatchSession以提交Spark任务创建SparkYarnApp实例以操作远程Spark任务简介Livy是基于Spark的开源REST服务,它能够通过REST的方式将代码段或是序列化的二进制代码

2021-06-01 09:45:55 907

原创 Elasticsearch故障诊断常用方法

文章目录背景使用Profile API定位慢查询1. Query2. Rewrite Time3. Collectors使用[Explain API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html)分析未分配的分片(Unassigned Shards)诊断未分配的主分片诊断未分配的副分片诊断已分配的分片节点CPU使用率高节点内存使用率高bulk队列Netty缓冲indexing buff

2021-05-20 09:25:14 942 3

原创 Elasticsearch应用实践

文章目录集群层规划集群规模单节点还是多节点部署移除节点独立部署主节点节点层控制线程池的队列大小为系统cache保留一半物理内存系统层关闭swap索引层使用全局模板索引轮转避免热索引分片不均副本数选择Force MergeShrink Indexclose索引延迟分配分片小心地使用fielddata客户端使用REST API而非JAVA API注意429状态码了解你的搜索计划为读写请求设置比较长的超时时间读写避免搜索操作返回巨大的结果集避免索引巨大的文档避免使用多个_type避免使用_all字段避免将请求发送

2021-05-18 09:40:52 271 4

原创 Elasticsearch磁盘使用量优化

文章目录禁用不需要的特性禁用doc values不要使用默认的动态字符串映射观察分片大小禁用_source使用best_compressionForce MergeShink Index数值类型长度够用就好使用索引排序来排列类似的文档在文档中以相同的顺序放置字段禁用不需要的特性默认情况下,ES为大多数的字段建立索引,并添加到doc_values,以便使之可以被搜索和聚合。例如以下几种情况:如不需要在某个字段上过滤,则可以不索引该字段;如只需要在文本字段上进行匹配,而不关心生成的得分,则可以配置ES

2021-05-17 10:02:12 899 1

原创 Elasticsearch搜索速度的优化

文章目录为文件系统cache预留足够的内存使用更快的硬件文档模型预索引数据字段映射避免使用脚本优化日期搜索为只读索引执行force-merge预热全局序号(global ordinals)execution hint预热文件系统cache转换查询表达式调节搜索请求中的batched_reduce_size使用近似聚合深度优先还是广度优先限制搜索请求的分片数利用自适应副本选择(ARS)提升ES响应速度为文件系统cache预留足够的内存在一般情况下,应用程序的读写都会被操作系统“cache”(除了direc

2021-05-17 09:34:53 924

原创 Elasticsearch写入速度优化

文章目录背景translog flush间隔调整索引刷新间隔refresh_interval段合并优化indexing buffer使用bulk请求bulk线程池和队列并发执行bulk请求磁盘间的任务均衡节点间的任务均衡索引过程调整和优化自动生成doc ID调整字段Mappings调整_source字段禁用_all字段对Analyzed的字段禁用Normsindex_options设置背景在ES的默认设置下,是综合考虑数据可靠性、搜索实时性、写入速度等因素的。有时候,业务上对数据可靠性和搜索实时性要求并

2021-05-15 16:18:53 1764 1

原创 Elasticsearch集群状态的发布与应用

文章目录简介集群状态的发布二段提交总流程阶段一:发布过程阶段二:提交过程增量发布的实现原理集群状态的应用简介如果产生了新的集群状态,则主节点会把它广播到其他节点。主节点和其他节点的通信使用最广泛的方式,就是通过下发集群状态让从节点执行相应的处理。控制信息、变更信息都存储在集群状态中。集群状态在ES中封装为ClusterState类。可以通过_cluster/state API来获取集群状态。curl -X GET "localhost:9200/_cluster/state"响应信息中提供了集群

2021-05-13 09:30:54 381

原创 ES索引恢复流程解析

文章目录背景主分片恢复流程INIT阶段INDEX阶段VERIFY_INDEX阶段TRANSLOG阶段FINALIZE阶段DONE阶段副分片恢复流程流程概述副分片节点处理过程INIT阶段INDEX阶段VERIFY_INDEX阶段TRANSLOG阶段FINALIZE阶段DONE阶段主分片节点处理过程phase1phase2背景索引恢复是ES数据恢复过程。待恢复的数据是客户端写入成功,但未执行刷盘(flush)的Lucene分段。根据数据分片性质,索引恢复过程可分为主分片恢复流程和副分片恢复流程。主分片从

2021-04-29 20:48:06 2698 1

原创 Elasticsearch搜索流程解析

文章目录背景协调节点流程Query阶段Fetch阶段数据节点流程响应Query请求响应Fetch请求背景ES的读取分为GET和Search两种操作,这两种读取操作有较大的差异,GET/MGET必须指定三元组:_index、_type、_id。也就是说,根据文档id从正排索引中获取内容。而Search不指定_id,根据关键词从倒排索引中获取内容。可接收客户端请求的节点称为协调节点。在协调节点,搜索任务被执行成一个两阶段过程,即query then fetch。真正执行搜索任务的节点称为数据节点。当搜索任

2021-04-22 21:34:31 1011

原创 【笔记】个人领导力的拆解和提升

2021-04-17 19:39:25 111

原创 【笔记】精品为王

2021-04-16 20:05:36 70

原创 Elasticsearch写入流程源码解析

文章目录前言协调节点流程数据预处理pipeline请求自动创建索引检测索引的mapping、routing、id信息内容路由,构建基于shard的请求将请求转发给primary shard并等待响应主分片节点流程检查写一致性写Lucene写Translog写副分片副分片节点流程前言新建、索引和删除请求都是写操作,写单个文档的流程如下:客户端向协调节点发送写请求,ES的任意节点都可以作为协调节点(coordinating node)接受请求。协调节点使用_routing(默认是文档ID)字段来确定文

2021-03-28 18:19:34 692 1

原创 【笔记】上、下级沟通——情商管理的智慧

2021-03-27 17:44:43 91

原创 【笔记】出口成章——敏捷思考,完美表达

2021-03-19 19:36:56 114

原创 【笔记】战略思考与表达

2021-03-16 09:37:04 124

原创 Elasticsearch中的Zen Discovery选主流程

文章目录背景为什么使用主从模式?选举算法什么时候触发选主?选主过程选举临时Master投票与得票的实现确立Master或加入集群选举完成elasticsearch中的Discovery模块负责发现集群中的节点,以及选择主节点。在Elasticsearch 7.0以前,内置的实现称为Zen Discovery。Zen Discovery封装了节点发送(ping)、选主等实现过程。背景为什么使用主从模式?ES的典型场景中的另一个简化是集群中没有那么多节点。通常,节点的数量远远小于单个节点能够维护的连接数

2021-03-16 09:23:54 613

原创 项目管理基础

2021-03-14 14:39:10 70

原创 独立思考——主动有逻辑的思考

2021-03-11 21:54:37 87

原创 SparkSQL & ClickHouse RoaringBitmap使用实践

文章目录简介ClickHouse简介RoaringBitmap(RBM)原理ClickHouse中使用RBM存在的问题RoaringBitmap(RBM)定制序列化实现ClickHouse中RoaringBitmap的结构解析Spark中RoaringBitmap的实现定制RBM序列化方式以兼容ClickHouseByte(1) - 类型标识生成VarInt(SerializedSizeInBytes) - 序列化后的字节长度ByteArray(RoaringBitmap) - RBM序列化定制序列化的整体

2020-12-10 21:47:42 8555 21

原创 SparkSQL自定义bitmap udf操作函数

文章目录简介源码实现SparkSQL使用示例简介Bitmap是用来实现基数统计的一种常用方法,它可以实现精确的基数统计。为了提高bitmap对稀疏位图的压缩率,提出了RoaringBitmap(RBM)对稀疏位图进行压缩,减少了内存占用并提高了使用效率。在Java中实现RBM的常用库是RoaringBitmap,其已经在Spark、Kylin和Druid等系统中得到了应用。那是不是可以将RoaringBitmap库封装成SparkSQL的udf函数,从而可以对bitmap结构数据进行方便的计算操作,实

2020-11-30 09:45:34 2534 3

原创 spark-alchemy中的HyperLogLog功能使用实践

文章目录简介添加maven包依赖准备测试数据创建Hive表存储中间结果SparkSQL向表中写入数据从表中读数据进行计算简介利用HyperLogLog算法计算UV类指标是一种常用的方案。在spark中的approx_count_distinct函数就是基于HyperLogLog实现的,但其每次都需要从原始明细的数据进行计算,无法从中间结果进行再聚合。预先聚合是一种常用高性能分析的手段,可以极大地减少数据量。由于Spark没有提供相应功能,Swoop 开源了高性能的HLL native函数工具包,作为 s

2020-11-25 09:13:32 636

原创 SparkStreaming执行过程分析

文章目录简介启动流计算引擎StreamingContext.start启动流计算JobScheduler.start启动Job调度器接收并存储数据Driver端初始化ReceiverTrackerDriver端封装Receiver为RDD,提交Spark Job运行以启动receiverExecutor端启动Receiver并接收存储数据启动BlockGenerator接收并存储block数据启动Receiver接收数据Receiver将接收到的Block存储到BlockGenerator中生成Batch

2020-11-07 19:14:14 590 1

原创 OLAP查询数据量预估的解决方案

文章目录<1%的“异常”查询影响OLAP引擎的稳定性基于规则判断的方式比较粗糙,只能解决部分问题借鉴数据库Query Optimizer思想建立查询成本指标扫描数据量预估返回结果集预估返回结果集基数预估的修正确定成本阈值基于SparkSQL的实现方案统计每个时间片中数据总行数统计每列数据的直方图信息后记多OLAP引擎联合支撑基于HyperLogLog算法预估结果集基数随着用户分析数据量的急剧增长与用户多维实时交互分析数据的需求,OLAP引擎成了交互式数据分析的标配。<1%的“异常”查询影响O

2020-11-01 17:26:04 2012 4

原创 Spark Shuffle机制解析

文章目录Shuffle简介与其发展Shuffle机制的实现ShuffleManager接口简介ShuffleManager的创建具体实现类SortShuffleManagerregisterShuffle方法getWriter方法getReader方法Shuffle Writer过程解析数据聚合与排序聚合排序溢写磁盘数据合并与持久化生成索引文件Shuffle Reader过程解析获取map任务输出的位置信息获取blocks数据划分本地与远程Block获取远程Block获取本地Blockreduce端聚合数据

2020-10-15 09:38:42 621 1

原创 【读书笔记】巴比伦富翁的理财课

第1章 来自诺丁汉大学的两封信勇敢面对债务以获得自尊自重勇敢面对你的债务!不要有任何侥幸之心,坚信清偿债务比躲债和赖债更加容易,也更能让你获得自尊自重,因为无债一身轻。尽快罗列所有的债务清单,与每一位债主沟通协调,坦诚地将现状据实相告,向他们解释你的偿债计划并达成协议。更加辛勤努力地工作,首先将所有收入的7/10留作家用,以保证家人的生活温饱和衣食无忧,这既是你必备的爱心,也是你应当承担的义务和责任。公平、老实地将所有收入的2/10分成若干等份偿还债主,坚定不移地履行偿债的承诺,债主们通常会理解

2020-10-08 09:54:28 1008

原创 【读书笔记】好好学习-个人知识管理精进指南

文章目录引言什么是知识第一章 知识管理与认知优势在海量信息即时获取时代,我们拼什么?如何提升认知深度?为什么大多数人的学习层次上不去?到底哪些知识值得学?第二章 掌握临界知识的底层思维与方法跳出“低水平勤奋陷阱”学习临界知识需要具备的两个心态底层心态之一:绿灯思维底层心态之二:以慢为快提升学习能力的三个底层方法反思:提升知识掌握的层次以教为学刻意练习持续提升学习能力的三个技巧记录定期回顾付费购买第三章 发现和应用自己的临界知识为什么临界知识能四两拨千斤?如何发现自己的临界知识?天赋与学习临界知识的关系如何应

2020-09-30 16:09:38 855

原创 【读书笔记】好好思考-成甲

文章目录01 引言我们最熟悉的决策方式这个时代最厉害的决策方式打破学科间的壁垒02 多元思维模型:终身学习者的利器构建深度思考力的底层逻辑什么是多元思维模型查理·芒格眼中的多元思维模型思维模型背后更重要的思维方式多元思维模型建立认知竞争力的底层逻辑积累经验型学习深度思考型学习多元思维模型解决问题的四个层次追问有效策略背后的原理思维模型的四个层次棱镜法分解问题层次超越答案寻找更底层的思维模型从“无用之用”中学习思维方式03 学习掌握思维模型的实战方法通过读书寻找思维模型的三个方法查字典法——快速发现有效经验策

2020-09-20 17:38:06 975

原创 VISITOR(访问者)模式

文章目录描述定义类型动机UML类图实现主要角色示例适用场景优点缺点相关模式描述定义表示一个作用于某对象结构中的各元素的操作,可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。类型对象行为型模式动机需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。UML类图实现主要角色Visitor:抽象访问者为对象结构中ConcreteElement的每一个类声明一个Visit操作。该操作的名字和特

2020-09-19 16:24:02 207

原创 TEMPLATE METHOD(模板方法)模式

文章目录描述定义类型动机UML类图实现主要角色示例适用场景优点缺点相关模式描述定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。类型类行为型模式动机通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许子类改变这些具体步骤以满足它们各自的需求。UML类图实现主要角色AbstractClass:抽象类实现一个模板方法,定义一个算法的骨架。定义抽象的原语操作,具体的子类将重定义它们

2020-09-19 11:09:19 147

空空如也

空空如也

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

TA关注的人

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