Spark Rpc 消息处理

前言 Spark Rpc 所有的请求或响应统称为消息,它们都有着共同的格式。本篇文章会先介绍消息格式,然后介绍基于 Netty 框架,如何解析和处理消息,并且还介绍了如何处理数据大的请求。 消息格式 1 2 3 4 5 ---------------------------------------------------------- frame size | type | header | body ---------------------------------------------------------- 8 byte……

Kafka 客户端的缓存管理

前言 Kafka 作为一个高吞吐量的消息队列,它的很多设计都体现了这一点。比如它的客户端,无论是 Producer 还是 Consumer ,都会内置一个缓存用来存储消息。这样类似于我们写文件时,并不会一次只写一个字节,而是先写到一个缓存里,然后等……

基准测试框架 ycsb

前言 ycsb 作为雅虎开源的基准测试框架,支持多种数据库的性能测试,也能通过生成满足指定概率分布的数据,来模拟实际的并发场景。ycsb 的用法也很简单,本篇文章主要介绍 ycsb 框架的原理。 测试流程 框架的测试流程很简单……

Spark Sql 表达式介绍

前言 上篇博客介绍了解析 sql 语句生成 LogicalPlan 树的原理,还没有介绍如何解析表达式。LogicalPlan 大都包含了多个表达式,可以认为 LogicalPlan 只是对 sql 语句做了一次粗略的划分,再细一层的划分就是基于表达式的解析。表达式的……

Spark Sql LogicalPlan 介绍

前言 LogicalPlan 表示逻辑计划,它表示 spark sql 初步解析的成果。之后的验证和优化,都是基于逻辑计划的。spark sql 使用 antrl4 解析 sql 语句生成语法树,然后遍历这棵树生成 LogicalPlan 二叉树。这篇文章介绍常见的 LogicalPlan 子类和是如何生成 LogicalPlan 树的。读者……

Spark Sql 基础类 TreeNode

前言 Spark Sql 不仅支持 sql 语句,而且还会对 sql 进行自动优化。整体流程如下图所示: 接收 sql 语句,初步解析成 logical plan 分析上步生成的 logical plan,生成验证后的 logical plan 对分析过后的 logical plan,进行优化 对优化过后的 logical plan,生成 physical……

Hbase Bulkload 原理

Hbase Bulkload 原理 当需要大批量的向Hbase导入数据时,我们可以使用Hbase Bulkload的方式,这种方式是先生成Hbase的底层存储文件 HFile,然后直接将这些 HFile 移动到Hbase的存储目录下。它相比调用……

Kafka 事务实现原理

Kafka 事务实现原理 Kafka 事务在流处理中应用很广泛,比如原子性的读取消息,立即处理和发送,如果中途出现错误,支持回滚操作。这篇文章来讲讲事务是如何实现的,首先来看看事务流程图。 事务流程 Kafka的整个事务处理流……

antlr4 使用原理

antlr4 使用原理 Antlr4 是一款开源的框架,用来分析语法。使用者可以自己创建语法规则文件,然后使用 antlr4 生成类文件。这些类实现了将语句按照关键字分词,然后将分词构造成一棵树。使用者在这些类之上封装代码,就可以实现自己的……

Kafka Schema Registry 原理

Kafka Schema Registry 原理 Confluent 公司为了能让 Kafka 支持 Avro 序列化,创建了 Kafka Schema Registry 项目,项目地址为 https://github.com/confluentinc/schema-registry 。对于存储大量数据的 kafka 来说,使用 Avro 序列化,可以减少数据的存储空间提高了存储量,减少了序列化时间提高了性能。 Kafka 有多个topic,里面……