![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
文章平均质量分 78
darkness0604
这个作者很懒,什么都没留下…
展开
-
clickhouse小结
ClickHouse特征列式存储可以读取很快数据压缩基于列式存储的特征,数据都是特征相似连续存储的,因此可以使得压缩去重效果较好,从而减少数据传输的IO开销向量化执行支持CPU寄存器层面的并行,向量化执行简单理解就是基于CPU指令集的并行执行,实现单条指令来操作多条数据,通过SSE4.2指令集实现向量化执行多线程与分布式1、数据表有分区的概念,因此可以基于分区做并行操作2、纵向扩展:一份数据可以分成不同的分片存储在不同的机器上,可实现数据的分布式存储扩展与并行计算。3、横原创 2022-04-28 10:41:25 · 282 阅读 · 0 评论 -
Flink源码剖析之JobGraph的生成
背景其实,以前编写flink代码的时候,模式比较固定,不管你中间过程如何花里胡哨,开头总要有一个获取上下文环境,最后总要有一个:env.execute(),之前只是知道这个方法,会在job提交的时候,用于获取job的计算流程图,但是我一直很好奇,到底是什么时机生成的呢?源码剖析创建JobGraph我们知道,提交任务的时候,是要有一步获取Job的JobGraph的: /** * Creates a {@link JobGraph} with a specified {@link Job原创 2022-03-23 16:56:15 · 1871 阅读 · 1 评论 -
FlinkSQL平台化之路-StreamX提交源码剖析
前言背景在公司里做实时计算开发,之前大部分job都采用的是基于java的streaming编程方式进行的,这样的好处很明显:足够灵活,可以应对各种复杂的实时分析场景,但缺点也很明显:上手存在门槛,需要懂code,如果是一个逻辑简单的计算需求,用code整体编写起来的方式,会让整个流程也略显笨重…于是我开始想,目前的公司流式开发的流程也趋于稳定了,而对于后续接近来的需求,如果可以用SQL解决,就尽可能用SQL解决,这样无论是从开发成本或者是未来如果版本升级造成的迁移成本都会有一个明显的降低。而如果单纯通原创 2022-03-23 16:52:03 · 3777 阅读 · 2 评论 -
云原生之K8S-01-简介与基本概念
集群编排的困难现代服务大多数都不是单点的,更多的是各种微服务,充斥着各种分布式的分布特点,对应docker的容器的话,一个服务实例就是一个容器,但随着节点一直增多,docker对于这些容器的部署难度也变得棘手了起来。容器编排工具比较docker-compose是docker官方提供的对docker多容器进行编排管理,但存在局限性,只能对单机内的多容器进行编排。Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一原创 2022-02-28 11:23:22 · 23158 阅读 · 0 评论 -
一次TOPN需求带来的历险-与Flink SQL的爱恨情仇
背景最近接到一个需求,算是一个比较常见的需求,我们公司的业务会涉及到直播,因此直播自然避免不了高并发的房间内发消息,因此业务端给出的需求就是:实时得为业务端提供近10s内的每个房间的消息总数TOP20, 业务端会根据TOP前几进行相应的限流的一系列操作。思考其实接到这个需求,我的思考实现方式是这样的:1、先求出每个房间的近10s的消息总数2、将第一步得到的每个房间的近10s的消息总数进行汇总,排序,从而得出最终结果: 近10s内,消息数TOP10的房间是哪些可以看到上面的每一步,都对应一个时间范原创 2021-12-10 15:05:07 · 1697 阅读 · 1 评论 -
基于Prometheus的flink性能监控小坑记录
背景公司内的flink集群跑了挺长一段时间了,一直也没有对其进行一个比较完整的监控,最近打算着手做这件事情,经过网上的调研,目前公司采用的部署模式是per-job模式,最终选用了基于prometheus,把job指标推送到中间网关的pushgateway上面,然后prometheus去抓取pushgateway上面的信息,从而实现对flink做性能监控,最后通过Grafana进行展示。问题在接入过程中,发现了一个问题: 我感觉prometheus的机制有点蠢!!!为啥这么说?pushgateway原创 2021-11-26 16:33:50 · 2041 阅读 · 0 评论 -
java中的lambda可以序列化吗?
java中的lambda可以序列化吗?这个问题之前一直也没想过,其实主要也是之前从来没有遇到过需要序列化它的情景,直到。。。我在开发flink作业的时候,因为一些需求,需要传入一个自定义的过滤器,而自然而然就直接使用这种lambda写一通函数式编程又爽又好用,但启动后确是:直接一手序列化报错给我整懵逼了, 恩? 原来lambda是不能序列化的吗,一般来说,一个普通的实体类,只需要给类实现一个Serializable的接口标明,就可以参与序列化了,但这种lambda怎么给接口呀?但是我脑海中突然闪原创 2021-11-11 17:25:07 · 1704 阅读 · 2 评论 -
KAFKA那些事-07-从KAFKA总结分布式下的发送和连接
分布式模型下的客户端应用运行的关键?分布式下,通常有多个角色进行互相协调。因此作为一个分布式角色来说,首先要解决的就是如何和其他分布式角色进行通信。对于客户端而言,首先需要明确集群的信息,以及如何进行连接,因此也涉及到具体使用到的IO模型是什么?如下是kafka producer发送一条消息需要进行的操作:1、拉取集群元数据2、底层利用NIO建立sokcet连接进行向指定节点进行发送信息。分布式模型下的服务端应用运行的关键?作为服务端来说,更关心的是如何更好的接收和管理众多的连接,以及对连接原创 2021-10-26 10:32:51 · 766 阅读 · 1 评论 -
KAFKA那些事-06-KAFKA Producer基于源码分析的参数配置调优
Producer配置分析Properties conf = new Properties();//设置ACK级别: 0,1,-1conf.setProperty(ProducerConfig.ACKS_CONFIG,"0");//Key序列化器conf.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());//Value序列化器conf.setProperty(P原创 2021-08-18 10:46:38 · 346 阅读 · 0 评论 -
KAFKA那些事-05-KAFKA的索引文件分析、ACK不同级别的现象、基于时间戳的索引
KAFKA中的索引与数据文件的分析创建topic来到KAFKA存储目录,发现已经有了两个分区的数据:进到0号分区的文件夹:发现有.log结尾的数据文件,.index结尾的偏移量索引文件,.timeindex结尾的时间戳二级索引文件但我们发现,我们现在还没有写入消息,但两个索引文件就已经有了10M的大小,这是为何?这是因为kafka对索引文件使用的是mmap映射,已经预分配好了10M的磁盘块大小的空间,通过lsof查看kafka进程号观察这个细节:可以看到SIZE/OFF的位置上,确实已原创 2021-07-21 15:11:04 · 445 阅读 · 0 评论 -
KAFKA那些事-04-KAFKA的元数据细节、消息存放机制、零拷贝发送、分布式集群副本同步
KAFKA的元数据与zookeeperkafka的元数据是交给zookeeper来管理的。假设我们有topic :ooxx, 副本数为2,主副本在id为3的broker上,另一个副本在id为1的上面。 此时,只有主副本有读写能力,从副本只能备着。前面我们说过,kafka集群会选出一个broker作为controller,这个选举是借助zookeeper来完成的,zookeeper本质是通过让它们抢占一个临时节点,谁抢到谁就是controller。如图下:通过zookeeper的kafka路径中原创 2021-06-15 10:19:21 · 845 阅读 · 0 评论 -
KAFKA那些事-03-JAVA API实操(生产者、消费者属性配置,偏移量提交方式)
Producerproducer是面向broker的,然后向指定的toopic进行发送数据,相同key去到同一分区。初始化配置String topic = "msb-items";Properties p = new Properties();p.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "node02:9092,node03:9092,node01:9092");//kafka 持久化数据的MQ 数据-> byte[],原创 2021-06-15 10:11:50 · 198 阅读 · 0 评论 -
KAFKA那些事-02-KAFKA搭建、消息拉取和offset更新策略
1、准备zookeeper环境2、搭建KAFKA环境编辑server.properties,注意填写zk地址的时候,比较好的做法是在zookeeper地址后加上一个路径:zookeeper.connect=node02:2181, node02:2181, node03:2181/kafka以及要保证每个broker.id保证不同。3、启动kafka/opt/bigdata/kafka_2.11-2.2.0/bin//kafka-server-start.sh -daemon /opt/原创 2021-06-01 10:53:02 · 477 阅读 · 1 评论 -
KAFKA那些事-01-概述
消息队列的缘由kafka是一种消息队列。在说kafka之前,我们先来聊一下消息队列的出现缘由。两个服务之间想要进行数据通信,如果直接点对点传输,会在数据的可靠性、一致性等方面让人头疼,因此为了解耦,人们的常用做法是在中间加一层东西进行服务之间解耦,而这个东西,就是消息队列。分布式消息队列与KAFKA的诞生但作为一个单机版的消息队列应用,势必存在单点问题和性能问题,因此必然需要发展成为一个分布式应用。按照分布式的老三样AKF原则,在X轴(可靠性横向副本扩展),Y轴(业务切分),Z轴(数据分区)上原创 2021-06-01 10:44:47 · 193 阅读 · 2 评论