大数据
文章平均质量分 90
Stray_Lambs
这个作者很懒,什么都没留下…
展开
-
数仓基础理论(一)
模范定义指以维度建模作为理论基础,构建总线矩阵,划分和定义数据域、业务过程、维度、度量 / 原子指标、修饰类型、修饰词、时间周期、派生指标。名词术语解释数据域指面向业务分析将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个个不可拆分的行为事件,在业务过程之下,可以定义指标;维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。原创 2024-03-13 11:30:46 · 767 阅读 · 0 评论 -
Flink 解析(七):时间窗口
时间概念由于Flink框架中实时流处理事件中,时间在计算中起到很大的作用。例如进行时间序列分析、基于特定时间段(窗口)进行聚合或者是重要情况下的事件处理。Flink的DataStream支持三种time:EventTime、IngestTime和ProcessingTime,并且有大量的基于time的operator。这三种时间进行比较:EventTime 事件生成的时间,在进入Flink之间就已经存在,可以从event的字段中抽取 必须指定watermarks的生成方式 优势..原创 2022-01-17 20:02:13 · 3142 阅读 · 0 评论 -
Flink 解析(六):Savepoints
目录Savepoints分配算子IDsavepoint操作配置savepoint触发savepoint恢复savepoint删除savepointF.A.Q我应该为我作业中的所有算子分配 ID 吗?如果我在作业中添加一个需要状态的新算子,会发生什么?如果从作业中删除有状态的算子会发生什么?如果我在作业中重新排序有状态算子,会发生什么?如果我添加、删除或重新排序作业中没有状态的算子,会发生什么?当我在恢复时改变程序的并行度时会发生什么?我可以将 sa原创 2021-12-31 12:09:06 · 1366 阅读 · 0 评论 -
Flink 解析(五):State与State Backend
State对于Flink而言,状态是一个必不可少的需要了解的重要知识点。Flink具有三种状态Keyed State Operator State Broadcast State(1.5版本之后,特殊的Operator State)Operator State每一个operator中都并行的维护一个状态,与key无关的。这里放一段官网上面对于Operator State的解释。Operator State(ornon-keyed state) is state that is...原创 2021-12-23 20:31:19 · 2482 阅读 · 0 评论 -
Flink 解析(四):恢复机制
目录Flink恢复机制Checkpoint是什么Savepoint保存点检查点协调器CheckpointCheckpoint保存什么信息Checkpoint如何保存信息Barrier 对齐精准一次性(exactly once)端到端精准一次Job失败后,从检查点恢复应用自动恢复机制手动作业恢复机制Job失败后,从保存点恢复机制参考Flink恢复机制任何一个框架都存在出错的可能,所以都会有自己的一套恢复机制,例如Spark是采用血缘关系从头开原创 2021-12-14 18:40:42 · 5739 阅读 · 0 评论 -
Flink 解析(三):内存管理
目录内存管理积极的内存管理MemorySegment堆内内存与堆外内存的比较序列化方法Flink序列化数据类型参考内存管理Flink是由Java语言所开发的,而基于JVM的数据分析引擎都需要面对将大量的数据存到内存当中,JVM存在以下几个问题:Java对象存储密度低。因为Java对象需要存储许多其他信息,比如一个boolean对象就占用了16个字节内存,其中包括了对象头占8个字节,boolean占一个字节,对齐填充占了7个。相当于浪费了15个字节。 Full GC会极.原创 2021-10-09 14:17:30 · 1194 阅读 · 1 评论 -
Flink源码解读(二):JobGraph源码解读
目录JobGraph源码解读JobGraph生成过程入口函数createJobGraph函数参考JobGraph源码解读上回说到,StreamGraph的源码其中是在客户端生成,并且是生成Node节点和Edge,主要是通过StreamAPI生成,表示拓扑结构,这次给大家讲讲JobGraph的生成(以Yarn集群模式)。首先,JobGraph是基于StreamGraph进行优化(包括设置Checkpoint、slot分组策略,内存占比等),最主要是将多个符合条件的StreamN原创 2021-10-07 09:52:02 · 1084 阅读 · 0 评论 -
Flink 解析(二):反压机制解析
Flink反压机制反压是流式系统中关于处理能力的动态反馈机制,并且是从下游到上游的反馈,一般是在实时数据处理的过程中,上游节点的生产速度大于下游节点的消费速度。在Flink中,反压主要有两个部分:跨TaskManager的反压过程和TaskManager内的反压过程。Flink TaskManager内存结构先给大家看看Flink中网络传输场景下的内存管理。首先,每一个Task都是在TaskManager(TM)中运行,每个TM中都存在一个内存区域叫做NetworkBufferPo...原创 2021-10-03 16:36:56 · 2579 阅读 · 0 评论 -
Flink源码解读(一):StreamGraph源码解读
目录Flink流图基本概念StreamGraph源码StreamGraph的核心对象StreamNodeStreamEdgeStreamNode和StreamEdge之间的关系上传jar包生成StreamGraph生成StreamNode生成Edge核心方法参考Flink流图基本概念这里简单介绍一下Flink流图的一些基本概念和过程,详情可以看Flink基础概念。根据不同图的生成顺序,主要是分为4层:StreamGraph-->JobGrap原创 2021-09-30 10:42:06 · 1124 阅读 · 0 评论 -
大数据中数据倾斜问题
首先,需要了解一下什么是数据倾斜。简单来说就是在job任务执行的过程中,某些分区或者节点上的数据,明显高于其他分区或节点的数据,导致这部分的数据处理任务比其他任务要大很多,从而成为这个阶段执行最慢的部分,进而成为整个作业执行的瓶颈,甚至直接导致作业失败,即数据分配严重不均匀,导致job任务失败。举个简单的例子就是,一个job当中有1000个task,其中998个task1分钟完成了,剩下2个task10分钟还没有完成,最终导致了job失败。数据倾斜最终会导致job失败,而在那之前,其实还有其他的危害原创 2021-07-31 15:31:50 · 984 阅读 · 0 评论 -
Hadoop面试题目
Hadoop是什么从HDFS、MR、Yarn进行讲解。HDFS的读写流程读流程:写流程:MR任务中的Shuffle过程 Map方法之后Reduce方法之前这段处理过程叫「Shuffle」 Map方法之后,数据首先进入到分区方法,把数据标记好分区,然后把数据发送到环形缓冲区;环形缓冲区默认大小100m,环形缓冲区达到80%时,进行溢写;溢写前对数据进行排序,排序按照对key的索引进行字典顺序排序,排序的手段「快排」;溢写产生大量溢写文件,需要对溢写文件进行「归并排.原创 2021-07-20 16:47:37 · 248 阅读 · 0 评论 -
数据仓库建模使用的模型以及分层介绍
星型模型星型模型是常用的维度建模方法。星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:维表只和事实表关联,维表之间没有关联; 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键; 以事实表为核心,维表围绕核心呈星形分布。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,所以数据有一定的冗余。雪花型模型雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模原创 2021-07-05 19:16:41 · 2187 阅读 · 0 评论 -
为什么Spark比MapReduce快的原因
对于这个问题我先给出核心的答案,后面会进一步的扩展,有兴趣的可以去了解一下扩展内容。核心答案1、基于内存学过Spark的应该都知道,Spark是基于内存进行数据处理操作的,而MapReduce则是基于磁盘进行数据处理。MR的设计:将MapTask的输出作为中间结果,保存到文件当中,随后作为ReduceTask的输入。这样可以提高可靠性,减少了内存的占用,但是牺牲了性能。Spark的设计:数据在内存当中进行交换(注意是交换,也就是转换算子的操作),但是内存可靠性不如磁盘,所以性能方面比MR原创 2021-07-02 16:16:39 · 1240 阅读 · 0 评论 -
SparkSQL入门介绍
Spark SQL概述 Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块。与基本的Spark RDD API不同,Spark SQL的抽象数据类型为Spark提供了关于数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息去做一些额外的优化,有多种方式与Spark SQL进行交互,比如: SQL和DatasetAPI。当计算结果的时候,使用的是相同的执行引擎,不依赖你正在使用哪种API或者语言。这种统...原创 2021-06-18 14:03:33 · 258 阅读 · 0 评论 -
Spark-core性能优化——shuffle调优
shuffle调优调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关...转载 2021-06-17 15:02:01 · 564 阅读 · 0 评论 -
Spark-core性能优化——数据倾斜调优
数据倾斜调优调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象 1、绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 2、原本能够正常执行的Spark作业,某天突然报出O...转载 2021-06-17 14:27:20 · 192 阅读 · 0 评论 -
Spark-core性能优化——资源调优
资源调优 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spar...转载 2021-06-16 16:59:25 · 287 阅读 · 0 评论 -
Spark-core性能优化——开发调优
Spark-core部分源码讲解总结环境准备源码(Yarn集群)Driver & Executor转载 2021-06-15 18:52:51 · 459 阅读 · 0 评论 -
Spark核心编程系列(六)——共享变量
累加器实现原理 累加器用来把Executor端变量信息聚合到Driver端。再Driver程序中定义的bian'linag原创 2021-06-13 20:50:16 · 620 阅读 · 2 评论 -
Spark核心编程系列(五)——RDD文件读取与保存
RDD文件读取与保存 Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。原创 2021-06-09 14:52:15 · 1115 阅读 · 0 评论 -
Spark核心编程系列(四)——RDD持久化
RDD持久化1、RDD Cache缓存原创 2021-06-08 17:57:02 · 433 阅读 · 0 评论 -
Spark核心编程系列(三)——RDD行动算子、序列化以及依赖关系
RDD行动算子1)reduce函数签名def reduce(f:(T,T)=>T):T函数说明原创 2021-06-08 11:35:50 · 675 阅读 · 0 评论 -
Spark核心编程系列(二)——RDD转换算子
RDD算子介绍 Spark算子大致可以分为两类:Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。 Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业。 Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。而Action 算子会触发 Spark 提交作业(Job),并将数据输出 Sp...原创 2021-06-07 14:22:16 · 802 阅读 · 1 评论 -
Spark核心编程系列(一)——RDD详解
Spark核心编程系列——RDD详解(一)RDD概念原创 2021-06-03 15:54:33 · 1245 阅读 · 1 评论 -
Kafka常见面试——附答案
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习..原创 2021-05-31 17:07:19 · 1771 阅读 · 0 评论 -
Kafka架构深入——Kafka消费者
Kafka架构深入——Kafka消费者消费者定义简单说一下什么是消费者。其实消费者就是从Kafka集群当中消费数据的客户端。当然,一个消费者的消费能力肯定是有限的,所以,当生产者产生数据过快时,单个消费者的消费能力达到上限,导致了Kafka集群消费数据的堆压。从而也就产生了消费者组的概念(一个不够,一群来凑....)。一个消费者组具有若干个消费者(具有相同的group.id),我们可以将消费者组看成是一个大的消费者,同一个topic的分区只能被组内的一个消费者消费一次,不允许多次消费...原创 2021-05-28 17:52:04 · 728 阅读 · 1 评论 -
Kafka架构深入——Kafka生产者
目录Kafka生产者分区策略分区的原因分区原则新建的分区会在哪个目录下创建数据可靠性保证ISR机制ack应答机制(决定数据丢不丢)故障处理细节Exactly Once 语义参考Kafka生产者分区策略通常情况下,kafka集群中越多的partition会带来越高的吞吐量。但是,我们必须意识到集群的partition总量过大或者单个broker节点partition过多,都会对系统的可用性和消息延迟带来潜在的影响。未来,我们计划对这些限制进行一些改进,让原创 2021-05-25 20:18:10 · 595 阅读 · 4 评论 -
Kafka架构深入——工作流程
test原创 2021-05-24 17:42:55 · 210 阅读 · 0 评论 -
Kafka基本理解
Kafka基本理解一、Kafka定义二、使用步骤1.引入库2.读入数据总结一、Kafka定义二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_con原创 2021-05-21 15:54:38 · 363 阅读 · 3 评论 -
Hive 优化
Hive 优化1、Explain查看执行计划可以使用explain语句来查看HQL的执行计划,可以查看一共有几个阶段,有几个MR任务,有些类似于SQL。基本语法:EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query;这里放一段其他博主执行的explain语句STAGE PLANS: Stage: Stage-1 (包含了这个job的大部分处理过程,而且会触发一个 Mapreduce job) Map Redu...原创 2021-05-20 16:54:39 · 174 阅读 · 0 评论 -
Hive 分区和分桶总结
分区和分桶总结1、分区1、分区介绍由于数据量过于庞大,使用分区,可以并行的进行处理数据,有点类似于Hadoop当中的切片操作,将数据分开,然后并行去处理,避免去全表扫描。分区表在生产环境当中用的非常多。分区表实际上就是对应一个在HDFS(或者是其他分布式文件系统)文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件,Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过where子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。...原创 2021-05-19 15:09:50 · 1314 阅读 · 0 评论 -
HBase Rowkey的设计
HBase Rowkey的设计1、Rowkey为什么这么重要?首先,先介绍一下什么是Rowkey。类似于 MySQL、Oracle中的主键,用于标示唯一的行; 完全是由用户指定的一串不重复的字符串; HBase 中的数据永远是根据 Rowkey 的字典排序来排序的。那么,Rowkey的作用又是什么呢?读写数据时通过 RowKey 找到对应的 Region; MemStore 中的数据按 RowKey 字典顺序排序; HFile 中的数据按 RowKey 字典顺序排序。由于H...原创 2021-05-16 17:07:26 · 1216 阅读 · 0 评论 -
HBase的compaction和split流程总结
HBase的compaction和split总结1、compaction介绍在HBase中,每当memstore的数据flush到磁盘后,就形成一个storefile,当storefile的数量越来越大时,会严重影响HBase的读性能,所以必须将过多的storefile文件进行合并操作。Compaction是Buffer-flush-merge的LSM-Tree模型的关键操作,主要起到如下几个作用:(1)合并文件(2)清除删除、过期、多余版本的数据(3)提高读写数据的效率2...原创 2021-05-15 18:53:17 · 786 阅读 · 0 评论 -
HBase读写流程简单总结
HBase读写流程简单总结HBase是一个读比写还慢的一个神奇的数据库。1、HBase写流程简略的说一下HBase的写流程:客户端put 一条数据,假设写入stu表,首先向zookeeper请求meta表所在的regionServer(meta表存储了其他表的信息,而meta表存在zookeeper里)。zookeeper返回meta表所在的regionServer。 客户端接收到zookeeper返回的信息后,会进行缓存在meta cache缓存中,以便后续快速查找。 客户端向m...原创 2021-05-13 16:26:15 · 818 阅读 · 2 评论 -
HBase入门总结
HBase入门总结一、HBase定义二、HBase数据模型1、逻辑结构2、物理结构3、数据模型三、HBase基本架构HBase粗略架构HBase详细架构参考一、HBase定义 Hbase是一种分布式、可扩展、支持海量数据存储的、面向列的NoSQL(非关系型)数据库(其实准确的说是面向列族)。HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hbase提供高性能的计算能力,Zookeeper为Hbase提供稳定服务和Failover机制,因此我们说Hbase是一个通过大量廉价的机器解决原创 2021-05-08 18:41:10 · 173 阅读 · 0 评论 -
MapReduce案例WordCount
最近在b站上看尚硅谷的hadoop相关的视频案例,在这里记录一下。如果有错误,欢迎大佬指正。MapperClassmap阶段主要是通过InputFormat来进行读取文件(当然文件切片什么的在之前也处理好了 )。默认的文件输入方式是TextInputFormat。代码如下:package com.hadoop.wordCount;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;i原创 2021-02-27 22:38:08 · 162 阅读 · 0 评论 -
HBase实现谷粒微博案例
HBase实现谷粒微博案例前言一、启动集群二、功能实现1.创建工程2.constants包3.utils包3.1 createNameSpace 创建命名空间3.2 isTableExist 判断表是否存在3.3 createTable 创建表4.dao包4.1 发微博功能4.2 关注功能4.3 取消关注4.4 获得用户初始页4.5 获得用户全部微博内容5 test包 测试总结参考前言最近刚刚在b站上看完了尚硅谷hbase相关课程,在这里记录一下,完成这个项目遇到的坑,以及案例结果(而且不要吐槽的英语原创 2021-02-27 16:49:12 · 2226 阅读 · 3 评论