自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简述MR的工作流程?

getRecordWriter 用于返回一个RecordWriter 的实例,reduce任务在执行的时候就是利用这个实例来输出key/value的。getOutputCommitter 用于返回一个OutputCommitter 的实例,OutputCommitter用于控制Job的输出环境。checkOutputSpces 在Job Client 提交Job之前被调用的用于检测Job的输出路径。run 循环调用reduce方法处理所有的k-v数据。分组排序 GroupingComparator。

2024-07-29 17:54:14 140

原创 MapReduce的shuffle过程:

溢写会产生很多溢写的文件,溢写的文件数达到10个,开始Merge(合并),merge采用的算法是归并排序,等到所有的maptask运行完毕,启动一定数量的ReduceTask,并且告知reducetask读取数据的这个范围是整个分区,每个reduce会拉去map端对应分区的数据,拉取完数据后,会先存储到内存中,内存不够了再存到磁盘中,拉取完所有的数量后会进行归并排序,将内存和磁盘中的数据都进行一次排序,然后在进入Reduce方法之前,对数据进行分组操作。3.combiner 局部聚合。

2024-07-29 17:53:48 193

原创 大数据开发实习面试复盘

ads层 或是最上层的数据 都是写到哪里面的(dim层写到Hbase里面 ,dwd层写到kafka )怎么解决的,数据写得很多,写到kafka导致数据积压, 第一遍完成。Hbase的rowkey是怎么设计的?数仓·中有没有遇到一些数据清洗,有没有一些比较巧妙的方法,怎么进行数据清洗的,flinkSql用的流式数据,数据万一坏了,有什么恢复机制?在项目中如何使用的?数据同步用的maxwell,用它的原因是什么 第一遍完成。两个项目离线,实时用的编程语言用的什么?离线数仓的很多小文件问题是怎么解决的?

2024-07-16 10:18:31 202

原创 Linux常用命令回忆

find /path/search/ -type -f -name "文件名.filename" -exec dirname {} \;ps命令用来查看系统上的进程信息,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束 ps -ef表示bai查看全格式的全部进程。free 命令 显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。find /path/search/ -type -f -name "文件名.filename";

2024-07-16 01:08:40 342

原创 map与reduce中间的shuffle阶段做了什么

Map端的shuffle: 1.spill(溢写):2.merge(合并排序)将每个MapTask的数据写入磁盘,并且分区和排序,并且将多个小文件合并排序形成大文件Reduce端的shuffle: 获取数据:每个ReduceTask会到每个Map输出的结果文件中取属于自己要处理的数据 merge:每个ReduceTask将所有从MapTask中取出自己的数据进行合并 并排序 group分组:相同key的value放入同一个迭代器

2024-06-05 20:54:44 318

原创 日志数据采集方面,数仓采用flume+kafka 而不是DataX的原因

选择Flume+kafka主要是基于我们的数据特性和处理需求。用户行为日志数据往往需要实时采集和处理,而Flume+Kafka在处理实时数据流方面具有明显的优势。Kafka的高吞吐量和可靠性能够保证我们可以可以及时,高效的收集和采集大量的日志数据。相比之下,Data X 更适合结构化数据的批量同步任务,我们通常用它来做每日全量数据的迁移和同步。DataX 配置简单,适合快速实施批量数据同步任务,但是在处理实时日志数据时,Flume+Kafka的实时性和拓展性更符合我们的需求。

2024-06-05 18:46:19 908

原创 对于zookeeper,如何理解和使用的

同时zookeeper本身也是一个分布式集群,采用一主多从的结构,为了保证主从节点的数据一致性,zookeeper采用了基于一致性算法的Paxos的ZAB协议,它主要是依靠事务ID和版本号,来保证数据的更新和读取的有序性,这样就有效得解决了zookeeper主从同步数据以及集群故障恢复的问题。广播状态,当一个server进入zookeeper服务中,(它会在恢复模式下启动),发现leader,并和leader进行状态同步,等到同步结束,它也参与消息广播。其注重的是高性能,高可用,和严格的有序访问。

2024-06-05 15:47:36 248

原创 DWD层做了什么

用户键控状态为NUll,访问的是老访客但是记录显示今天是首日登录,为访客标记丢失,将首日登录时间改到今天之前,(本项目改到昨天)用户键控状态为NUll,之前也没有记录登录日期,is_new不变,认为是新用户,将日志中ts的日期更新到状态中;解决:运用Flink状态编程,为每个mid维护一个键控状态,记录首次访问日期。dwd层上存储的均为明细数据,存储事实表,1.用户行为日志2.业务数据。键控状态不为NUll,首次访问时间是今天,is_new不变。键控状态不为NUll,已经进行过首日登录维护,不做操作。

2024-06-05 12:41:15 171

原创 JAVA2week

Arrays.binarySearch()-------二分查找法-------通过二分法在已经排好序的数组中查找指定的元素,并返回该元素的下标1.如果数组中存在该元素,则会返回该元素在数组中的下标import java.util.Arrays;public class binarySearch { public static void main(String[] args) { int[] scores = {1, 20, 30, 40, 50}; //在数...

2024-06-03 21:48:53 727

原创 String、StringBuffer和StringBuilder区别

StringBuffer类中的方法都添加了synchronized关键字,也就是给这个方法添加了一个锁,用来保证线程安全。StringString类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。再次给a赋值时,并不是对原来堆中实例对象进行重新赋值,而是生成一个新的实例对象,并且指向“456”这个字符串,a则指向最新生成的实例对象,之前的实例对象仍然存在,如果没有被再次引用,则会被垃圾回收。StringBufferString

2024-06-03 21:48:40 262

原创 Hbase 中 RowKey 是怎么设计的,以及 RowKey 的设计原则

如 RowKey 是按系统时间戳的方式递增,RowKey 的第一部分如果是时间戳的话,将造成所有新数据都在一个 RegionServer 堆积的热点现象,也就是通常说的 Region 热点问题。由于在 HBase 中数据存储是 Key-Value 形式,若 HBase 中同一表插入相同 RowKey,则原先的数据会被覆盖掉(如果表的 version 设置为 1 的话,默认保留时间戳为最新的数据)。: 尽可能短,因为 HBase 的持久化文件 HFile 是按照 KeyValue 存储的。

2024-05-23 14:59:32 153

原创 Zookeeper 常用的一些命令

stat 查看节点状态 stat /path 查看节点名为 /pathd 的节点。ls path 使用 ls 命令来查看当前 znode 的子节点 [可监听],用于删除指定路径的节点,可选地指定版本号以确保删除正确版本的节点。,用于创建名为 /path 的节点并设置初始数据。-w 监听子节点变化 ls -w /path。get path 获得节点的值 [可监听]来获取指定路径下节点的数据内容。set 设置节点的具体值。help 显示所有操作命令。delete 删除节点。-w 监听节点内容变化。

2024-05-23 14:59:14 119 1

原创 HIVE 和 join 有关的优化问题

大表 join 小表其底层采用的是 mapReduce 计算,在默认无优化的情况下,会伴随数据大表和小表的数据一同进入 reduce 阶段,进行计算,这时往往数据移动量比较大,造成 IO 效率和 IO 压力比较大,使得计算效率下降。2. 将小表的数据移动到大表所在的机器上,从而完成大表数据不移动的前提下,跟小表数据进行 join 计算。hive.auto.convert.join 默认为 true。使用 MapJoin 机制策略,这是专门解决大表和小表 join 的最有效策略。(两个核心参数要注意)

2024-05-23 14:59:02 217 1

原创 数仓建模用的什么模型

(而离线使用的是批处理,收集一天的数据后才进行的计算,不会有新数据过来,数据冗余也不会造成数据一致性问题)实时数仓的维度表只需要拉取一份最新的维度数据,然后随着变化后的数据去修改数据,保持一份最新的的维度数据。维度模型并没有推翻 ER 模型,里面是可以内嵌 ER 模型的,也可以在某个地方使用到三范式。而当数仓使用的是流处理(实时用的是流处理)时,数据会随时被修改,就会造成数据一致性问题,星型模型是不遵循三范式的,会有数据的冗余,造成数据一致性问题。周围是维度表,中间一张事实表。

2024-05-23 14:58:19 121 1

原创 LookUpJoin

在创建表 table_db 时,加入处理时间字段 proc_time as PROCTIME ()这样的好处在于:可以不用将主流的数据放到内存中, 而是主流每来一条数据,就去从流中查询一边,过滤出 common_info 表 同样也要把 proc_time 加上。proc_time 为主流的处理时间。当前读取数据的时间。LookUpJoin 适用于主流很大,从流很小。join 时 要在表别名前加入。

2024-05-23 14:55:22 178 1

原创 业务数据同步使用 MaxWell 的原因

Maxwell 就是将自己伪装成 slave,并遵循 Mysql 主从复制的协议,从 master 同步改变的数据并装换为 JSON 格式发送给 Kafka、Kinesi 等流数据处理平台。(2)读写分离:主数据库只负责业务数据的写入操作,而多个从数据库只负责业务数据的查询工作,在多读写少场景下,可以提高数据库工作效率。Mysql 的主从复制,就是用来建立一个和主数据库完全一样的数据库环境,这个数据库成为从数据库。(3)Slave 从库读取并回放中继日志中的事件,将改变的数据同步到自己的数据库。

2024-05-20 16:11:39 251

原创 flinkSql 用的流式数据,数据万一坏了,有什么恢复机制?

Flink 流式计算状态检查点与恢复可以确保应用程序的一致性和完整性,并在故障时能够快速恢复。此外,Flink 流式计算状态检查点与恢复还可以在大规模分布式环境下进行性能优化。可以通过定期触发检查点,将操作符状态保存到磁盘上,并在检查点触发时进行快照来实现 Flink 流式计算状态检查点与恢复。Flink 流式计算状态检查点与恢复能够保 zhengflink 程序在故障时,能够快速恢复并继续处理数据。

2024-05-20 16:10:57 160

原创 hadoop sink 小文件 处理

每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在Namenode内存中。:将多个小文件打包成一个Hadoop归档文件(HAR),该归档文件在HDFS内部以更高效的方式存储,对外依然提供透明的访问接口,从而减少NameNode上的元数据压力,并改善I/O性能。自定义输入格式,比如使用CombineTextInputFormat可以对小文件进行合并处理,让多个小文件作为一个整体被映射到一个Map任务中。(1)HDFS存入大量小文件,有什么影响?

2024-05-20 16:10:21 260

原创 有关 kafka 的各个问题

如果除不尽,那么前面几个消费者线程将会多消费一个分区。2、自定义分区器 Partitioner ,重写 partition 方法,将消息顺序追加到 K 个分区,然后在消费者写 K 个内存队列,相同分区号的数据都存到一个内存 Queue 中,N 个线程分别消费一个内存队列即可。如果是 Kafka 消费能力不足,则可以考虑增加 Topic 的分区数,并且同时提升消费组的消费者数量,消费者数 = 分区数。例如:我们有 10 个分区,两个消费者(C1,C2),3 个消费者线程,10 / 3 = 3 而且除不尽。

2024-05-20 16:08:40 374

原创 HDFS 的读写流程

除此之外,还要考虑负载均衡的问题,当检测到节点数据过多时,会将数据传输到另外一个节点距离较近的 DataNode.tip:packet 在发送时,还会有一个缓冲队列 ACK, 在 hdfs 接受到 dn 的应答成功信号后,缓冲队列才会被删除回收。5.hdfs 请求建立 Bloke 传输通道,先通过 dn1,dn1 接受到请求会调用 dn2,然后 dn2 调用 dn3. 搭建完成数据传输通道。7.hdfs 开始传输 bloke 到 dn1,dn1 接受到后,一份数据在磁盘写入,一份数据传输给 dn2。

2024-05-20 16:08:05 226

原创 什么是数据倾斜,数据倾斜的解决方案

4. 使用 combinner 合并,combinner 是在 map 阶段,先将大量相同 key 的数据先进行一个合并,再交给 reduce,减少了 map 发送给 reduce 的数据量,也减轻了 map 和 reduce 中间 shuffer 阶段的数据拉取量。3. 重新设计 key, 在 map 阶段给 key 加上一个随机数,有了随机数的 key 就会把原来涌入同一个节点的大量数据分散到其他节点,大大减少了节点负担,等到 reduce 时,再把随机数去掉即可。

2024-05-20 16:07:27 193

原创 数据分层有哪些,具体做了什么,数仓分层的作用

支持数据分析和决策:数仓分层可以按照不同的业务需求将数据按照不同的层次进行组织和管理,使数据更加易于分析和理解。DWS 开窗聚合 DWD 的数据,以分析的主题对象为建模驱动,构建公共粒度的汇总表。减少重复开发:规范数据分层,开发一些通用的中间层数据,减少极大的重复计算。DIM 存储维度模型中的维度表 ----,保持一致性的维度信息。维护和管理成本降低:数据按照不同层次进行管理,维护管理更加简单。DWD 存储事实表,存储明细数据,用户行为数据和业务数据。数据查询效率提高:更快找到分层中的数据。

2024-05-20 16:06:36 160

原创 拉链表的制作,为什么不使用快照表

系统每日会有数据新增或修改,如果使用快照表对每一条记录数仓都进行存储,会出现大量重复冗余数据,如果采用拉链表形式存储,将历史状态数据存入闭链状态,将新数据和最新修改记录存入开链区(也就是数据有效区)采用关键词开链日期 start_dt 和闭链日期 end_dt 加主键确定一条记录,这样既节约存储空间,又可以随时根据 start_dt 和 end_dt 的范围查询任何时间段的数据记录。第二步创建一张临时表,用于将老的拉链表与增量表进行合并。拉链表适用存储变化频繁且数量较小的数据,而快照表是存储大量数据的,

2024-05-20 16:05:53 254

原创 spark 和 hadoop 的区别

总结来说,选择 Hadoop 或 Spark 取决于具体的应用场景和需求。如果需要处理大规模的批处理任务,Hadoop 可能是一个更好的选择;如果需要进行快速迭代计算或实时分析,Spark 可能更适合。Hadoop 和 Spark 是两个不同的开源大数据处理框架,它们在设计和用途上有所不同。以下是 Hadoop 和 Spark 的区别:12。

2024-05-20 16:04:17 588

原创 DIM 核心业务逻辑

使用 MySqlSource 读取配置表数据 参数中连接的部分(hostname,port,username,password)都是常量定义好的,该方法需要封装到工具包 util 中,方法中只有两个参数变量 库名 databaseName 和 表名 tableName。另外一个 fuction 类,inivoke 方法判断删除还是更新,新增数据,自定义写入 put 和删除 delete 维度表数据的方法。两个 fuction 类,一个预加载配置表信息,用广播流判断是否为维度表,如果是则和主流连接,

2024-05-20 16:03:47 285

原创 线程池的 11 个问题

前言1、为什么要创建线程池?2、创建线程池有哪些方式?3、Executors 能创建几种常用线程池?4、线程池有哪些参数?5,能说说线程池原理吗?6、线程池有哪些拒绝策略?7、线程池中使用到了阻塞队列,那你知道有哪些阻塞队列?8、线程池中的核心线程如何设置呢?9、知道线程池有哪些状态吗?10、线程池中的线程是如何复用的?11、Java 线程池中 submit () 和 execute () 方法有什么区别?

2024-05-20 16:02:23 1437

原创 java 内存模型之线程独占部分

,改变计数器的值来选取下一条需要执行的字节码指令,与线程是一对一的关系 对 java 方 法计数,记录的是虚拟机字节码所在地址,如果为 Native 方法,则为 Undefined, 不会发生内存泄漏。包含多个栈帧,栈帧存储了局部变量表,关键数栈,动态链接,方法出口等信息;递归每调用一次,就会先产生一个栈帧,每次新增的递归调用都会被压入栈顶,当他超过虚拟栈的深度的时候,就会引发异常。操作数栈:包括入栈,出栈,复制,交换,产生消费变量。递归过深,栈桢数超过虚拟栈的深度。

2024-05-20 16:01:35 212

原创 loadClass 和 forname 的区别

springioc 在读取配置文件中,为了加快加载速度,使用 classPath 时用到 loaderclass,(其在加载中不用进行初始化),为了加快初始化速度,大量使用延时技术,使用 loaderclass, 把类的初始化工作留到类真正使用的时候。class.loadClass 得到得 class 是还没有完成链接的(只做了第一步)隐式加载:loadClass,forname。class.forname 得到的 class 是已经完成初始化得(第三步已完成)类的加载分为显式加载:new。

2024-05-20 16:00:12 164

原创 谈谈 ClassLoader

编译器将 robot.java 源文件编译为 robot.class 字节码文件,ClassLoader 将字节码转化为 JVM 的 class<robot> 对象,JVM 再将 class<robot > 对象实例为 robot 对象。classLoader 的双亲委派机制:检测: 上面四个 classLoader 从最底下到上面检测类是否已经加载 , 加载 : 从上到下尝试加载类,ExclassLoader:Java 编写,加载扩展库 Javax.*

2024-05-20 15:59:36 184

原创 JVM - 谈谈对 Java 的理解 第一章

java 文件 会先由 javac 编译,生成字节码 ----- 变为 -----.class 文件 由不同平台 JVM 解析,转换为特定平台的执行指令 java 指令执行编译后的 class 文件,转化为该操作系统(OS)可识别的机器码(机器指令)进行运行。1. 首先每次执行时需要进行各种,很多的检查(语法,句意的检查),而且每次检查的结果不会被保存下来,下一次编译需要重新进行检查,浪费较多的时间。)等解析为字节码同样可以被 JVM 进行调用,增加了平台的兼容性,扩展性。

2024-05-20 15:58:13 201

原创 QQ,微信小惊喜代码

2.wazf.top/2 哈哈优质QQ,微信小惊喜3.wazf.top/266 推荐1.wazf.top/24.wazf.top/2b.wazf.top/3155.wazf.top/61888.wazf.top/36 ❤888.wazf.top/26 ❤母亲节祝福9.wazf.top/9元宵佳节祝福9.wazf.top/4 ***9.wazf.top/2 大人9.wazf.top/40 同学告别二月走向三月9.wazf.top/5开学祝福

2022-05-16 12:55:14 8623 1

空空如也

空空如也

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

TA关注的人

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