![](https://img-blog.csdnimg.cn/d26d30138ce743b999365d6f32b66b47.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大数据
文章平均质量分 57
不定期分享大数据方面的技术文章以及相关资料
搬砖的小子
专注IT技术干货分享(视频+代码+项目+面试题)
展开
-
大数据和云计算的关系
可以说,大数据相当于海量数据的“数据库”,通观大数据领域的发展我们也可以看出,当前的大数据发展一直在向着近似于传统数据库体验的方向发展,一句话就是,传统数据库给大数据的发展提供了足够大的空间。在IT培训行业一直有大数据和云计算培训这两个词,但实际上很多人对于云计算和大数据的关系却总是有点分不清,所以总是将“云计算”和“大数据”放在一起讨论, 实则不然。三者相互配合,这让大数据产生最终价值。云计算是作为计算资源的底层,支撑着上层得大数据处理,而大数据得发展趋势,是实时交互式得查询效率和分析能力。原创 2023-05-05 21:33:33 · 256 阅读 · 0 评论 -
Java开发中常用的消息队列工具 ActiveMQ
同类产品: RabbitMQ 、 Kafka、Redis(List)原创 2023-04-17 21:31:57 · 894 阅读 · 0 评论 -
Federation架构设计
由于NameNode在内存中存储所有的元数据(metadata),因此单个NameNode所能存储的对象(文件+块)数目受到NameNode所在JVM的heap size的限制。50G的heap能够存储20亿(200million)个对象,这20亿个对象支持4000个DataNode,12PB的存储(假设文件平均大小为40MB)。随着数据的飞速增长,存储的需求也随之增长。由于HDFS仅有一个NameNode,无法隔离各个程序,因此HDFS上的一个实验程序就很有可能影响整个HDFS上运行的程序。原创 2023-04-17 21:26:56 · 57 阅读 · 0 评论 -
Combiner合并
35 7 -> (3+5+ 7)/3=5 (3+5+7+2+6)/5=23/5不等于(5+4)/2=9/2。(4) Combiner的意义就是对每-一个Map Task的输出进行局部汇总,以减小网络传输量。(5) Combiner能够应 用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv。// 指定需要使用combiner,以及用哪个类作为combiner的逻辑。// 指定需要使用Combiner,以及用哪个类作为Combiner的逻辑。图4-15 Combiner的合并案例。原创 2023-04-13 21:45:17 · 128 阅读 · 0 评论 -
Oozie逻辑调度执行多个Job
3)修改job.properties和workflow.xml文件。目标:使用Oozie执行多个Job调度。原创 2023-04-10 21:17:42 · 87 阅读 · 0 评论 -
Hadoop完全分布式安装部署
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。我们本次主要完成搭建实际生产环境中比较常用的完全分布式模式,搭建完全分布式模式之前需要对集群部署进行提前规划,不要将过多的服务集中到一台节点上,我们将负责管理工作的namenode和ResourceManager分别部署在两台节点上,另外一台节点上部署SecondaryNamenode,所有节点均承担Datanode和Nodemanager角色,并且datanode和nodemanager通常存在同一节点上,所有角色尽量做到均衡分配。原创 2023-04-10 21:11:07 · 137 阅读 · 0 评论 -
HDFS文件读写流程
4.客户端将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,第一个节点将数据块发送给第二个节点,第二个节点将数据块发送给第三个节点。1.客户端向NameNode发送读文件请求,NameNode返回文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。4.当此数据块读取完毕是,FSDataInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。了解更多相关技术内容欢迎关注小编!原创 2023-02-28 21:04:30 · 282 阅读 · 0 评论 -
大数据建模用的哪些模型?
大数据建模先要看更多是在应用层,还是底层服务器、数据库搭建。不同的定位侧重点不一样。一个人很难通吃,未来发挥价值的地方更多是应用层。原创 2023-02-28 21:01:43 · 585 阅读 · 0 评论 -
sort by 和 order by 的区别
Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。根据KEY字段被HASH,相同组的数据被分发到相同的reducer节点;了解更多先技术问题欢迎关注小编!原创 2023-02-19 22:16:44 · 502 阅读 · 0 评论 -
checkpoint检查点机制?
线程检查点(Thread checkpoints):在某个目标之前,数据库将在某个线程通过redo修改的所有缓冲区写到磁盘,数据库中所有线程检查点集是一个数据库检查点,线程检查点在以下情况下发生:一致的数据库关闭、ALTER system Checkpoint语句、在线日志切换和ALTER Database begin BACKUP语句;检查点的位置有数据库缓冲区中最老的脏缓冲区决定,检查点位置作为一个指针指向重做流,存储在控制文件和每个数据文件头部;了解更多技术知识欢迎关注小编!原创 2023-02-19 22:13:36 · 227 阅读 · 0 评论 -
Flink是如何处理反压
Flink 不需要一种特殊的机制来处理反压,因为 Flink 中的数据传输相当于已经提供了应对反压的机制。因此,Flink 所能获得的最大吞吐量由其 pipeline 中最慢的组件决定。相对于 Storm/JStorm 的实现,Flink 的实现更为简洁优雅,源码中也看不见与反压相关的代码,无需 Zookeeper/TopologyMaster 的参与也降低了系统的负载,也利于对反压更迅速的响应。流处理系统需要能优雅地处理反压(backpressure)问题。反压通常产生于这样的场景:短时负载高峰导致系统接原创 2023-02-19 22:05:47 · 148 阅读 · 0 评论 -
HDFS和HBase各自使用场景
通过元数据来描述Hdfs上的结构化文本数据,通俗点来说,就是定义一张表来描述HDFS上的结构化文本,包括各列数据名称,数据类型是什么等,方便我们处理数据,当前很多SQL ON Hadoop的计算引擎均用的是hive的元数据,如Spark SQL、Impala等;创建在Hadoop集群的最顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操做。Hive:Hive是Hadoop数据仓库,严格来说,不是数据库,主要是让开发人员能够通过SQL来计算和处理HDFS上的结构化数据,适用于离线的批量数据计算。原创 2023-02-19 22:01:16 · 648 阅读 · 0 评论 -
深入解析Kafka的offset管理
但是无法做到真正的负载均衡,因为实际系统中的每个生产者产生的消息量及每个Broker的消息存储量都是不一样的,如果有些生产者产生的消息远多于其他生产者的话,那么会导致不同的Broker接收到的消息总数差异巨大,同时,生产者也无法实时感知到Broker的新增和删除。在众多leader的转移过程中,就会产生leader不均衡现象,可能一小部分broker上有大量的leader,影响了整个集群的性能,所以就需要把leader调整回最初的broker上,这就需要Preferred leader选举。原创 2022-12-28 21:23:48 · 4880 阅读 · 3 评论 -
Flink 中的 Time 有哪几种
所有基于时间的操作(例如:时间窗口)都将使用运行相应operator的系统时间。例如:如果应用程序在09:15开始运行,则第一个滚动时间窗口将包括:09:15 – 10:00 之间的处理事件,下一个窗口包括上午10:00 – 11:00之间的处理事件。该设置定义了数据流源的行为方式(例如:它们是否将分配时间戳),以及像 KeyedStream.timeWindow(Time.seconds(30)) 这样的窗口操作应该使用上面哪种时间概念。1、每个事件发生的时间。1、摄入时间是事件进入Flink的时间。原创 2022-12-28 21:04:20 · 103 阅读 · 0 评论 -
为什么Kafka不支持读写分离?
类似 Redis 这种组件,数据从写入主节点到同步至从节点中的过程需要经 历网络→主节点内存→网络→从节点内存这几个阶段,整个过程会耗费一定的时间。对延时敏感的应用而言,主写从读的功能并不太适用。数据从主节点转到从节点必然会有一个延时的时间窗口,这个时间 窗口会导致主从节点之间的数据不一致。某一时刻,在主节点和从节点中 A 数据的值都为 X, 之后将主节点中 A 的值修改为 Y,那么在这个变更通知到从节点之前,应用读取从节点中的 A 数据的值并不为***的 Y,由此便产生了数据不一致的问题。原创 2022-12-09 18:22:37 · 124 阅读 · 0 评论 -
ORC、Parquet等列式存储的优点
ORC和Parquet都是高性能的存储方式,这两种存储格式总会带来存储和性能上的提升。**1.Parquet**(1)Parquet支持嵌套的数据模型,类似于Protocol Buffers,每一个数据模型的schema包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名,重复次数可以是以下三种:required(只出现1次),repeated(出现0次或多次),optional(出现0次或1次)。每一个字段的数据类型可以分成两种: group(复杂类型)和primitive(基本类型)。(2)P原创 2022-12-07 21:56:53 · 578 阅读 · 0 评论 -
hive 小文件过多怎么解决
hive 中的小文件确定是向 hive 表中导入数据时产生。小文件过多产生的影响首先对底层存储HDFS来讲,HDFS自己就不适合存储大量小文件,小文件过多会致使namenode元数据特别大, 占用太多内存,严重影响HDFS的性能。对 hive 来讲,在进行查询时,每一个小文件都会当成一个块,启动一个Map任务来完成,而一个Map任务启动和初始化的时间远远大于逻辑处理的时间,就会形成很大的资源浪费。并且,同时可执行的Map数量是受限的。**怎么解决小文件过多**1.使用 hive 自带的 concatenat原创 2022-12-07 21:54:35 · 1408 阅读 · 0 评论 -
HBase的 rowkey 设计原则
hbase所谓的三维有序存储的三维是指:rowkey(行主键),column key(columnFamily+qualifier),timestamp(时间戳)三部分组成的三维有序存储。rowkey是行的主键,而且hbase只能用个rowkey,或者一个rowkey范围即scan来查找数据。所以 rowkey的设计是至关重要的,关系到你应用层的查询效率。rowkey是以字典顺序排序的,存储的是字节码。**Rowkey设计原则**1.Rowkey的唯一原则必须在设计上保证其唯一性。由于在HBase中数据存储原创 2022-12-05 22:03:38 · 1184 阅读 · 0 评论 -
kafka丢失和重复消费数据
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。1、丢包问题:消息推送服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。解决方案:首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的所有处于ISR的分区都确认收到该消息原创 2022-12-05 22:00:48 · 957 阅读 · 0 评论 -
为什么要对数据仓库分层?
存储在ODS层的数据显然是不能直接使用的,要经过层层处理;如果一步到位计算出各类指标将来业务变化的时候又要重头开始开发一遍,因此数据仓库分层是很有必要的。数据仓库分层主要有以下几点好处:1.把复杂问题简单化。可以将一个复杂的任务分解成多个步骤来完成,每层只处理单一的一个步骤。2.减少重复开发。数据在每一层进行特定的处理,保留了大量的中间层数据,将来业务变更的时候可以从已有的中间层数据重新计算而不需要重头再来,大大地减少了重复开发;3.便于管理使用。通过分层可以看到数据在整个仓库中的流转,方便掌握数据的生命周原创 2022-12-05 21:58:54 · 748 阅读 · 0 评论 -
kafka的数据offset读取流程
由于 Zookeeper 并不适合大批量的频繁写入操作,新版 Kafka 已推荐将 consumer 的位移信息保存在 Kafka 内部的 topic 中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看 consumer 信息。不过依然有很多用户希望了解__consumer_offsets topic内部到底保存了什么信息,特别是想查询某些 consumer group 的位移是如何在该 topic 中保存的。针对这些问题,本原创 2022-12-05 21:56:42 · 801 阅读 · 0 评论 -
采集数据为什么选择kafka
相比之下,Flume是一个专用工具被设计为旨在往HDFS,HBase发送数据。所以,Cloudera 建议如果数据被多个系统消费的话,使用Kafka;高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。Kafka:Kafka是一个可持久化的分布式的消息队列。Flume: Flume是管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展API。原创 2022-11-26 18:25:12 · 768 阅读 · 0 评论 -
kafka数据保存策略有哪些,你知道吗
因为在一个大文件里查找和删除消息是很费时的事,也容易出错,所以,分区被划分为若干个片段。当所有片段都被写满时,会清除下一个分区片段的数据,如果配置的是7个片段,每天打开一个新片段,就会删除一个最老的片段,循环使用所有片段。当消息达到设置的条件上限时,旧消息就会过期并被删除,所以,在任何时刻,可用消息的总量都不会超过配置参数所指定的大小。Kafka Broker默认的消息保留策略是:要么保留一定时间,要么保留到消息达到一定大小的字节数。了解更多java相关技术面试题欢迎关注小编。2、按照存储的消息大小保留。原创 2022-11-26 18:19:13 · 1207 阅读 · 0 评论 -
hbase列簇设计原则,看这篇就对了
In Memory: 优先级最高,常驻cache,在创建列族时定义,不会像其他两种cache会因访问频率而发生改变,这就决定了它的独立性,另外两种block访问次数再多也不会被放到in-memory的区段里去,in-memory的block不管是第几次访问,总是被放置到in-memory的区段中,但是In Memory除了保证优先级外,不会提供其他的保证。第二行的key长度和类型与前一行相同,则不需要存储,第二行的时间戳值为0,而不是完整的时间戳,即时间戳与第一行时间戳相同。原创 2022-11-26 18:17:48 · 1799 阅读 · 0 评论 -
Flink是如何支持批流一体的
在最新的版本中,Flink 支持两种关系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无边界的实时数据流和有边界的历史记录数据流上,关系型 API 会以相同的语义执行查询,并产生相同的结果。产生以上结果的总体原因是,Flink 的执行过程是基于流的,这意味着各个处理阶段有更多的重叠,并且混洗操作是流水线式的,因此磁盘访问操作更少。实现批处理的技术许许多多,从各种关系型数据库的sql处理,到大数据领域的MapReduce,Hive,Spark等等。原创 2022-11-25 20:41:31 · 1319 阅读 · 0 评论 -
DStream以及基本工作原理
但是,在底层,其实其原理为,对输入DStream中每个时间段的RDD,都应用一遍map操作,然后生成的新的RDD,即作为新的DStream中的那个时间段的一个RDD。Spark Streaming内部的基本工作原理如下:接收实时输入数据流,然后将数据拆分成多个batch,比如每收集1秒的数据封装为一个batch,然后将每个batch交给Spark的计算引擎进行处理,最后会生产出一个结果数据流,其中的数据,也是由一个一个的batch所组成的。DStream的内部,其实一系列持续不断产生的RDD。原创 2022-11-25 20:38:14 · 311 阅读 · 0 评论 -
怎么排查是哪里出现了数据倾斜
有时候,某个 task 执行的节点可能有问题,导致任务跑的特别慢。多数介绍数据倾斜的文章都是以大篇幅的理论为主,并没有给出具体的数据倾斜案例。当执行过程中任务卡在 99%,大概率是出现了数据倾斜,但是通常我们的 SQL 很大,需要判断出是哪段代码导致的倾斜,才能利于我们解决倾斜。今天我们不扯大篇理论,直接以例子来实践,排查是否出现了数据倾斜,具体是哪段代码导致的倾斜,怎么解决这段代码的倾斜。如果每个 reduce 执行时间差不多,都特别长,不一定是数据倾斜导致的,可能是 reduce 设置过少导致的。原创 2022-11-25 20:34:10 · 1109 阅读 · 0 评论 -
spark都解决了hadoop的哪些问题
Spark的优势不仅体现在性能提升上的,Spark框架为批处理(Spark Core),交互式(SparksQL),流式(Spark Streaming),机器学习(MLlib),图计算(GraphX)提供一个统一的数据处理平台,这相对于使用Hadoop有很大优势。=>分区相同的转换构成流水线放在一个Task中运行,分区不同的转换需要Shuffle,被划分到不同的Stage中,需要等待前面的Stage完成后才可以开始。7、时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够。原创 2022-11-22 20:24:07 · 360 阅读 · 0 评论 -
HBase数据的读写流程
数据写入 MemStore 缓存,当 MemStore 缓存满时,内存中的数据会持久化到磁盘中一个 StoreFile 文件中,随着 StoreFile 文件数量的不断增加,数量达到一个阈值后,就会促使文件合并成一个大的 StoreFile 文件。因为 MemStore 缓存的是最近增加的数据,所以也提高了对近期数据的操作速度。例如,当数据的 version 被设为 1 时,对某些列族中的一些数据,MemStore 缓存单元格的最新数据,在写入 HFile 时,仅需要保存一个最新的版本。原创 2022-11-22 20:19:48 · 257 阅读 · 0 评论 -
yarn 的任务提交流程是怎样的
yarn在hadoop2.0开始取代了以前hadoop中jobtracker(后面简写JT)的角色,因为以前JT的 任务过重,负责任务的调度、跟踪、失败重启等过程,而且只能运行mapreduce作业,不支持其他编程模式,这也限制了JT使用范围,而yarn应运而 生,解决了这两个问题。(12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。(5)程序资源提交完毕后,申请运行mrAppMaster。原创 2022-11-22 20:12:56 · 533 阅读 · 0 评论 -
Spark主备切换机制原理
Spark Master的主备切换可以基于两种切换机制,一种是文件系统,一种是基于Zookeeper,基于文件系统的机制,是Active Master挂掉后,需要我们手动去切换到Standby Master上,基于Zookeeper机制,呆以实现自动切换。Master实际上可以配置两个,那么在spark原生的standalone上也是支持Master主备切换的,也就是说,当Active Master节点挂掉之后,我们可以将Standby Master切换为Active Master。原创 2022-11-21 21:37:46 · 410 阅读 · 1 评论 -
数据倾斜的产生和解决办法?
增加reduce的个数,这适用于第二种情况(唯一值比较多,这个字段的某些值有远远多于其他值的记录数,但是它的占比也小于百分之一或千分之一),我们知道,这种情况下,最容易造成的结果就是大量相同key被partition到一个分区,从而一个reduce执行了大量的工作,而如果我们增加了reduce的个数,这种情况相对来说会减轻很多,毕竟计算的节点多了,就算工作量还是不均匀的,那也要小很多。了解更多大数据面试问题欢迎关注小编面试专栏!**产生数据倾斜的原因****数据倾斜的解决办法****什么是数据倾斜**原创 2022-11-21 21:30:34 · 146 阅读 · 0 评论 -
hive表有索引吗,如何创建
此外,同传统关系型数据库一样,增加索引在提升查询速度的同时,会额外消耗资源去创建索引和需要更多的磁盘空间存储索引。当Hive通过索引列执行查询时,首先通过一个MR Job去查询索引表,根据索引列的过滤条件,查询出该索引列值对应的HDFS文件目录及偏移量,并且把这些数据输出到HDFS的一个文件中,然后再根据这个文件中去筛选原文件,作为查询Job的输入。Hive的索引其实是一张索引表(Hive的物理表),在表里面存储索引列的值,该值对应的HDFS的文件路径,该值在数据文件中的偏移量。**生成索引数据**原创 2022-11-21 21:25:19 · 767 阅读 · 0 评论 -
Flink集群有哪些角色?各自有什么作用
1.负责执行计算工作的节点,每个taskmanager负责管理其所在节点的资源信息,如︰内存、磁盘、网络,在启动时向jobmanager汇报。1.负责接收flink job,将JobGraph转换成ExecutionGraph,最终将Execution Graph拿来运行。3. 3.Checkpoint Coordinator,负责协调整个checkpoint的过程。1.Actor system,负责跟taskmanager之间同行。3.Actor system,用来负责网络的通信。原创 2022-11-21 21:11:43 · 700 阅读 · 0 评论