自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 Flink检查点分析

方法:轻量级异步分布式快照首先我们还是按照常规方法想一下这个流程中的数据形式:1、对于源头:Flink应用就像是通过一根管道怼在数据源,然后数据源源不断地往Flink应用中流2、对于算子:算子分两种,一种是有状态的聚合、join等,一种是无状态的map、filter有状态和无状态很好理解,其实区别在于是否需要缓存计算结果,对于无状态的算子,无需对计算结果进行缓存,而对于有状态的算子,必须对算子的结果进行存储,也就是下一条数据在计算的时候需要以之前的结果作为基础。通过这两点我们可以看到,对于流计算,

2020-06-03 17:40:22 928

原创 Flink的计算方式

首先看一张来自官网的Flink运行时架构图看图说话,先总结下Flink计算引擎的几个抽象:管理抽象:JobManager (Master) 负责调度任务执行、负责指挥进行检查点、负责任务失败容错恢复等。TaskManager (Worker) 负责具体任务的执行、缓冲和交换数据流等。每个管理者都对应着独立的JVM进程。执行抽象:Task,本质上都回归到线程执行具体的task。我们先不论资源管理方式。可以看到,资源被划分为细粒度的Slot。Flink Job也跟Spark Job一样,均以T

2020-05-09 18:59:01 1863 1

原创 Flink若干认识和基础功能

先看flink支持流批处理基于Event-Time事件处理的支持exactly-once一致性语义的保证高可用性的体现支持多种资源管理框架:Yarn、Mesos、Kubernetes、Stand-alone运行应用的规模上来讲:Flink也是被设计运行有状态的流应用,整个应用并行化为成千上万的任务,在集群上分布式并行执行。状态管理方面:Flink将任务的状态保存在内存中,如果内存容纳...

2020-05-02 15:56:09 652

原创 Java类加载机制的几个细节问题

1、类创建的时机啥时候触发了类的加载?jvms8里边的描述是:被其他接口或者类通过自身运行时常量池引用。通过特定JSE平台类库的方法调用(例如反射)。触发类的 creation。类加载器并不需要等到某个类被主动使用时才加载它,虚拟机规范允许类加载器在预料某个类将要被使用时预先加载好它。(这里的一个典型的体现是,在一个子类被主动使用时,若发现它有父类,则先加载其父类)。我们也可以总结出这并不...

2020-04-28 09:12:38 199

原创 Kafka数据不丢失的策略权衡

一、会丢数据的情况1、生产端可通过 producer.type 来选择发送模式,默认为 sync (同步),异步设置为 async1)同步模式下Producer 在发送消息之后,在得到返回结果前阻塞。这是一种牺牲性能的办法,而且对于不同的配置,性能的损失程度不同、可靠性也不一样。关键参数如下request.required.acks 表示producer的一次请求被认为是完成时,需要的...

2020-04-21 23:26:35 214

原创 从kafka的Coordinator看组件设计

以下描述默指kafka 0.10对应版本,Coordinator 默指 GroupCoordinator一、Coordinator是什么协调器二、干什么用故障探测和再平衡(Rebalance)在一个消费者组当中,每个消费者线程负责消费所订阅topic下的哪些分区,维护一个平衡消费的关系,使得组中的每个消费者负载均衡。故障探测指什么?每个consumer都和Coordinator建立连接...

2020-04-18 23:13:39 545

原创 布隆过滤器

一、功能判断某项数据是可能在集合中还是肯定不在集合中二、布隆过滤器的三个重点1、布隆过滤器比特数组空间大小 m2、哈希函数个数 k3、加入的元素 n三、误判1、误判率2、根据所需的精度确定比特数组空间大小四、具体工作原理初始时大小为m的比特数组每位均为0,当设置值时分别用k个哈希函数计算哈希值,得到值应该对应的索引,将索引位置置1。当对新值进行判断时,通过k个哈希函数计算哈...

2020-04-13 21:06:29 139

原创 Hive .hiverc、严格模式、分桶、Metastore连接方式、内部表外部表选择

Hive在启动之前会先执行.hiverc文件,一些常用的配置参数可以写到这里,比如一些常用的UDF及优先尝试本地模式等。set hive.exec.mode.local.auto=true;在严格模式,如果表的分区很多,数据量很大的情况下,能够避免产生很大的一个MR任务。比如,设置了hive.mapred.mode=strict那么如果在查询的where条件中不加分区字段限制,则限制其不能...

2020-04-13 20:51:10 365

原创 零拷贝

首先,为了保证系统安全,用户态的执行权限限制使得用户程序不能直接访问磁盘数据。必须通过内核态的系统调用响应应用程序的请求。一、虚拟地址映射应用程序通过MMU(内存管理单元)来访问内存,MMU完成进程的虚拟地址空间到物理内存地址空间的映射。内核为每个进程分配一个独立并连续的虚拟内存空间,并为每个进程维护一个页表,页表记录着虚拟内存到物理内存的映射,页表就存在MMU中。一、传统IO发送文件的过...

2020-04-03 22:54:48 162

原创 HBase

一、基础性认识1、数据库类型非关系型2、存储方式非结构化列式存储3、数据表组合方式列簇(可变)、每个列簇又由多个列(可变)构成4、存储介质磁盘5、存储系统依托HDFS6、执行引擎MapReduce二、Hbase特性1、表扩展当数据不断增加,表分裂成多份splits,每个split表示一个region。region存储的数据范围为 [startkey,endkey) ...

2020-03-21 17:42:03 107

原创 Structured Streaming

引擎:Spark SQL入口:SparkSession计算模型:Micro-batch/Continus延迟:在 Micro-batch 模式下,每个微批次作为一个job调度单元,官网描述其带来的延迟在 100ms在 Continus 连续处理模式下,延迟低于1ms好的架构在于其巧妙的构思,而最终形式又是极其精简的。编程模型:可将流看做是不断地往一个表上append内容的过程,查询操...

2020-03-12 11:27:23 484

原创 wait、notify、notifyAll、sleep、yeild

一、wait、notify、notifyAll每个Java对象,除了有一个与之相关的 monitor ,还有一个与之对应的 wait 集合,这个集合中装的便是在该对象上的等待线程。在很多源码中,我们都看到不管是 wait 还是 notify 亦或是 notifyAll,其调用全是在该对象的synchronized同步语句块中。这是为什么?1、首先,我们很多地方都能找到 wait/notify...

2020-03-06 22:55:25 221

原创 数据仓库设计的一点总结

不论使用什么方法建设数据仓库,最终的目标都是统一的------为战略层面的决策提供数据支撑。关键原则还是聚焦业务需求,展现维度结构数据,过程可控可管理,并使用迭代方式开发数据仓库项目。数据仓库建设过程其实并不复杂,总的来说可以总结为以下几点:1、业务发展衍生出数据分析需求2、基于业务需求进行的需求分析3、根据分析结果进行的维度建模与技术方案的选型4、ETL设计与开发5、数据仓库的部署...

2020-03-05 22:59:21 322

原创 MapReduce的shuffle过程

shuffle是昂贵操作,因为shuffle操作不仅涉及到数据的拉取、溢写磁盘的IO操作还涉及排序合并等操作,如果能让shuffle的成本尽量降低也是一大优化的方向。本篇文章对应Hadoop2.6.5,只对应流程,具体细节,可以研究MapTask/ReduceTask/Shuffle等源码。shuffle过程一、Map端1、起始点 - map任务已产生结果将写出这一阶段可以称作缓冲区写出。...

2020-03-04 20:03:23 1156

原创 Hadoop Yarn架构及任务提交流程

一、Yarn架构图图片来自官网二、Yarn架构的主要组件1、ResourceManager这是一个全局性组件,负责整个集群资源管理。其两个主要的组件分别为Scheduler(调度器)和 ApplicationsManager(应用管理器)。Scheduler调度器Scheduler是支持可插拔的,用于根据不同的队列、应用等来划分集群资源,如 CapacityScheduler 按照容...

2020-03-02 14:54:07 838

原创 ThreadLocal如何起作用的

首先,ThreadLocal是用来进行线程间的数据隔离的。我们知道一般对于共享数据的安全防护是用锁来实现的,这里我们看看ThreadLocal是怎么实现线程隔离从而保证数据安全的。其起作用的机制是为每个线程提供一个独立的变量副本。我们看是怎么做到的1、在Thread类当中,有如下代码ThreadLocal.ThreadLocalMap threadLocals = null;也就是说每...

2020-03-01 22:28:51 133

原创 Hadoop MRv1和MRv2的区别

Hadoop1.0采用的是MRv1版本的MapReduce编程模型对于MRv1运行时环境:JobTracker和TaskTracker编程模型:MapReduce数据处理引擎:Map任务和Reduce任务这一版本的瓶颈和缺陷:1、JobTracker既负责资源管理又负责任务调度,如果集群繁忙,JobTracker本身就会成为可扩展性的瓶颈,大大制约计算能力。2、在这一版本中,Task...

2020-03-01 12:16:07 1049

原创 LintCode43:Maximum Subarray III(求能得到最大和的分组,输出最大和)

动态规划比较难想,但写出来的代码确实简洁,而且处理的逻辑很清晰,不过动态规划很多时候并不是最优解,这里只作为一种理解和示意public class MaxSubArray { public static int maxSubArray(int[] nums, int k) { // 动态规划最重要的就是找到递推关系 // 递推的目标是遍历处理完所有元素,处理下一个元素时能够...

2020-02-28 22:21:52 202

原创 Java类加载器及双亲委派

文章对应java8Java中类加载器有以下三种:1、启动类加载器(根类加载器Bootstrap ClassLoader)2、扩展类加载器(ExtClassLoader)3、应用类加载器(AppClassLoader)各加载器负责加载的类:Bootstrap ClassLoader:负责加载JAVA_HOME下lib目录下的类ExtClassLoader:负责加载JAVA_HOME下l...

2020-02-26 14:23:56 118

原创 Spark和Flink的输出一致性保证及事务

事务可以称之为一次对数据库进行的操作序列。特性(ACID)原子性:指这些操作序列具有原子性,不可分割,要么全部执行成功,要么全部失败。一致性:一致性概念的说法很多,有说事务执行前后状态保持正确的,有说完整性体现的,也有说从一个一致性状态变成另一个一致性状态的,也有说是对数据可见性约束的等等。个人感觉还是很含糊,根据维基百科描述并综合一些观点,我的总结如下:1)、一致性是针对事务执行前后...

2020-02-24 23:46:10 818

原创 LintCode24:LFU Cache(Java的两种实现)

说明:这是一种缓存剔除算法,在需要添加新元素而缓存满时,需要将最近最少访问的元素删除,然后将新元素添加进去注意以下几点即可:1、重新set一个已经存在的值时,要更新其值和使用频次,并重置新的访问时间2、每访问一个值,如果该值存在,都要将其使用频次加1,并更新访问时间3、缓存满时,最先剔除访问频次最低的元素,如果有多个相同的访问频次最低的元素,删除其最近访问时间最小的(最久没有访问它)Ja...

2020-02-23 14:53:08 208

原创 HIVE查询优化

所有的调优都离不开对CPU、内存、IO这三样资源的权衡及调整Hive QL的执行本质上是MR任务的运行,因此优化主要考虑到两个方面:Mapreduce任务优化、SQL语句优化一、Mapreduce任务优化1、设置合理的task数量这里有几个考虑的点,一方面Hadoop MR task的启动及初始化时间较长,如果task过多,可能会导致任务启动和初始化时间远超逻辑处理时间,这种情况白白浪费了...

2020-02-20 16:53:50 878 1

原创 SQL优化原则的一点总结

CPU执行效率一定的情况下,查询任务量越少,执行耗时越短,查询效率越高考虑以下几个方面一、减少查找范围1、必须避免引擎进行全表扫描避免使用模糊查询,如果必须使用,也要避免使用全模糊查询,右模糊查询like ‘…%’ 会使用索引,like ‘%…’ 无法使用索引。另外字符匹配算法带来很大消耗,为了减小负载,也应该尽量避免模糊查询。避免在条件子句中进行 null 值判断,否则会使引擎放弃使...

2020-02-18 16:12:20 141

原创 关于维度建模的一点总结

公司的数据都有一定的复杂性,处理时很容易被其影响,只有总结并掌握一个好的设计原则,才能应对纷繁复杂的业务细节。先总结一下数据仓库工具箱中的提到的维度建模的4步过程第一步:选择业务过程业务过程的公共特征:1)业务过程通常表示业务执行的活动,用行为动词表示2)业务过程通常由某一操作型系统来支撑,如订单管理系统3)业务过程的结果通常是建立并获得某些关键度量数据4)业务过程包含输入及输出,由...

2020-02-14 17:10:16 701

原创 类加载、链接、初始化——链接,初始化

链接(Linking)链接一个类或接口包括在必要时验证和准备该类或接口、其直接超类、直接超接口、及元素类型(如果是数组类)。解析类或者接口中的符号引用是链接的可选部分。对各JVM链接过程实现具有灵活性,但必须保留下列属性:1、在链接之前,类或者接口必须已经被完全加载;2、在初始化之前,类或者接口必须已经被完全验证和准备;3、链接过程中检测到的程序错误会抛出到程序中某个位置,在该位置上,程...

2020-02-13 18:16:21 367

原创 类加载、连接、初始化——加载

加载:根据类名寻找类或接口的二进制表示,并通过二进制表示创建类或者接口。连接:获取类或者接口并将其组合到虚拟机的运行时状态以便执行。初始化:执行类或者接口的初始化方法<cinit>首先我们看看类和接口的二进制表示是怎么转换成符号引用的?1 常量池虚拟机规范中的描述是,常量池就是JVM维护的一个运行时数据结构,主要用作Java等传统编程语言的的符号表。1.1 常量池构建时间...

2020-02-12 19:09:31 153

原创 HashMap和ConcurrentHashMap

1、HashMap非线程安全,ConcurrentHashMap线程安全HashMap为什么非线程安全,我们暂且不考虑ConcurrentModificationException这一并发异常。死循环在HashMap扩容临界点时,如果两个线程都执行put操作,均进行扩容操作,并都遍历到同一个下标下的头结点,然后其中一个线程在完成指针赋值操作后挂起,另一个线程先顺利完成扩容,最终在两个线程...

2020-02-05 17:29:32 107

原创 星型模型、雪花模型、3NF、OLAP

一、星型模型在关系型数据库管理系统中实现的维度模型称为星型模型,其中每个维度表都直接和事实表连接,数据存在冗余。星型模型的两个关键部件1、 事实表事实表存储组织业务过程事件的性能度量结果。来源于同一个业务过程的底层度量结果应该存储在一个维度模型中。并允许多个组织的业务用户访问一个单一的集中式数据仓库,一个是因为数据量巨大,避免重复而浪费资源,另一个是能确保同一个企业中使用的业务数据的一致性...

2020-02-03 17:45:04 2057

原创 LintCode20:扔N个骰子求所有可能的和及其相应的概率

一、解此类题的几个要点:1、需要找到所求值与所求值之前已求得值之间的关系,这种方法在动态规划类问题中使用的最多扔骰子求和时存在的关系为:P(n, sum) = P(n - 1, sum - 1) * 第n个骰子是1的概率 + P(n - 1, sum - 2) * 第n个骰子是2的概率 + P(n - 1, sum - 3) * 第n个骰子是3的概率 + P(n - 1, sum -...

2020-02-02 15:32:15 1001

原创 LintCode103:带环链表,返回初始成环节点

Tip:快慢双指针说明:快指针一次走两个节点,慢指针一次走一个节点,如果存在环,那么两指针肯定能相遇,这是解题的基本逻辑等量关系:要找到成环的初始节点,需要找到等量关系,确定走过的节点数的等量关系设:初始成环节点之前的节点数为A,快慢指针从初始成环节点到相遇节点间的节点数为B,从相遇节点到初始成环节点间的剩余部分节点数为C等量关系:快指针走过的节点数=2 x 慢指针走过的节点数,相遇时快指...

2020-01-21 10:58:39 152

原创 Redis AOF相关

1、开启AOF设置 appendonly yes 表示开启AOF,默认不开启,每一次写操作都会记录一条日志,用于恢复数据使用这么做有什么好处?------能够保证数据持久化的实时性AOF文件名通过appendfilename配置设置,默认文件名是appendonly.aof开启了之后对程序会有什么影响?我们需要知道的是AOF一定会影响程序的性能,I/O方面,为什么呢?我们看看AOF...

2020-01-17 22:02:59 259

原创 LintCode154:正则表达式匹配(Java)

具体题目说明:https://www.lintcode.com/problem/regular-expression-matching/description觉得这个比较有意思,就研究了下,算是温习了下DP,这是个普通实现,对一些关键步骤做了理解和说明Java实现/** * 实现支持'.'和'*'的正则表达式匹配 * .匹配任意一个字母 *匹配零个或者多个前面的元素 * @param ...

2020-01-16 14:36:28 151

原创 LintCode32: 最小子串覆盖(java实现)

总结:只要抓住如何判断子串已匹配上及如何更新左右窗口即可JAVA实现:public static String minWindow(String source, String target) { int s_length = source.length(); int t_length = target.length(); // 用于对source及target中的字符...

2020-01-08 11:40:25 896

原创 Kafka对于分布式应用的作用

我们结合Kafka的特点1、数据存储在磁盘上,保留时间可以自行设定首先磁盘是廉价的,这样我们就能通过Kafka集群存储足够多的数据。而且我们可以设置数据保留合适时间,在消费之后能够被删除,从而及时释放磁盘空间。这里我们可以看出,Kafka能够作为分布式存储使用。分布式存储器还有HDFS,那Kafka和HDFS相比有什么特殊的呢?看下一个特点2、顺序读写磁盘数据通过Kafka存储到磁盘是通过...

2020-01-04 18:01:19 405

原创 kappa架构的层级及其特点

kappa架构的本质可以说是只依赖一套流处理系统来作为大数据处理解决方案。一、概括起来,kappa架构包括两个层级1、消息传输层这一层有如下特点持久性------数据可任意设定存储时间分布式------数据分布式存储数据可重放------数据可以被replay,从头重新处理高性能------能够提供高性能数据读写访问有了这几点保证之后,数据便可以在某个需要限度内全量存储,这可将...

2020-01-02 21:16:04 3837

原创 再谈Hive开窗函数

开窗函数开窗函数实际上是一种范围限定函数,将某种条件的集合限定在一个目标范围内,形象地称为窗口。在做SQL查询分析时与分析函数配合使用。功能我们在做SQL查询分析时通常会用到sum、count、average、min、max等函数或UDF。而这些函数通常与group by分组功能组合使用,用于在分组内聚合,聚合的结果返回一行记录。而开窗函数扩展了聚合分析,可通过指定窗口大小,让同一分组内返回...

2019-12-30 17:14:46 910

原创 大数据流处理的一致性问题与lambda架构优缺点

一、一些基本面虽然现在的大数据解决方案基本上已经能够取得很好的可靠性,但一致性问题仍然无法轻便、彻底地解决。一致性:可以这么理解,对于成功写入到存储系统分区中的每一条数据,后续的对该分区任何成功处理都应该是将分区中每一条数据包含在内的。通俗来讲,就是处理成功了,处理结果都写入,处理失败了则一条结果也不写入。显然,很多的处理情况可能并不符合这一条件!举个例子,在对一个Kafka分区单元数据进行...

2019-12-29 16:47:49 2699

原创 Hadoop安全机制探究

一、可能的安全问题1、如果Hadoop服务不对用户或者服务进行认证,那么可能发生什么安全问题?HDFS文件权限检查被规避攻击者可以伪装服务,对集群进行攻击2、因为只需要BlockId即可读取节点的数据,而DataNode不强制对任何访问请求做访问控制。那么,任何人都可以随意的访问和读写HDFS数据,这样就存在安全隐患。二、Apache Hadoop安全团队使用的安全机制基于Kerbe...

2019-12-27 15:25:22 580 1

转载 详解HDFS Short Circuit Local Reads

详解HDFS Short Circuit Local ReadsHadoop的一大基本原则是移动计算的开销要比移动数据的开销小。因此,Hadoop通常是尽量移动计算到拥有数据的节点上。这就使得Hadoop中读取数据的客户端DFSClient和提供数据的Datanode经常是在一个节点上,也就造成了很多“Local Reads”。最初设计的时候,这种Local Reads和Remote Rea...

2019-12-23 21:55:08 604

原创 Spark Streaming流控机制

概述:1、通过一个StreamingListener实现RateController来进行批次完成更新,事件触发调节。2、通过PIDRateEstimator利用PID控制算法对输入速率进行反馈调节,计算合适的输入供给速率。3、通过ReceiverTracker来将新的流控阈值速率发送到ReceiverTrackerEndpoint进行发布。4、通过ReceiverSupervisorIm...

2019-12-22 17:54:39 248

空空如也

空空如也

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

TA关注的人

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