0%

2020-11-21日更:

x信金科,如果大数据部招人,如果你是业务出生/学历不好/公司背景不强,就不要浪费他们的时间了

前言

Presto在数据进行shuffle的时候,并不是PPT中经常看到的Push模式,而是Pull模式。
在两端负责分发和交换数据的类分别是ExchangClientOutputBuffer

Read more »

2020-11-21日更:

x信金科,如果大数据部招人,如果你是业务出生/学历不好/公司背景不强,就不要浪费他们的时间了

前言

Presto的Slice并不在Presto包中,是在一个独立的包org.airlift.slice
org.airlift是个工具类,作者也是Presto的主要开发者,主要是服务于Presto的,但是我们也可以单独取出来用。

Read more »

2020-11-21日更:

x信金科,如果大数据部招人,如果你是业务出生/学历不好/公司背景不强(BAT),就不要浪费他们的时间了

先行流程

在进行分段之前,已经建立好计划数PlanNode,并且已经进行了所有的planOptimizers进行优化。
最后在SqlQueryExecution#doAnalyzeQuery()的PlanFragmenter中进行分段。

Read more »

前言

行列存储的区别,上次在串讲的时候被问到了。
因为没有作为具体的分析,所以今天就来全方面的分析一下。

Read more »

2020-11-21日更:

x信金科,如果大数据部招人,如果你是业务出生/学历不好/公司背景不强,就不要浪费他们的时间了

基本介绍

Presto是FaceBook开源的一个分布式的Sql Engine。
对标的是Impala之类的Mpp引擎。
主打的是实时分析和多数据源支持。
更详细的介绍和同类框架的对于可以参见

Druid和Kylin在美团点评的选型与实践

这个PPT总结的很好

Read more »

OLAP和OLTP

OLTPOnLine Transaction Processing ,联机事务处理),如MySQL, MicroSoft SQL Server等关系数据库系统,这些关系数据库系统擅长事务处理,在数据操作中保持着很强的一致性和原子性,能够很好的支持频繁的数据插入和修改,但是,一旦需要进行计算的数据量过大,达到数千万甚至数十亿条,或需要进行的计算非常复杂的情况下,OLTP类数据库系统便力不从心了。

Read more »

分布式,集群,单点问题

与分布式相对应的就是单机的概念。
比如一个服务,依赖nginxtomcatmysqlredis 这么多组件。
单机的话可能就部署在一个服务器上。
这样的话容易服务器挂了,整个服务就不可用了。
同时可扩展性不是很好,一台普通的机器用来跑简单的服务还是可以的,万一是个需要高并发的,数据量比较大的呢,那就只能去买大型机了,但是大型机价格昂贵。同时还是避免不了如果机器挂了,整个服务就不可用的问题。

Read more »

原子指令

在涉及到多线程时一般会用到锁。

但是重量级锁带来的race condition又会大量的消耗性能。

于是有了乐观锁,典型的就是借助原子指令,CAS来进行操作。这个还依赖的是硬件的发展。

Read more »

前言

其实我们不一定所有配置都要写在.vimrc里面的
偶尔在vim的命令行里执行一些小程序也是很方便的

改tab为space

1
2
:set expandtab
:%retab

翻半页

1
2
3
4
# 下半页
<C-d>
# 上半页
<C-u>

Java SPI

Java的spi约定是在源代码目录下的META-INF/services中,新建一个文件,文件名是接口的全限定名,内容是我们想要进行动态Loader的类的全限定名。

Read more »

1
2
3
4
5
6
7
8
public class LongAdder extends Striped64 implements Serializable {

}

abstract class Striped64 extends Number {
transient volatile Cell[] cells;
transient volatile long base;
}
Read more »

前言

pigeon是大众点评内部一直在使用的rpc框架,同时带有服务治理的功能。
组件是使用zookeeper + netty + jetty完成。
现在也已经开源

Read more »

前言

maven打包的时候,默认只是把你的源文件打包起来
如果你的项目中还依赖了其他的项目,那是不打包进去的。

这样我们在启动的时候,配置起来可能就会很麻烦。

于是fat-jar的方式诞生了。

Read more »

前言

之前自己写的时候哪管什么log不log的,遇到啥都是直接sout。
后来在写自己的框架的时候,发现不行啊,我要做一个log出来,像spring启动那样。
来了美团,这里的log更加的严谨了,除了要运行的时候打印出log,还要把log分类分时间打到本地的文件里,

当然这还不够,美团有个cat框架,还需要我们把log通过网络,打到专门管理log的服务器上去。

大的系统log是很有必要的,这样出了问了log能给我们很大的启示。

Read more »

前言

ThreadLocal类的作用就是对于每个线程,保存一份类的实例。

简单的说实现的话,就是存一个map,key就是当前的线程,value是该变量。
但是实际上的实现还是和我最初想的不一样,这个还要更复杂点。

Read more »

前言

1
2
3
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable

和ArrayList相比,LinkedList多了AbstractSequentialList类和Deque接口。

其中Deque又是继承自Queue,所以LinkedList可以当做队列或者双端队列。

Read more »