![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 91
zzzzMing
这个作者很懒,什么都没留下…
展开
-
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 · 2273 阅读 · 0 评论 -
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 · 868 阅读 · 0 评论 -
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 · 2088 阅读 · 0 评论 -
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 · 1258 阅读 · 0 评论 -
深入浅出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 · 936 阅读 · 0 评论 -
java并发编程 --并发问题的根源及主要解决方法
文章目录并发问题的根源在哪缓存导致的可见性线程切换带来的原子性编译器优化带来的有序性主要解决办法避免共享Immutability(不变性)管程及其他工具并发问题的根源在哪首先,我们要知道并发要解决的是什么问题?并发要解决的是单进程情况下硬件资源无法充分利用的问题。而造成这一问题的主要原因是CPU-内存-磁盘三者之间速度差异实在太大。如果将CPU的速度比作火箭的速度,那么内存的速度就像火车,而最惨的磁盘,基本上就相当于人双腿走路。这样造成的一个问题,就是CPU快速执行完它的任务的时候,很长时间都会在等待原创 2020-06-17 08:15:41 · 769 阅读 · 0 评论 -
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 · 2511 阅读 · 1 评论 -
spring boot整合Hadoop
最近需要用spring boot + mybatis整合hadoop,其中也有碰到一些坑,记录下来方便后面的人少走些弯路。背景呢是因为需要在 web 中上传文件到 hdfs ,所以需要在spring boot中加入hadoop相关的jar包。在加入的过程中容易出一些错误,主要是包冲突这一类的问题,解决了之后就好了,在这里顺便记录一下此次解决问题的思路,有需要的朋友可以看看。一. Spring ...原创 2019-02-19 17:52:22 · 11343 阅读 · 0 评论 -
大数据存储的进化史 --从 RAID 到 Hdfs
我们都知道现在大数据存储用的基本都是 Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdfs。我们先来思考两个问题。在 Hdfs 出现以前,计算机是通过什么手段来存储“大数据” 的呢?为什么会有 Hadoop Hdfs 出现呢?在 Hdfs 出现以前,计算机是通过什么手段来存储“大数据”要...原创 2018-12-18 21:41:25 · 246 阅读 · 1 评论 -
Mysql 流增量写入 Hdfs(一) --从 mysql 到 kafka
一. 概述在大数据的静态数据处理中,目前普遍采用的是用 Spark + Hdfs (Hive / Hbase) 的技术架构来对数据进行处理。但有时候有其他的需求,需要从其他不同数据源不间断得采集数据,然后存储到 Hdfs 中进行处理。而追加(append)这种操作在 Hdfs 里面明显是比较麻烦的一件事。所幸有了 Storm 这么个流数据处理这样的东西问世,可以帮我们解决这些问题。不过光有 ...原创 2018-12-08 21:11:44 · 730 阅读 · 0 评论 -
spark大批量读取Hbase时出现java.lang.OutOfMemoryError: unable to create new native thread
这个问题我去网上搜索了一下,发现了很多的解决方案都是增加的nproc数量,即用户最大线程数的数量,但我修改了并没有解决问题,最终是通过修改hadoop集群的最大线程数解决问题的。并且网络上的回答多数关于增加nproc的答案不完整,我这里顺便记录一下。用户最大线程数可以通过linux下的命令ulimit -a查看,屏幕输出中的max user processes就是用户最大线程数,默认通常...原创 2018-10-11 22:01:07 · 699 阅读 · 0 评论 -
JVM 之类加载
一.概述Java不同于C/C++这类传统的编译型语言,也不同于php这一类动态的脚本语言。可以说Java是一种半编译语言,我们所写的类会先被编译成.class文件,这个.class是一串二进制的字节流。然后当要使用这个类的时候,就会将这个类对应的.class文件加载进内存中。而将这个.class的内容加载进内存,正是通过Jvm类加载机制实现的。虚拟机把描述类的数据从class文件加载到内存,并...原创 2018-09-25 21:59:06 · 431 阅读 · 0 评论 -
Java内存管理 -JVM 垃圾回收
一.概述相比起C和C++的自己回收内存,JAVA要方便得多,因为JVM会为我们自动分配内存以及回收内存。在之前的JVM 之内存管理 中,我们介绍了JVM内存管理的几个区域,其中程序计数器以及虚拟机栈是线程私有的,随线程而灭,故而它是不用考虑垃圾回收的,因为线程结束其内存空间即释放。而JAVA堆和方法区则不一样,JAVA堆和方法区时存放的是对象的实例信息以及对象的其他信息,这部分是垃圾回收的主...原创 2018-09-25 21:58:33 · 179 阅读 · 0 评论 -
Java内存 -JVM 内存管理
一.综述如果你学过C或者C++,那么你应该感受过它们对内存那种强大的掌控力。但是强大的能力往往需要更强大的控制力才能保证能力不被滥用,如果滥用C/C++的内存管理那么很容易出现指针满天飞的情况,不出问题还好,一出问题debug起来简直让人头疼得不要不要的。借用一句话,“指针一时爽,重构火葬场”。而对java程序员来说,则没有这样的烦恼,因为java直接将内存管理交由jvm来管理,这样程序员在编...原创 2018-09-25 21:57:57 · 183 阅读 · 0 评论 -
ThreadPoolExecutor源码解析(二)
1.ThreadPoolExcuter运行实例首先我们先看如何新建一个ThreadPoolExecutor去运行线程。然后深入到源码中去看ThreadPoolExecutor里面使如何运作的。public class Test { public static void main(String[] args){ /** * 新建一个线程池 ...原创 2018-09-25 21:53:43 · 141 阅读 · 0 评论 -
ThreadPoolExecutor源码解析(一)
1.ThreadPoolExcuter原理说明首先我们要知道为什么要使用ThreadPoolExcuter,具体可以看看文档中的说明: 线程池可以解决两个不同问题:由于减少了每个任务的调用开销,在执行大量的异步任务时,它通常能够提供更好的性能,并且还可以提供绑定和管理资源(包括执行集合任务时使用的线程)的方法。每个 ThreadPoolExecutor还维护着一些基本的统计数据,如完成的任务...原创 2018-09-25 21:50:13 · 194 阅读 · 0 评论 -
kafka connect,将数据批量写到hdfs完整过程
本文是基于hadoop 2.7.1,以及kafka 0.11.0.0。kafka-connect是以单节点模式运行,即standalone。一. kafka和kafka connect简介kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。比较直观的解释就是其有一个生产者(producer)和一个消费者(consumer)。可以将kafk...原创 2018-09-24 23:11:49 · 1511 阅读 · 0 评论 -
Java-- String源码分析
本篇博文基于java8,主要探讨java中的String源码。首先,将一个类分为几个部分,分别是类定义(继承,实现接口等),全局变量,方法,内部类等等,再分别对这几个部分进行说明,这样到最后类的全貌也就比较直观了。一:实现接口public final class String implements java.io.Serializable, Comparable<Stri...原创 2018-09-13 21:33:03 · 114 阅读 · 0 评论