自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zzzzMing -大数据/数据分析/数据挖掘

专注于大数据领域,数据分析,数据挖掘。 热爱生活,热爱美食~

  • 博客(103)
  • 收藏
  • 关注

原创 kafka 异步双活方案 mirror maker2 深度解析

mirror maker2背景通常情况下,我们都是使用一套kafka集群处理业务。但有些情况需要使用另一套kafka集群来进行数据同步和备份。在kafka早先版本的时候,kafka针对这种场景就有推出一个叫mirror maker的工具(mirror maker1,以下mm1即代表mirror maker1),用来同步两个kafka集群的数据。最开始版本的mirror maker本质上就是一个消费者 + 生产者的程序。但它有诸多诸多不足,包括目标集群的Topic使用默认配置创建,但通常需要手动rep

2021-01-12 21:01:06 2341

原创 kafka rebalance解决方案 -incremental cooperative协议和static membership功能

apache kafka的重平衡(rebalance),一直以来都为人诟病。因为重平衡过程会触发stop-the-world(STW),此时对应topic的资源都会处于不可用的状态。小规模的集群还好,如果是大规模的集群,比如几百个节点的consumer或kafka connect等,那么重平衡就是一场灾难。所以我们要尽可能避免重平衡,在之前的文章中也有介绍过这点,有关重平衡的基础内容可以参阅:详细解析kafka之 kafka消费者组与重平衡机制在kafka2.4的时候,社区推出两个新feature来解决

2020-12-23 20:20:16 871

原创 什么,kafka能够从follower副本读数据了 —kafka新功能介绍

最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西。倒是kafka connect和kafka stream相关的开发工作做的比较多。可能kafka的野心也不局限于要当一个中间件,而是要实现一个流处理系统的生态了。这次要介绍的是我觉得比较有意思的两个特性,一个是kafka支持从follower副本读取数据,当然这个功能并不是为了提供读取性能,后面再详细介绍。另一个则是新推出的sticky parti

2020-12-02 20:32:19 967

原创 kafka SASL认证介绍及自定义SASL PLAIN认证功能

文章目录kafka 2.x用户认证方式小结SASL/PLAIN实例(配置及客户端)broker配置客户端配置自定义SASL/PLAIN认证(二次开发)kafka2新的callback接口介绍自定义sasl/plain功能用户认证功能,是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本以后逐渐发布了多种用户认证功能,弥补了这一缺陷(这里仅介绍SASL)。本篇会先介绍当前kafka的四种认证方式,然后过一遍部署SASL/PLAIN认证功

2020-11-23 19:45:39 2108

原创 Hive使用Calcite CBO优化流程及SQL优化实战

文章目录Hive SQL执行流程Hive debug简单介绍Hive SQL执行流程Hive 使用Calcite优化Hive Calcite优化流程Hive Calcite使用细则Hive向Calcite提供元数据上一篇主要对Calcite的背景,技术特点,SQL的RBO和CBO等做了一个初步的介绍。深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化这一篇会从Hive入手,介绍Hive如何使用Calcite来优化自己的SQL,主要从源码的角度进行介绍。文末附有一篇其他

2020-09-22 19:32:40 1283

原创 深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化

文章目录Calcite简介与CBO介绍Calcite背景与介绍SQL优化与CBOCalcite优化器HepPlanner优化器与VolcanoPlanner优化器Calcite优化样例代码介绍前阵子工作上需要用到Calcite做一些事情,然后发现这个东西也是蛮有意思的,就花了些时间研究了一下。本篇主要围绕SQL 优化这块来介绍Calcite,后面会介绍Hive如何Calcite进行SQL的优化。此外,也将Calcite的一些使用样例整理成到github,https://github.com/shezhi

2020-09-16 19:00:35 952

原创 docker,容器,编排,和基于容器的系统设计模式

文章目录从容器说起背景docker实现原理编排之争基于容器的分布式系统设计之道单节点协作模式Sidecar pattern(边车模式)Ambassador pattern(外交官模式)Adapter pattern(适配器模式)多节点协作模式都2020年了,容器,或者说docker容器这个概念,从事互联网行业的开发者应该都不会感到陌生。无论大厂还是小厂的应用部署现在都首选docker容器。但是docker虽好,却并非万能。docker本身,其实仅仅是提供了一种沙盒的机制,对不同应用进行隔离。镜像是它出彩

2020-08-10 20:50:17 477

原创 kylin streaming原理介绍与特点浅析

文章目录前言kylin streaming设计和原理架构介绍streaming coordinatorstreaming receiver clusterkylin streaming数据构建流程kylin streaming查询流程kylin streaming实现细节kylin streaming segment存储实现重平衡/重分配故障恢复kylin streaming优化总结前言最近搭了Kylin Streaming并初步测试了下,觉得这个东西虽然有些限制,但还是蛮好用的,所以系统写篇文章总结下

2020-07-27 21:19:50 343

原创 大数据相关资料论文小结

前言不知不觉,2020年已经过去一半了,最近突然反应过来自己也看了不少文献资料了,就想着把看过的文献和觉得比较好的书籍做一个总结,基本都是大数据分布式领域的,回顾自己学识的同时,也给想从事或这个领域的小伙伴一些参考 ????。最后顺便把接下来要看的东西列个列表,也会将自己学习的心得和经验分享出来,有需要的童鞋可以参考参考。另外有些文献看完我会进行整理和输出,这部分链接我一并附在文献的介绍后面,后面看的书或是文献也会保持这种习惯,如果觉得有兴趣欢迎各位大佬交流,顺便也可以点波关注~~论文总结MapRe

2020-07-16 19:32:57 2330

原创 AnalyticDB实现和特点浅析

文章目录AnalyticDB介绍与背景AnalyticDB详细解析架构设计数据分区读写分离和读写流程其他特性介绍混合(列-行)存储引擎索引小结本篇主要是根据AnalyticDB的论文,来讨论AnalyticDB出现的背景,各个模块的设计,一些特性的解析。可能还会在一些点上还会穿插一些与当前业界开源实现的比对,希望能够有一个更加深入的探讨。OK,那我们开始吧。AnalyticDB介绍与背景要说AnalyticDB,那起码得知道它是干什么的。这里直接贴下百度百科的介绍:AnalyticDB是阿里云自主

2020-07-01 20:08:16 4705 3

原创 java并发编程 --并发问题的根源及主要解决方法

文章目录并发问题的根源在哪缓存导致的可见性线程切换带来的原子性编译器优化带来的有序性主要解决办法避免共享Immutability(不变性)管程及其他工具并发问题的根源在哪首先,我们要知道并发要解决的是什么问题?并发要解决的是单进程情况下硬件资源无法充分利用的问题。而造成这一问题的主要原因是CPU-内存-磁盘三者之间速度差异实在太大。如果将CPU的速度比作火箭的速度,那么内存的速度就像火车,而最惨的磁盘,基本上就相当于人双腿走路。这样造成的一个问题,就是CPU快速执行完它的任务的时候,很长时间都会在等待

2020-06-17 08:15:41 777

原创 数据的存储结构浅析LSM-Tree和B-tree

文章目录顺序存储与哈希索引SSTable和LSM treeB-Tree存储结构的比对小结本篇主要讨论的是不同存储结构(主要是LSM-tree和B-tree),它们应对的不同场景,所采用的底层存储结构,以及对应用以提升效率的索引。所谓数据库,最基础的功能,就是保存数据,并且在需要的时候可以方便地检索到需要的数据。在这个基础上,演化出了不同的数据库系统,以及多种索引机制帮助检索数据。这篇我们就来讨论几种常见的数据存储和索引机制,主要是B-tree,LSM-Tree,以及它们对应的优缺点。顺序存储与哈希索引

2020-06-04 22:19:21 531

原创 Spark SQL源码解析(五)SparkPlan准备和执行阶段

Spark SQL原理解析前言:Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述Spark SQL源码解析(二)Antlr4解析Sql并生成树Spark SQL源码解析(三)Analysis阶段分析Spark SQL源码解析(四)Optimization和Physical Planning阶段解析SparkPlan准备阶段介绍前面经过千辛万苦,终于生成可实际执行的SparkPlan(即PhysicalPlan)。但在真正执行前,还需要做一些准备工作,包括在必要的地方插入一些

2020-05-27 18:44:36 571

原创 Spark SQL源码解析(四)Optimization和Physical Planning阶段解析

Spark SQL原理解析前言:Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述Spark SQL源码解析(二)Antlr4解析Sql并生成树Spark SQL源码解析(三)Analysis阶段分析前面已经介绍了SQL parse,将一条SQL语句使用antlr4解析成语法树并使用访问者模式生成Unresolved LogicalPlan,然后是Analysis阶段将Unresolved LogicalPlan转换成Resolved LogicalPlan。这一篇我们介绍Opt

2020-05-14 08:05:18 327

原创 Spark SQL源码解析(三)Analysis阶段分析

Spark SQL原理解析前言:Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述Spark SQL源码解析(二)Antlr4解析Sql并生成树Analysis阶段概述首先,这里需要引入一个新概念,前面介绍SQL parse阶段,会使用antlr4,将一条SQL语句解析成语法树,然后使用antlr4的访问者模式遍历生成语法树,也就是Logical Plan。但其实,SQ...

2020-04-28 18:09:41 500

原创 Spark SQL源码解析(二)Antlr4解析Sql并生成树

Spark SQL原理解析前言:Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述这一次要开始真正介绍Spark解析SQL的流程,首先是从Sql Parse阶段开始,简单点说,这个阶段就是使用Antlr4,将一条Sql语句解析成语法树。可能有童鞋没接触过antlr4这个内容,推荐看看《antlr4权威指南》前四章,看完起码知道antlr4能干嘛。我这里就不多介绍了。这篇...

2020-04-23 20:02:57 2532 1

原创 Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述

Spark SQL模块,主要就是处理跟SQL解析相关的一些内容,说得更通俗点就是怎么把一个SQL语句解析成Dataframe或者说RDD的任务。以Spark 2.4.3为例,Spark SQL这个大模块分为三个子模块,如下图所示其中Catalyst可以说是Spark内部专门用来解析SQL的一个框架,在Hive中类似的框架是Calcite(将SQL解析成MapReduce任务)。Catalyst...

2020-04-21 20:51:41 341 1

原创 Scala函数式编程(六) 懒加载与Stream

前情提要Scala函数式编程指南(一) 函数式思想介绍scala函数式编程(二) scala基础语法介绍Scala函数式编程(三) scala集合和函数Scala函数式编程(四)函数式的数据结构 上Scala函数式编程(四)函数式的数据结构 下Scala函数式编程(五) 函数式的错误处理什么时候效率复习最高,毫无疑问是考试前的最后一夜,同样的道理还有寒暑假最后一天做作业最高效。学界有...

2020-04-15 19:34:10 400

原创 详细解析kafka之 kafka消费者组与重平衡机制

消费组组(Consumer group)可以说是kafka很有亮点的一个设计。传统的消息引擎处理模型主要有两种,队列模型,和发布-订阅模型。队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列模型,跟队列数据结构类似,生产者产生消息,就是入队,消费者接收消息就是出队,并删除队列中数据,消息只能被消费一次。但这种模型有一个问题,那就是只能由一个消费者消费,无法直接让多个消费者消费数据。基于...

2020-04-08 21:35:22 1702

原创 kafka实现无消息丢失与精确一次语义(exactly once)处理

在很多的流处理框架的介绍中,都会说kafka是一个可靠的数据源,并且推荐使用Kafka当作数据源来进行使用。这是因为与其他消息引擎系统相比,kafka提供了可靠的数据保存及备份机制。并且通过消费者位移这一概念,可以让消费者在因某些原因宕机而重启后,可以轻易得回到宕机前的位置。但其实kafka的可靠性也只能说是相对的,在整条数据链条中,总有可以让数据出现丢失的情况,今天就来讨论如何避免kafka数...

2020-03-16 18:12:56 550

原创 详细解析kafka之kafka分区和副本

本篇主要介绍kafka的分区和副本,因为这两者是有些关联的,所以就放在一起来讲了,后面顺便会给出一些对应的配置以及具体的实现代码,以供参考~1.kafka分区机制分区机制是kafka实现高吞吐的秘密武器,但这个武器用得不好的话也容易出问题,今天主要就来介绍分区的机制以及相关的部分配置。首先,从数据组织形式来说,kafka有三层形式,kafka有多个主题,每个主题有多个分区,每个分区又有多条消...

2020-03-11 21:17:26 979 4

原创 分布式系统一致性问题与Raft算法(下)

上一篇讲述了什么是分布式一致性问题,以及它难在哪里,liveness和satefy问题,和FLP impossibility定理。有兴趣的童鞋可以看看分布式系统一致性问题与Raft算法(上)。这一节主要介绍raft算法是如何解决分布式系统中一致性问题的。说起raft大家可能比较陌生,但zookeeper应该都比较熟悉了,zookeeper的ZAB协议可以说和raft算法是非常相似的。再PS:本...

2020-03-04 20:25:27 336

原创 分布式系统一致性问题与Raft算法(上)

最近在做MIT6.824的几个实验,真心觉得每一个做分布式相关开发的程序员都应该去刷一遍(裂墙推荐),肯定能够提高自己的技术认知水平,同时也非常感谢MIT能够把这么好的资源分享出来。其中第二个实验,就是要基于raft算法,实现一个分布式一致性系统。但今天先不说raft算法,而是先讨论下什么是分布式一致性问题,以及为什么它会难!!下一章再说raft是如何设计从而解决了分布式共识这一难题。什么是分...

2020-02-28 19:37:55 590

原创 Scala函数式编程(五) 函数式的错误处理

前情提要Scala函数式编程指南(一) 函数式思想介绍scala函数式编程(二) scala基础语法介绍Scala函数式编程(三) scala集合和函数Scala函数式编程(四)函数式的数据结构 上Scala函数式编程(四)函数式的数据结构 下1.面向对象的错误处理在介绍scala的函数式的错误处理之前,我们要先来介绍一下其他情况下的错误处理方式。以java为例,常见的错误处理方式...

2020-02-20 21:03:15 1822

原创 【Elasticsearch 探索之路】(五)搜索相关 Search-API

本节主要讲解 Elasticsearch 的 搜索相关功能 Search-API,讲解什么是 URL Search 和 Request Body Search 的语法,对常用的语法都会一...

2020-02-11 16:59:29 227 1

原创 【Elasticsearch 探索之路】(四)Analyzer 分析

上一篇,什么是倒排索引以及原理是什么。本篇讲解 Analyzer,了解 Analyzer 是什么 ,分词器是什么,以及 Elasticsearch 内置的分词器,最后再讲解中文分词是怎么...

2020-02-04 17:30:00 523

原创 【数据挖掘算法系列(一)】k-近邻(KNN)算法

开言从本篇起,将开始我们的机器学习算法系列文章。机器学习算法的作用不言而喻,是数据挖掘的核心部分也是比较难的一部分。但是别担心,跟着文章一步步来。现在网上有很多现有的机器学习框架,例如s...

2019-12-19 18:17:21 895

原创 Scala函数式编程(四)函数式的数据结构 下

前情提要Scala函数式编程指南(一) 函数式思想介绍scala函数式编程(二) scala基础语法介绍Scala函数式编程(三) scala集合和函数Scala函数式编程(四)函数式的数据结构 上1.List代码解析今天介绍的内容,主要是对上一篇介绍的scala函数式数据结构补充,主要讲代码。可以先看看上一节,主要讲的是函数式的list,Scala函数式编程(四)函数式的数据结构 上...

2019-12-19 18:04:58 188

原创 Scala函数式编程(四)函数式的数据结构 上

这次来说说函数式的数据结构是什么样子的,本章会先用一个list来举例子说明,最后给出一个Tree数据结构的练习,放在公众号里面,练习里面给出了基本的结构,但代码是空缺的需要补上,此外还有预留的testcase可以验证。关注公众号:哈尔的数据城堡,回复“函数式数据结构”可以获得。(写文章不容易,大哥大姐关注下吧[哭笑])然后是这系列的索引:Scala函数式编程指南(一) 函数式思想介绍sca...

2019-12-04 18:04:11 247

原创 深入浅出线性回归算法(二)多种回归模型介绍

一.sklearn线性回归详解1.1 线性回归参数介绍完线性回归,那么我们来看看如何运用sklearn来调用线性回归模型,进行训练和预测。def LinearRegression(fit...

2019-12-04 18:00:00 1006

原创 深入浅出线性回归算法(一)线性回归初步介绍

一.从线性回归的故事说起相信大家都听过著名的博物学家,达尔文的大名,而今天这个故事的主人公就是他的表弟高尔顿。高尔顿是一名生理学家,在1995年的时候,他研究了1078对父子的身高,发现...

2019-11-28 17:00:00 946

原创 Python 深入浅出支持向量机(SVM)算法

相比于逻辑回归,在很多情况下,SVM算法能够对数据计算从而产生更好的精度。而传统的SVM只能适用于二分类操作,不过却可以通过核技巧(核函数),使得SVM可以应用于多分类的任务中。本篇文章只是介绍SVM的原理以及核技巧究竟是怎么一回事,最后会介绍sklearn svm各个参数作用和一个demo实战的内容,尽量通俗易懂。至于公式推导方面,网上关于这方面的文章太多了,这里就不多进行展开了~1.SVM...

2019-11-27 20:10:05 891

原创 【Elasticsearch 探索之路】(三)倒排索引

上一篇,我们介绍了 ES 文档的基本 CURE 和批量操作。我们都知道倒排索引是搜索引擎非常重要的一种数据结构,什么是倒排索引,倒排索引的原理是什么。1 索引过程在讲解倒排索引前,我们先了解索引创建,下图是 Elasticsearch 中数据索引过程的流程。从上图可以看到,文档未在 ES 中进行索引,而是 由 Analyzer 组件对其执行一些操作并将其拆分为 token/term。然后将这些术语...

2019-11-21 17:59:00 227

原创 【Elasticsearch 探索之路】(二)文档的 CRUD 和批量操作

上一篇,我们介绍了什么是 Elasticsearch,它能做什么用以及基本概念(索引 Index、文档 Document、类型 Type)理解。这篇主要对文档的基本 CRUD 以及如何批量操作讲解。下面让我们进入正题。一、文档的 CRUECreate 文档支持自动生成文档 Id 和指定文档 Id 两种方法#create document. 自动生成 IdPOST songs/_doc{ "...

2019-11-19 17:59:00 208 1

原创 大白话讲梯度下降法(二)

上文我们已经讲了梯度下降法的概念,原理,数学解释,相信看过的读者大大对梯度下降法已经有一个大致的了解。知道一个事物的原理,只能会了一半。我们学一样东西肯定是想知道它有什么用,可以怎么用,这就是本篇的目的,那么让我们开始吧。梯度下降法有什么用机器学习中本质上就是求解我们的假设函数,那么怎么判断我们的假设函数就是符合我们的业务场景的呢。换个思路思考,当我们的假设函数与我们的实际函数误差越来越小的时候,...

2019-11-14 18:00:00 672

原创 通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战

前情提要:通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数,以及具体的实战代码。1.逻辑回归的二分类和多分类上次介绍的逻辑回归的内容,基本都是基于二分类的。那么有没有办法让逻辑回归实现多分类呢?那肯定是有的,还不止一种。实际上二元...

2019-11-13 18:28:01 1133

原创 大白话讲梯度下降法(一)

导言在用机器学习算法解决问题时,求解模型参数是很经常的事情,也就是在优化损失函数的时候,需要找到最合适的模型参数。那么如何找到最优的参数呢,这个时候就需要我们本文要讲的 梯度下降法 了。学习前提微积分求导梯度下降法原理简单易懂,但是需要有微积分,以及求导的数学理论基础,其实也就是会微积分的求导。下文也会提到,忘记也无妨。梯度下降法是什么在机器学习算法中,很多模型本质就是通过最小化损失函数来间接求解...

2019-11-08 08:30:00 718

原创 通俗地说逻辑回归【Logistic regression】算法(一)

在说逻辑回归前,还是得提一提他的兄弟,线性回归。在某些地方,逻辑回归算法和线性回归算法是类似的。但它和线性回归最大的不同在于,逻辑回归是作用是分类的。还记得之前说的吗,线性回归其实就是求出一条拟合空间中所有点的线。逻辑回归的本质其实也和线性回归一样,但它加了一个步骤,逻辑回归使用sigmoid函数转换线性回归的输出以返回概率值,然后可以将概率值映射到两个或更多个离散类。如果给出学生的成绩,比较...

2019-11-06 18:06:48 599 1

原创 深入浅出Apriori关联分析算法(二)

上一篇我们讲了关联分析的几个概念,支持度,置信度,提升度。以及如何利用Apriori算法高效地根据物品的支持度找出所有物品的频繁项集。这次呢,我们会在上次的基础上,讲讲如何分析物品的关联规则得出关联结果,以及给出用apyori这个库运行得出关联结果的代码。一. 基础知识上次我们介绍了几个关联分析的概念,支持度,置信度,提升度。这次我们重点回顾一下置信度和提升度:置信度(Confidence):置信...

2019-10-30 17:30:00 867 2

原创 通俗得说线性回归算法(二)线性回归实战

前情提要:通俗得说线性回归算法(一)线性回归初步介绍一.sklearn线性回归详解1.1 线性回归参数介绍完线性回归,那么我们来看看如何运用sklearn来调用线性回归模型,进行训练和预测。def LinearRegression(fit_intercept=True, normalize=False, ...

2019-10-15 18:08:07 557

空空如也

空空如也

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

TA关注的人

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