随笔分类 - 大数据
hadoop,hbase,zk...
摘要:mongodb 没有官方的游标滚动实现深度分页功能,建议的都是选择出一个字段,如_id,然后每次查询时限制该字段,而不进行分页处理。 也没有看到更优的实现方式,本文做一个大胆的假设,自行实现滚动分页功能。供大家思路参考。 但是猜想可以自行实现一个,简单思路就是,第一次查询时不带limit进行查询全量
阅读全文
摘要:clickhouse据说是用在大数据量的olap场景列式存储数据库,也有幸能够用到它在实际场景中落地。本篇就来说说简单的使用心得吧。 1. 整体说明 架构啥的,就不多说了,列式存储、大数据量、高性能。参见官方文档地址: https://clickhouse.com/docs/en/ 对于使用者而言,
阅读全文
摘要:用例:有N个文件,每个文件只有一列主键,每个文件代表一种属性。即当如PRI1主键在A文件中,说明PRI1具有A属性。这种场景,一般用于数据的筛选,比如需要既有属性A又有属性B的主键有哪些?就是这类场景。 如何处理该场景? 1. 解题思路 如果抛却如题所说文件限制,那我们如何解决? 比如,我们可以将每
阅读全文
摘要:害,又是一个炒冷饭的时间。fork/join是在jdk1.7中出现的一个并发工作包,其特点是可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。从而达到多线程分发任务,达到高效处理的目的。 1. 关于fork/join的一点想法 以上说法,也许大家没什么
阅读全文
摘要:害,别误会,我这里说的stream不是流式编程,不是大数据处理框架。我这里说的是stream指的是jdk中的一个开发工具包stream. 该工具包在jdk8中出现,可以说已经是冷饭了,为何还要你说?只因各家一言,不算得自家理解,如若有空,何多听一版又何妨。 本篇主要从几个方面讲讲:1. 我们常见的s
阅读全文
摘要:上一篇文章中,我们看了get在es的实现过程,虽只是一个简单的单条查询,但看起来实现却非常之复杂。纠其原因,是我们围绕了太多外围的东西讲了,而其核心则无外乎三点:1. 定义id对应的机器节点; 2. 查找真正的docId; 3. 查找docId对应的field信息; 本篇,我们再看另一个es的重要功
阅读全文
摘要:前面讲的都是些比较大的东西,即框架层面的东西。今天咱们来个轻松点的,只讲一个点:如题,get单条记录的es查询实现。 1. get语义说明 es中要实现get的查询,直接就是一个url请求即可: curl http://localhost:9200/test/job/1 get是用于搜索单条es的数
阅读全文
摘要:上一篇讲解了es的网络通信模块实现过程,大致明白其工作原理。再总结一下,就是基于netty编程范式,形成es通信基础。从而,最终我们得到几个重要的handler: Netty4HttpPipeliningHandler/Netty4HttpRequestHandler/Netty4MessageCh
阅读全文
摘要:ES是一个分布式搜索引擎,其除了用户提供必要的通信服务外,集群间也必须保持紧密的通信联系,才能在必要的时候给出正确的结果。其则必然涉及到各种繁多且要求高的通信场景,那么如何实现高性能的通信,则是其必须要考虑的问题。 今天,我们就以es的transportService的实现为窥点,观察es的高性能的
阅读全文
摘要:ES作为超强悍的搜索引擎,除了需要具有齐全的功能支持,超高的性能,还必须要有任意扩展的能力。一定程度上,它是一个大数据产品。而要做扩展性,集群自然少不了。然而单独的集群又是不够的,能够做的事情太少(比如通常的集群为负载均衡式对等集群),所以它需要自己组建合适自己的集群。也就是服务需要自动发现,自动协
阅读全文
摘要:ES作为强大的和流行的搜索引擎服务组件,为我们提供了方便的和高性能的搜索服务。在实际应用中也是用得比较爽,但如果能够理解更深入一点,那就更好了。虽然网上有许多的文章已经完整说明,ES是如何如何做到高性能,如何做到高可用的,以及有许多的避坑指南。但那些,毕竟还是太描述化。 就让我们以源码作为出发点,一
阅读全文
摘要:hive原本不是用来做简单的crud的,但有时候我们就是有可能这么干,怎么办呢? hive 还是提供了相应的功能的,查询是最必须的,就无须多说了。 插入数据一般来说都是大批量的插入,一般用于从源数据中导入数据到hive中,然后经过hive加工后,写入到一张新的结果表。而这个表的数据一般也会很大,具体
阅读全文
摘要:消息中间件,说是一个通信组件也没有错,因为它的本职工作是做消息的传递。然而要做到高效的消息传递,很重要的一点是数据结构,数据结构设计的好坏,一定程度上决定了该消息组件的性能以及能力上限。 1. 消息中间件的实现方式概述 消息中间件实现起来自然是很难的,但我们可以从某些角度,简单了说说实现思路。 它的
阅读全文
摘要:分布式系统的三大理论CAP就不说了,但是作为分布式消息系统的rocketmq, 主从功能是最最基础的保证可用性的手段了。也许该功能现在已经不是很常用了,但是对于我们理解一些分布式系统的常用工作原理还是有些积极意义的。 今天就一起来挖挖rocketmq是如何实现主从数据同步的吧。 1. 主从同步概述
阅读全文
摘要:上一篇文章讲了如何设计和实现高并发高性能的应用,从根本上说明了一些道理。且以rocketmq的mappedFile的实现作为一个突破点,讲解了rocketmq是如何具体实现高性能的。从中我们也知道,mappedFile只是其利用的操作系统的一个特性小点。 今天,我们就来说说,rockmq实现高性能的
阅读全文
摘要:RocketMQ作为消息中间件,经常会被用来和其他消息中间件做比较,比对rabbitmq, kafka... 但个人觉得它一直对标的,都是kafka。因为它们面对的场景往往都是超高并发,超高性能要求的场景。 所以,有必要深挖下其实现高性能,高并发的原因。实际上,这是非常大的话题,我这里也不打算一口吃
阅读全文
摘要:在rocketmq中,nameserver充当了一个配置管理者的角色,看起来好似不太重要。然而它是一个不或缺的角色,没有了它的存在,各个broker就是一盘散沙,各自为战。 所以,实际上,在rocketmq中,nameserver也是一个领导者的角色。它可以决定哪个消息存储到哪里,哪个broker干
阅读全文
摘要:rocketmq作为一个高性能的消息中间件,咱们光停留在使用层面,总感觉缺点什么。虽然rocketmq的官方设计文档讲得还是比较详细的,但纸上得来终觉浅!今天我们就来亲自挖一挖rocketmq的实现细节:server端处理框架以及如果进行消费消息。 说白了,就是先走马观花一下,然后就消费消息这个细节
阅读全文
摘要:实际工作中使用ES有一段时间了,比起一直在理论上接触ES还是要好上一些的。今天就来总结一些实际工作中用到的一些ES功能吧。本文编排顺序,按使用的先后可能性排序编排。ES的功能很强大,但我们能用到的,也许并不会太多,所以本文可作为一个简单速查手册使用哟。 1. 查看集群状态 # 健康检查 GET _c
阅读全文
摘要:用hive来做数仓类操作,或者大数据的运算,是没有疑问的,至少在你没有更多选择之前。 当我们要hive来做类似于大批量数据的select时,也许问题就会发生了变化。 1. 通用解决方案:分页拉取 首先,我们要基于一个事实,就是没有哪个数据库可以无限制的提供我们select任意数据量的数据。比如常用的
阅读全文