- 博客(175)
- 资源 (3)
- 收藏
- 关注
原创 【Flink运行时架构】系统构架
基于SMP的局限,提出了不共享任何东西(share-nothing)的分布式架构,比如从 MPP(Massively Parallel Processing,大规模并行处理)架构,到以Hadoop、Spark为代表的批处理,再到以Flink为代表的流处理架构,都是以分布式作为系统架构的基本形态。数据处理系统的架构最简单的实现方式就是单节点,但是随着数据量的增大,为了使单节点的机器性能更加强大,需要增加CPU数量和加大内存来提高吞吐量。因此,SMP的可扩展性是比较差的,无法应对海量数据的处理场景。
2024-12-27 23:45:36
423
原创 Spark 运行时对哪些数据会做缓存?
不难看出,在这两个job中,inputRDD => mappedRDD 的计算流程都是一样的,理论上第二个job可以直接从 mappedRDD 开始进行计算的。在Spark应用执行过程中,某些需要多次使用或者重新计算的数据会进行缓存,为后续更多的计算操作复用,避免了再次计算,从而减少应用的执行时间,加速整体计算进度。在本例中,map()操作的计算逻辑很简单,只需要少量的计算成本,如果mappedRDD需要很大的存储空间时,那么就不会对其进行缓存。那么,在计算过程中,哪些数据是需要被缓存的。
2024-12-20 00:19:28
888
原创 Spark内存都消耗在哪里了?
但是在实际应用中,效果并不好。因此,对于 Spark 的内存消耗,在宏观上指的是 Executor JVM 的内存消耗,在微观上指的是 task 线程的内存消耗。在Spark运行过程中,虽然用户代码的内存消耗很难被监控和估算,但是Shuffle机制中产生的中间数据和缓存数据的内存消耗却可以被监控到的。由于内存空间有限,针对以上三个内存消耗来源,Spark 的解决方法就是将内存划分为了3个分区(分别为框架执行空间、数据缓存空间和用户代码空间),每个内存分区分别负责存储和管理以上3种内存消耗来源的一种。
2024-12-18 07:15:00
567
原创 数仓高频面试 | 数仓为什么要分层
大家好,我是大D呀。关于数仓分层,在面试过程中几乎是必问的。不过,面试官一般也不会直接考你数仓为什么要分层,而是在你介绍项目时,可能会换一种形式来穿插着问,比如数据链路为什么要这样设计,这些指标为什么不能在一张表里开发。那么,这个时候你就要结合着自己实际项目,聊一下数仓分层的理论了。为了让回答显得更体系化,可以把数仓分层的原因、有哪些好处以及是如何进行划分的都讲一讲。反正你不讲,他也不知道你会。
2024-12-13 22:34:36
1095
转载 数据质量衡量的几个度量指标
首先识别出重要的业务数据,并注册到系统中,填写相关的业务情况,如技术负责人、业务负责人、数据应用场景、延迟或错误带来的影响、是否会发生资产损失等,完成后,会将这部分数据的任务挂到平台基线上,一旦延迟或错误即自动生成故障单,形成故障。
2023-06-27 08:10:56
1285
原创 如何避免成为背锅侠?
你被同事甩过锅吗?打工人在职场中犯错都是不可避免的。但明明不是自己的问题,还要背个黑锅,就非常闹心了!大家好,我是大D。前几天,大D开发完了一个项目,在交付验收中发现业务逻辑存在漏洞,业务方那边可能比较忙,一直拖到最后,才开始处理这个问题,最后爆雷了,然后业务开始各种疯狂甩锅。要当这背锅侠?大D自然觉得很冤。今天大D结合自身经验和思考,给大家分享一下在职场中,该如何避免成为背锅侠?1留痕凡事做好记录,尤其在一些重要的工作对接中,一定要保留交互痕迹。能文字交流的就不要语音沟通,能邮件说的
2023-01-06 08:36:48
1320
原创 乐视宣布每周工作4天半
老板跑了,公司不但没倒,而且员工还过上了不加班不内卷的神仙生活。典型的老虎不在家,规矩自己定啊!神仙日子 前段时间,网上流传着一则消息,说乐视目前还有400多名员工,靠着《甄嬛传》版权和乐视大楼的租金收入,过着没有老板管的神仙日子,不加班,不996,公司也没拖欠员工薪资和社保。网友瞬间就不淡定了,这哪是什么神仙日子呀,神仙也没他们舒坦啊。很快,乐视官方还出来凡尔赛:关于网传乐视的消息,情况基本属实!每周工作四天半 你以为这就完了,这不2023年的第一个工作日,乐视视频表示:自2023年1月
2023-01-04 08:06:15
696
原创 聊聊数据域和主题域的区别
大家好,我是大D。这篇文章跟大家一起聊下数仓中比较容易混淆的两个概念——数据域、主题域。有的公司对二者的界限并不明显,都统一称为数据域或者主题域;也有的公司两者是区分开使用的,那么数据域和主题域有什么区别呢,根据自身工作经验,聊下自己的见解。数据域数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。它是以业务系统的角度,对业务过程进行归纳,抽象出来的数据域。业务过程可以概括为一个个不可拆分的行为事件,比如在电商业务中店铺商品浏览、网页区块点击、加购物车、下单、订单支付、确认收货等行为事件都属于
2022-11-17 08:43:18
3805
原创 什么是HBase?终于有人讲明白了
一、初识HBaseHBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。HBase特点易扩展Hbase 的扩展性主要体现在两个方面,一个是基于运算能力(Regio
2022-05-30 16:40:58
40672
9
原创 聊一聊 HBase 是如何写入数据的?
hi,大家好,我是大D。今天继续了解下 HBase 是如何写入数据的,然后再讲解一下一个比较经典的面试题。Region Server 寻址 HBase Client 访问 ZooKeeper; 获取写入 Region 所在的位置,即获取 hbase:meta 表位于哪个 Region Server; 访问对应的 Region Server; 获取 hbase:meta 表,并查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 t
2022-05-18 14:43:32
926
原创 一文带你读懂 Hbase 的架构组成
hi,大家好,我是大D。今天咱们继续深挖一下 HBase 的架构组成。Hbase 作为 NoSQL 数据库的代表,属于三驾马车之一 BigTable 的对应实现,HBase 的出现很好地弥补了大数据快速查询能力的空缺。在前面咱们也有介绍过 HBase 的数据模型,感兴趣的小伙伴可以翻看下。谈谈你对HBase数据模型的认识?HBase 的核心架构由五部分组成,分别是 HBase Client、HMaster、Region Server、ZooKeeper 以及 HDFS。它的架构组成如下图所示。
2022-05-16 12:07:25
3229
原创 请谈下你对 HBase 的认识?
简介HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。特点易扩展Hbase 的扩展性主要体现在两个方面,一个是基于运算能力(RegionServer) 的扩展
2022-05-10 22:15:19
603
原创 谈谈你对HBase数据模型的认识?
大家好,我是大D。今天继续给大家分享一篇关于 HBase 数据模型的文章,希望大家能快速对 HBase 的数据结构有一个全面的认识。前面我们有讲过 HBase 是一个面向列式存储的分布式数据库,它的数据模型与 BigTable 十分相似。在 HBase 表中,一条数据拥有一个全局唯一的键(RowKey)和任意数量的列(Column),一列或多列组成一个列族(Column Family),同一个列族中列的数据在物理上都存储在同一个 HFile 中,这样基于列存储的数据结构有利于数据缓存和查询。同时,HB
2022-05-09 11:11:06
342
原创 为什么列式存储会被广泛用在 OLAP 中?
大家好,我是大D。不知是否有小伙伴们疑问,为什么列式存储会广泛地应用在 OLAP 领域,和行式存储相比,它的优势在哪里?今天我们一起来对比下这两种存储方式的差别。其实,列式存储并不是一项新技术,最早可以追溯到 1983 年的论文 Cantor。然而,受限于早期的硬件条件和应用场景,传统的事务型数据库(OLTP)如 Oracle、MySQL 等关系型数据库都是以行的方式来存储数据的。直到近几年分析型数据库(OLAP)的兴起,列式存储这一概念又变得流行,如 HBase、Cassandra 等大数据相关的数
2022-04-06 15:36:12
3272
原创 图解 Kafka 的数据存储设计
Partition 数据文件 Kafka 中的 Message 是以 Topic 为基本单位进行归类的,不同的 Topic 之间是相互独立的。Topic 是一个逻辑上的概念,为了提升整个集群的吞吐量,Topic 在物理上还可以细分为多个 Partition(每个 Topic 划分几个 partition 是在创建 Topic 时指定的)。每个 Partition 都负责保存和处理 Topic 的一部分 Message 数据,Partition 的个数对应了消费者和生产者的并发度,比如 Partitio.
2022-01-28 11:01:59
1920
原创 一文看懂 ZooKeeper ,面试再也不用背八股(文末送PDF)
ZooKeeper知识点总结一、ZooKeeper 的工作机制二、ZooKeeper 中的 ZAB 协议三、数据模型与监听器四、ZooKeeper 的选举机制和流程本文将以如下内容为主线讲解ZooKeeper中的学习重点,包括 ZooKeeper 中的角色、ZAB协议、数据模型、选举机制、监听器原理以及应用场景等。会对相关的面试题或开发中常见内容,进行重点讲解。接下来将带领大家入门学习 ZooKeeper 系列的内容,力求通俗易懂,图文并茂。一、ZooKeeper 的工作机制 1. 什么是ZooK
2022-01-18 23:07:26
674
1
原创 图文详解 ZooKeeper 的选举机制和流程
我们在本系列的第一期就介绍了 ZooKeeper 集群中的三个服务器角色:Leader、Follower 和 Observer。其中,Leader 选举是 ZooKeeper 中最重要的技术之一,也是保证分布式数据一致性的关键所在。本期内容将重点讲解 Leader 是如何被选举的。 1. 选举机制概述 Zookeeper 在配置文件中并没有指定 Master 和 Slave。但是,Zookeeper 工作时, 是有一个节点为 Leader,其他则为 Follower,而这个 Leader 是通过内部的选
2022-01-17 21:12:17
3978
原创 ZooKeeper 的数据模型
本期将给大家介绍下 ZooKeeper 内部是如何做到分布式数据一致性的。ZooKeeper 使用了一个树形结构的命名空间来表示其数据结构,其视图结构和标准的 Unix 文件系统非常类似,但没有引入传统文件系统中目录和文件等相关概念,而是将 ZooKeeper 树中的每一个节点都称之为一个 Znode。其数据结构如下图所示。类似文件系统的目录树,ZooKeeper 树中的每个节点都可以拥有子节点,而不同的是,每个 Znode 节点都存储了数据信息,同时也提供了对节点信息的监控等操作。 1. Znod
2022-01-17 21:11:21
1337
原创 ZooKeeper 中的 ZAB 协议
上期介绍了 ZooKeeper 的基本概念、角色、工作机制等内容,为了后续更好地学习 ZooKeeper 的原理,本期先给大家介绍一种分布式一致性协议——ZAB(ZooKeeper Atomic Broadcast,ZooKeeper 原子消息广播协议)。 1. 什么是ZAB 在介绍 ZAB 之前,先给大家介绍下 ZooKeeper 的由来。ZooKeeper 最早起源于雅虎研究院的一个研究小组,当时雅虎内部很多大型系统都需要依赖一个类似的系统来进行分布式协调,为了让把精力集中在业务逻辑上,雅虎研发人
2022-01-15 08:00:00
1439
原创 Spark 的共享变量之累加器和广播变量
前言 本期将介绍下 Spark 编程中两种类型的共享变量:累加器和广播变量。简单说,累加器是用来对信息进行聚合的,而广播变量则是用来高效分发较大对象的。 学习目标 闭包的概念累加器的原理广播变量的原理 1. 闭包的概念 在讲共享变量之前,我们先了解下啥是闭包,代码如下。var n = 1val func = (i:Int) => i + n函数 func 中有两个变量 n 和 i ,其中 i 为该函数的形式参数,也就是入参,在 func 函数被调用时, i 会被赋予一.
2022-01-10 08:00:00
675
1
原创 Spark RDD 中常用的操作算子
前言 本期会讲解到 Spark 开发中大部分常见的操作算子,内容比较常用,建议大家先收藏。 学习目标 向Spark 传递函数RDD 的转换算子RDD 的行动算子 1. 向Spark 传递函数 Spark API 依赖 Driver 程序中的传递函数完成在集群上执行 RDD 转换并完成数据计算。在 Java API 中,函数所在的类需要实现 org.apache.spark.api.java.function 包中的接口。Spark 提供了 lambda 表达式和 自定义 Funct.
2022-01-08 18:14:57
1448
原创 详解 Spark RDD 的转换操作与行动操作
前言 本期继续讲解 Spark 核心 RDD 编程部分,内容比较干货也比较长,建议大家先收藏。 学习目标 RDD 的创建RDD 的转换操作RDD 的行动操作惰性求值 1. RDD 的创建 Spark 提供了两种创建 RDD 的方式:对一个集合进行并行化操作和利用外部数据集生成 RDD 。 对一个集合进行并行化操作 Spark 创建 RDD 最简单的方式就是把已经存在的集合传给 parallelize() 方法,不过,这种方式在开发中并不常用,毕竟需要将整个的数据集先放到一个节点.
2022-01-07 10:01:22
5820
2
原创 Spark 入门必看系列
相信即将学习或者正在学习 Spark 的你,应该和当年的D哥一样,被它容错方面天生的优势和强悍的运算吸引到,又或者是受转行大数据开发所迫学习它。D哥最初为了对 Spark 底层一探究竟,先是下载了几篇论文看了看,u1s1,真的晦涩难懂,对里面讲解的资源调度、消息传递、容错处理等,理解起来很抽象。在对 Spark 的核心概念以及运行原理等有了一定认识和掌握之后,回过头来,包括去阅读和分析 Spark 的源码时,就会发现理解起来就变得更加顺畅了,之前困扰的很多问题也渐渐迎刃而解。D哥在学习 Spark 或
2022-01-05 09:04:41
1056
原创 详解 Spark RDD 的宽窄依赖关系
前言 上期讲解了 Spark RDD 核心结构及其概念,本期详细讲一讲 Spark RDD 依赖关系的内容。 学习目标 RDD 的依赖关系如何区分宽窄依赖为何设计要宽窄依赖 RDD的依赖关系 在 Spark 中,RDD 分区的数据不支持修改,是只读的。如果想更新 RDD 分区中的数据,那么只能对原有 RDD 进行转化操作,也就是在原来 RDD 基础上创建一个新的RDD。那么,在整个任务的运算过程中,RDD 的每次转换都会生成一个新的 RDD,因此 RDD 们之间会产生前后依赖的关系.
2022-01-04 12:00:00
4000
原创 图文详解Spark的运行原理(入门必看)
前言 上期文章,介绍了 Spark 是包含多个紧密集成的组件,这些组件结合密切并且可以相互调用,这样我们可以像在平常软件项目中使用程序库一样,组合使用这些的组件。 本期学习目标 Spark 的运行模式Spark 的集群架构Worker 的工作职责Driver 的工作职责 Spark的运行模式 就底层而言,Spark 设计为可以高效地在一个到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器上运行。Spark 的运行模式主要有: .
2021-12-31 08:33:40
3276
原创 【Hive函数大全】NVL : 空字段赋值
函数说明:给值为NULL的数据赋值,它的格式是NVL(str, replace_with)。它的功能是如果str为NULL,则NVL函数返回replace_with的值,如果两个参数都为NULL,则返回NULL。举例:NVL(id_code, 0) : 如果id_code为null,则返回0。...
2021-09-27 23:44:26
906
原创 软链接、硬链接与复制的区别
1、语法:硬链接:ln source dest ### 为source 创建一个名为dest的硬链接软链接:ln -s source dest ### 为source 创建一个名为dest的软链接复制:cp source source1 ### 生成一份除了内容相同没有其他关系的文件2、含义:硬链接:硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件。软链接:通过软链
2021-03-27 15:24:04
2061
1
原创 RPC框架原理简述
客户端和服务端都可以访问到通用的接口,但是只有服务端有这个接口的实现类,客户端调用这个接口的方式,是通过网络传输,告诉服务端我要调用这个接口,服务端收到之后找到这个接口的实现类,并且执行,将执行的结果返回给客户端,作为客户端调用接口方法的返回值。...
2021-01-24 21:32:59
180
原创 childHandler()和handler()的区别
服务端ServerBootstrap通过handler添加的handlers是对bossGroup线程组起作用;通过childHandler添加的handlers是对workerGroup线程组起作用;客户端BootstrapBootstrap只有handler()方法,因为客户端只需要一个NioEventLoopGroup事件线程组。...
2021-01-19 09:27:28
1094
原创 Netty核心模块组件
1. Bootstrap一个Netty应用通常是有一个Bootstrap开始,主要作用就是配置整个Nettty程序和串联整个组件的。其中,Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类。2. Future 和 ChannelFutureNetty中所有的IO操作都是异步的,不能立即得到消息是否被正确处理。可以通过Future 和 ChannelFuture注册一个监听,当操作执行成功或者失败时,监听会自动触发注册的监听事件。3. Channel是Ne
2021-01-16 15:06:21
130
原创 Java BIO的基本介绍
1. 概念介绍BIO(blocking I/O):同步阻塞。当客户端有连接请求时,服务端就会需要启动一个线程对客户端的连接进行数据读写,如果客户端不进行读写了,那么这个线程也会等着,这样就会造成阻塞。如图所示,黄色方框中内容分别为两个客户端发来的信息,当客户端A与服务端进行连接后,服务端就会产生一个线程来与客户端A进行读取,例如客户端A发来ok,服务端收到后进行打印,然后该线程继续等待客户端A的读写数据。此时使用客户端B与服务端进行连接,可以成功连接,然后发送数据ok,客户端B这边也显示发送成功。但
2021-01-14 13:42:42
2051
原创 详解基于MATLAB的车牌识别系统设计与实现(1):车牌定位
车牌识别系统主要包括车牌定位、字符分割和字符识别三个核心模块。车牌定位是利用车牌的颜色和形状特征确认并获取汽车的车牌位置;字符分割是将获取到的车牌切割成单个字符;字符识别目前主要有基于模板匹配算法和基于人工神经网络算法对切割的字符进行识别。本节内容主要讲解车牌定位,主要内容有:读取图像预处理边缘检测形态学操作定位裁剪主函数代码如下 :// main.mclose all;cle...
2020-11-25 09:17:27
23667
28
图解系列之轻松学习 Spark(适合小白学习)
2022-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人