大数据
mischen520
JAVA高级架构师
展开
-
Kappa架构和Lambda架构的主要区别
(1)Kappa不是Lambda的替代架构,而是其简化版本,Kappa放弃了对批处理的支持,更擅长业务本身为增量数据写入场景的分析需求,例如各种时序数据场景,天然存在时间窗口的概念,流式计算直接满足其实时计算和历史补偿任务需求。(2)Lambda直接支持批处理,因此更适合对历史数据分析查询的场景,比如数据分析师需要按任意条件组合对历史数据进行探索性的分析,并且有一定的实时性需求,期望尽快得到分析结果,批处理可以更直接高效地满足这些需求。原创 2024-06-10 15:30:04 · 119 阅读 · 0 评论 -
Kappa架构介绍
Kappa 方案通过精简链路解决了数据写入和计算逻辑复杂的问题,但它依然没有解决存储和展示的问题,特别是在存储上,使用类似Kafka的消息队列存储长期日志数据,数据无法压缩,存储成本很大,绕过方案是使用支持数据分层存储的消息系统(如Pulsar,支持将历史消息存储到云上存储系统),但是分层存储的历史日志数据仅能用于Kappa backfill作业,数据的利用率依然很低。Kappa架构的原理是:在Lambda 的基础上进行了优化,删除了 Batch Layer 的架构,将数据通道以消息队列进行替代。原创 2024-06-10 10:54:38 · 462 阅读 · 0 评论 -
Lambda架构优缺点
所有的批处理层、加速层和服务层都很容易扩展。因为它们都是完全分布式的系统,我们可以通过增加新机器来轻松地扩大规模。Lambda架构为大数据系统提供了更友好地容错能力,一旦发生错误,我们可以修复算法或从头开始重新计算视图。添加视图是容易的,只是给主数据库集添加几个新的函数。(2)查询灵活度高。批处理层允许针对任何数据进行临时查询。(2) 针对具体场景重新离线训练一遍益处不大。(1)全场景覆盖带来的编码开销。(3)重新部署和迁移成本很高。原创 2024-06-10 10:16:40 · 322 阅读 · 1 评论 -
说说Lambda架构
Lambda架构由Storm的作者Nathan Marz提出,其设计目的在于提供一个能满足大数据库系统关键特性的架构,包括高容错、低延迟、可扩展等。其整合离线批处理和实时流处理,融合不可变形、读写分离和复杂隔离性等原则,集成Hadoop、Kafka、Spark、Storm、Flink等主流大数据组件,达到强鲁性、低延迟的大数据架构思想。服务层(Serving Layer):用于响应用户的查询请求,合并 Batch View 和 Real-time View 中的结果数据集到最终的数据集。原创 2024-06-10 10:05:10 · 368 阅读 · 1 评论 -
商业智能关注如何从业务数据中提取有用的信息,然后采用这些信息指导企业的业务开展。商业智能系统主要包括数据
商业智能关注如何从业务数据中提取有用的信息,然后采用这些信息指导企业的业务开展。商业智能系统主要包括。其中数据预处理是整合企业原始数据的第一步,它包括数据的。数据预处理、数据仓库、数据分析和数据展现。原创 2023-02-15 08:30:01 · 202 阅读 · 0 评论 -
大数据架构师必须掌握的前沿技术生态体系
图中涉及的技术名词解释如下:1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。2)Flume:Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;3)Kafka:Kafka是一种高吞吐量的分布式发布订阅.原创 2021-07-25 16:48:40 · 236 阅读 · 0 评论 -
什么是Azkaban?
Azkaban是一个工作流调度系统,为什么需要工作流调度系统1)一个完整的数据分析系统通常都是由大量任务单元组成:Shell脚本程序,Java程序,MapReduce程序、Hive脚本等2)各任务单元之间存在时间先后及前后依赖关系3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行常见工作流调度系统1)简单的任务调度:直接使用Linux的Crontab来定义;2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如Azkaban、Ooize、Airflow、Dol原创 2021-07-24 14:19:25 · 407 阅读 · 0 评论 -
Flink计算资源的调度是如何实现的?
TaskManager中最细粒度的资源是Task slot,代表了一个固定大小的资源子集,每个TaskManager会将其所占有的资源平分给它的slot。通过调整 task slot 的数量,用户可以定义task之间是如何相互隔离的。每个 TaskManager 有一个slot,也就意味着每个task运行在独立的 JVM 中。每个 TaskManager 有多个slot的话,也就是说多个task运行在同一个JVM中。而在同一个JVM进程中的task,可以共享TCP连接(基于多路复用)和心跳消息,可以减少原创 2021-07-24 13:49:35 · 601 阅读 · 0 评论 -
简述Spark中共享变量(广播变量和累加器)的基本原理与用途
累加器(accumulator)是Spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变。累加器的一个常见用途是在调试时对作业执行过程中的事件进行计数。而广播变量用来高效分发较大的对象。共享变量出现的原因:通常在向Spark 传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。Spark.原创 2021-07-13 20:55:04 · 961 阅读 · 3 评论 -
简述Spark中的缓存机制(cache和persist)与checkpoint机制,并指出两者的区别与联系
都是做RDD持久化的cache:内存,不会截断血缘关系,使用计算过程中的数据缓存。checkpoint:磁盘,截断血缘关系,在ck之前必须没有任何任务提交才会生效,ck过程会额外提交一次任务。原创 2021-07-13 08:18:41 · 815 阅读 · 0 评论 -
Spark常用算子reduceByKey与groupByKey的区别,哪一种更具优势?
reduceByKey:按照key进行聚合,在shuffle之前有combine(预聚合)操作,返回结果是RDD[k,v]。groupByKey:按照key进行分组,直接进行shuffle。开发指导:reduceByKey比groupByKey,建议使用。但是需要注意是否会影响业务逻辑。...原创 2021-07-13 08:09:59 · 347 阅读 · 0 评论 -
列举Spark的transformation算子(不少于8个),并简述功能(重点)
1)map(func):返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.2)mapPartitions(func):类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartitions被调用M次,一个函数一次处理所有分区。3)reduceByKey(func,[numTask]):在一个(K,V原创 2021-07-13 08:06:55 · 641 阅读 · 0 评论 -
Spark有几种部署方式?请分别简要论述
1)Local:运行在一台机器上,通常是练手或者测试环境。2)Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。3)Yarn: Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。4)Mesos:国内大环境比较少用。...原创 2021-07-13 08:02:11 · 687 阅读 · 0 评论 -
Flink Job的提交流程
用户提交的Flink Job会被转化成一个DAG任务运行,分别是:StreamGraph、JobGraph、ExecutionGraph,Flink中JobManager与TaskManager,JobManager与Client的交互是基于Akka工具包的,是通过消息驱动。整个Flink Job的提交还包含着ActorSystem的创建,JobManager的启动,TaskManager的启动和注册。...原创 2021-07-12 08:12:31 · 336 阅读 · 1 评论 -
什么是Operator Chains(算子链)?
为了更高效地分布式执行,Flink会尽可能地将operator的subtask链接(chain)在一起形成task。每个task在一个线程中执行。将operators链接成task是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。这就是我们所说的算子链。...原创 2021-07-11 10:46:46 · 712 阅读 · 0 评论 -
Flink的反压和Strom有哪些不同?
Storm 是通过监控 Bolt 中的接收队列负载情况,如果超过高水位值就会将反压信息写到 Zookeeper ,Zookeeper 上的 watch 会通知该拓扑的所有 Worker 都进入反压状态,最后 Spout 停止发送 tuple。Flink中的反压使用了高效有界的分布式阻塞队列,下游消费变慢会导致发送端阻塞。二者最大的区别是Flink是逐级反压,而Storm是直接从源头降速。...原创 2021-07-11 10:45:09 · 158 阅读 · 0 评论 -
Flink是如何处理反压的?
Flink 内部是基于 producer-consumer 模型来进行消息传递的,Flink的反压设计也是基于这个模型。Flink 使用了高效有界的分布式阻塞队列,就像 Java 通用的阻塞队列(BlockingQueue)一样。下游消费者消费变慢,上游就会受到阻塞。...原创 2021-07-11 10:43:05 · 290 阅读 · 0 评论 -
Flink任务延迟高,想解决这个问题,你会如何入手?
在Flink的后台任务管理中,我们可以看到Flink的哪个算子和task出现了反压。最主要的手段是资源调优和算子调优。资源调优即是对作业中的Operator的并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行调优。作业参数调优包括:并行度的设置,State的设置,checkpoint的设置。...原创 2021-07-11 10:41:18 · 681 阅读 · 0 评论 -
Flink中在使用聚合函数 GroupBy、Distinct、KeyBy 等函数时出现数据热点该如何解决?
数据倾斜和数据热点是所有大数据框架绕不过去的问题。处理这类问题主要从3个方面入手:在业务上规避这类问题例如一个假设订单场景,北京和上海两个城市订单量增长几十倍,其余城市的数据量不变。这时候我们在进行聚合的时候,北京和上海就会出现数据堆积,我们可以单独数据北京和上海的数据。Key的设计上把热key进行拆分,比如上个例子中的北京和上海,可以把北京和上海按照地区进行拆分聚合。参数设置Flink 1.9.0 SQL(Blink Planner) 性能优化中一项重要的改进就是升级了微批模型,即原创 2021-07-11 08:21:44 · 979 阅读 · 0 评论 -
Flink中的Window出现了数据倾斜,你有什么解决办法?
window产生数据倾斜指的是数据在不同的窗口内堆积的数据量相差过多。本质上产生这种情况的原因是数据源头发送的数据量速度不同导致的。出现这种情况一般通过两种方式来解决:在数据进入窗口前做预聚合重新设计窗口聚合的key...原创 2021-07-11 08:17:51 · 365 阅读 · 0 评论 -
Flink是如何保证Exactly-once语义的?
Flink通过实现两阶段提交和状态保存来实现端到端的一致性语义。分为以下几个步骤:开始事务(beginTransaction)创建一个临时文件夹,来写把数据写入到这个文件夹里面预提交(preCommit)将内存中缓存的数据写入文件并关闭正式提交(commit)将之前写完的临时文件放入目标目录下。这代表着最终的数据会有一些延迟丢弃(abort)丢弃临时文件若失败发生在预提交成功后,正式提交前。可以根据状态来提交预提交的数据,也可删除预提交的数据。...原创 2021-07-11 08:06:36 · 589 阅读 · 0 评论 -
Flink是如何做容错的?
Flink 实现容错主要靠强大的CheckPoint机制和State机制。Checkpoint 负责定时制作分布式快照、对程序中的状态进行备份;State 用来存储计算过程中的中间状态。原创 2021-07-11 07:33:33 · 383 阅读 · 0 评论 -
Flink是如何做到高效的数据交换的?
在一个Flink Job中,数据需要在不同的task中进行交换,整个数据交换是有 TaskManager 负责的,TaskManager 的网络组件首先从缓冲buffer中收集records,然后再发送。Records 并不是一个一个被发送的,二是积累一个批次再发送,batch 技术可以更加高效的利用网络资源。...原创 2021-07-11 07:29:04 · 546 阅读 · 0 评论 -
Flink分布式快照的原理是什么?
Flink的容错机制的核心部分是制作分布式数据流和操作算子状态的一致性快照。 这些快照充当一致性checkpoint,系统可以在发生故障时回滚。 Flink用于制作这些快照的机制在“分布式数据流的轻量级异步快照”中进行了描述。 它受到分布式快照的标准Chandy-Lamport算法的启发,专门针对Flink的执行模型而定制。barriers在数据流源处被注入并行数据流中。快照n的barriers被插入的位置(我们称之为Sn)是快照所包含的数据在数据源中最大位置。例如,在Apache Kaf.原创 2021-07-11 07:30:46 · 1617 阅读 · 0 评论 -
Flink 中的Watermark机制
Watermark 是一种衡量 Event Time 进展的机制,可以设定延迟触发Watermark 是用于处理乱序事件的,而正确的处理乱序事件,通常用Watermark 机制结合 window 来实现;数据流中的 Watermark 用于表示 timestamp 小于 Watermark 的数据,都已经到达了,因此,window 的执行也是由 Watermark 触发的。...原创 2021-07-08 23:14:13 · 207 阅读 · 2 评论 -
说说Flink中的窗口?
Flink 支持两种划分窗口的方式,按照time和count。如果根据时间划分窗口,那么它就是一个time-window 如果根据数据划分窗口,那么它就是一个count-window。flink支持窗口的两个重要属性(size和interval)如果size=interval,那么就会形成tumbling-window(无重叠数据) 如果size>interval,那么就会形成sliding-window(有重叠数据) 如果size< interval, 那么这种窗口将会丢失数据。比如...原创 2021-07-08 23:10:41 · 160 阅读 · 0 评论 -
Flink CEP 编程中当状态没有到达的时候会将数据保存在哪里?
在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是watermark的处理逻辑。CEP对未匹配成功的事件序列的处理,和迟到数据是类似的。在 Flink CEP的处理逻辑中,状态没有满足的和迟到的数据,都会存储在一个Map数据结构中,也就是说,如果我们限定判断事件序列的时长为5分钟,那么内存中就会存储5分钟的数据...原创 2021-07-08 23:07:19 · 511 阅读 · 0 评论 -
介绍一下Flink的CEP机制
CEP全称为Complex Event Processing,复杂事件处理Flink CEP是在 Flink 中实现的复杂事件处理(CEP)库CEP 允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据 —— 满足规则的复杂事件...原创 2021-07-08 23:04:45 · 335 阅读 · 0 评论 -
什么是数据湖?
数据湖(Data Lake)是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。目前,Hadoop是最常用的部署数据湖的技术,所以很多人会觉得数据湖就是Hadoop集群。数据湖是一个概念,而Hadoop是用于实现这个概念的技术。 数据仓库 数据湖 主要处理历史的、结构化的数据,而且这些数据必须与数据仓库事先定义的模型吻合。 能处理所有类型的数据,如结构化数据,非结构化数据,半结构化数据等,数据的.原创 2021-07-08 20:35:59 · 538 阅读 · 0 评论 -
reduceByKey、foldByKey、aggregateByKey、combineByKey区别
ReduceByKey 没有初始值 分区内和分区间逻辑相同foldByKey 有初始值 分区内和分区间逻辑相同aggregateByKey 有初始值 分区内和分区间逻辑可以不同combineByKey 初始值可以变化结构 分区内和分区间逻辑不同...原创 2021-07-07 08:06:50 · 717 阅读 · 0 评论 -
Repartition和Coalesce的区别
1)关系:两者都是用来改变RDD的partition数量的,repartition底层调用的就是coalesce方法:coalesce(numPartitions, shuffle = true)2)区别:repartition一定会发生shuffle,coalesce根据传入的参数来判断是否发生shuffle一般情况下增大rdd的partition数量使用repartition,减少partition数量时使用coalesce...原创 2021-07-07 08:03:38 · 867 阅读 · 0 评论 -
map和mapPartitions区别
1)map:每次处理一条数据2)mapPartitions:每次处理一个分区数据原创 2021-07-07 08:02:25 · 381 阅读 · 0 评论 -
Hadoop解决数据倾斜的方法
1)提前在map进行combine,减少传输的数据量在Mapper加上combiner相当于提前进行reduce,即把一个Mapper中的相同key进行了聚合,减少shuffle过程中传输的数据量,以及Reducer端的计算量。如果导致数据倾斜的key大量分布在不同的mapper的时候,这种方法就不是很有效了。2)导致数据倾斜的key 大量分布在不同的mapper(1)局部聚合加全局聚合。第一次在map阶段对那些导致了数据倾斜的key 加上1到n的随机前缀,这样本来相同的key 也会被分原创 2021-07-07 07:36:13 · 550 阅读 · 0 评论 -
hadoop中的数据倾斜表现?
有一个多几个Reduce卡住,卡在99.99%,一直不能结束。 各种container报错OOM 异常的Reducer读写的数据量极大,至少远远超过其它正常的Reducer 伴随着数据倾斜,会出现任务被kill等各种诡异的表现。原创 2021-07-03 14:14:53 · 96 阅读 · 0 评论 -
Flume Agent内部原理
重要组件:1)ChannelSelectorChannelSelector的作用就是选出Event将要被发往哪个Channel。其共有两种类型,分别是Replicating(复制)和Multiplexing(多路复用)。ReplicatingSelector会将同一个Event发往所有的Channel,Multiplexing会根据相应的原则,将不同的Event发往不同的Channel。2)SinkProcessorSinkProcessor共有三种类型,分别是DefaultSink..原创 2021-07-03 10:01:47 · 95 阅读 · 0 评论 -
linux怎样模拟socket连接
安装netcat工具sudo yum install -y nc打开一个窗口,输入如下指令:上面的表示新启一个server端,用于接收数据再另起一个窗口,输入如下指令:这个表示直接连接客户端,端口号为6666,输入什么内容,server端就打印什么内容...原创 2021-07-03 09:35:50 · 726 阅读 · 0 评论 -
/var/run/yum.pid 已被锁定,PID 为 2984 的另一个程序正在运行。
今天在安装netcat工具的时候出现上面这个错误,安装netcat工具的命令为:sudo yum install -y nc报错截图为:解决办法为:rm -f /var/run/yum.pid然后重新输入sudo yum install -y nc命令即可原创 2021-07-03 08:33:19 · 164 阅读 · 0 评论 -
Flume的组成
Flume组成架构如下图所示。1.2.1 AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。Agent主要有3个部分组成,Source、Channel、Sink。1.2.2 SourceSource是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、taildir、sequence generator、syslo..原创 2021-07-03 08:03:45 · 1186 阅读 · 0 评论 -
(高频面试题)Flume采集数据会丢失吗?
根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制,Source到Channel是事务性的,Channel到Sink是事务性的,因此这两个环节不会出现数据的丢失,唯一可能丢失数据的情况是Channel采用memoryChannel,agent宕机导致数据丢失,或者Channel存储数据已满,导致Source不再写入,未写入的数据丢失。Flume不会丢失数据,但是有可能造成数据的重复,例如数据已经成功由Sink发出,但是没有接收到响应,Sink会再次发送数据,此时可能会导致数据原创 2021-07-02 20:49:34 · 1703 阅读 · 1 评论 -
什么是Flume的事务机制?
Flume的事务机制(类似数据库的事务机制):Flume使用两个独立的事务分别负责从Soucrce到Channel,以及从Channel到Sink的事件传递。比如spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到Channel且提交成功,那么Soucrce就将该文件标记为完成。同理,事务以类似的方式处理从Channel到Sink的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保持到Channel中,等待重新传递。.原创 2021-07-02 20:43:22 · 405 阅读 · 0 评论