- 博客(49)
- 问答 (1)
- 收藏
- 关注
原创 RDD底层实现原理
RDD底层实现原理RDD是一个分布式数据集,顾名思义,其数据应该分部存储于多台机器上。事实上,每个RDD的数据都以Block的形式存储于多台机器上,下图是Spark的RDD存储架构图,其中每个Executor会启动一个BlockManagerSlave,并管理一部分Block;而Block的元数据由Driver节点的BlockManagerMaster保存。BlockManagerSlave生成Block后向BlockManagerMaster注册该Block,BlockManagerMaster管理RD
2020-05-27 22:35:12 552
翻译 流计算中的 Exactly Once 语义
在大数据领域,分布式事件流处理已经成为了热门话题。目前流行的流处理引擎包括 Apache Storm、Apache Flink、Heron、Apache Kafka(Kafka Streams)和 Apache Spark(Spark Streaming)。流处理引擎被广泛讨论的一个特性——Extractly-Once,很多引擎也已经宣称支持。然而,关于 Extractly-Once 是什么,当流处理引擎宣称支持它时,它真正意味着什么。关于 Extractly-Once 的处理语义描述也是非常容易让人误导
2020-05-17 23:17:03 624
原创 Spark RDD 宽窄依赖——顿悟篇
1.宽窄依赖●两种依赖关系类型RDD和它依赖的父RDD的关系有两种不同的类型,即·宽依赖(wide dependency/shuffle dependency)·窄依赖(narrow dependency)●图解●如何区分宽窄依赖窄依赖:父RDD的一个分区只会被子RDD的一个分区依赖宽依赖:父RDD的一个分区会被子RDD的多个分区依赖(涉及到shuffle)2.为什么要设计宽窄依赖2.1对于窄依赖Spark可以并行计算如果有一个分区数据丢失,只需要从父RDD的对应1个分区重新计
2020-05-16 19:35:13 640
原创 Flink 是如何解决乱序问题的
比如星球大战的播放顺序,如果按照上映的时间观看,可能会发现故事在跳跃。在流计算中,与这个例子是非常类似的。所有消息到来的时间,和它真正发生在源头,在线系统 Log 当中的时间是不一致的。在流处理当中,希望是按消息真正发生在源头的顺序进行处理,不希望是真正到达程序里的时间来处理。Flink 提供了 Event Time 和 WaterMark 的一些先进技术来解决乱序的问题。使得用户可以有序的处理这个消息。这是 Flink 一个很重要的特点。...
2020-05-14 20:21:32 1062
原创 Flink 最区别于其他流计算引擎的,其实就是状态管理。
什么是状态?例如开发一套流计算的系统或者任务做数据处理,可能经常要对数据进行统计,如 Sum、Count、Min、Max,这些值是需要存储的。因为要不断更新,这些值或者变量就可以理解为一种状态。如果数据源是在读取 Kafka、RocketMQ,可能要记录读取到什么位置,并记录Offset,这些 Offset 变量都是要计算的状态。Flink 提供了内置的状态管理,可以把这些状态存储在 Flink 内部,而不需要把它存储在外部系统。这样做的好处是第一降低了计算引擎对外部系统的依赖以及部署,使运维更加
2020-05-14 20:16:38 244
原创 Flink 是如何做到在 Checkpoint 恢复过程中没有任何数据的丢失和数据的冗余?来保证精准计 算的?
这其中原因是 Flink 利用了一套非常经典的 Chandy-Lamport 算法,它的核心思想是把这个流计算看成一个流式的拓扑,定期从这个拓扑的头部 Source点开始插入特殊的 Barriers,从上游开始不断的向下游广播这个 Barriers。每一个节点收到所有的 Barriers,会将 State 做一次 Snapshot,当每个节点都做完 Snapshot 之后,整个拓扑就算完整的做完了一次 Checkpoint。接下来不管出现任何故障,都会从最近的 Checkpoint 进行恢复。Flink
2020-05-13 22:25:16 665
原创 Spark Streaming 概念到开发!
1.1. 新的场景需求●集群监控一般的大型集群和平台, 都需要对其进行监控的需求。要针对各种数据库, 包括 MySQL, HBase 等进行监控要针对应用进行监控, 例如 Tomcat, Nginx, Node.js 等要针对硬件的一些指标进行监控, 例如 CPU, 内存, 磁盘 等1.2. Spark Streaming介绍●官网 : http://spark.apache.org/streaming/●概述Spark Streaming是一个基于Spark Core之上的实时计算
2020-05-11 22:37:51 147
转载 Flink 核心技术
Apache Flink 介绍Apache Flink 是近年来越来越流行的一款开源大数据计算引擎,它同时支持了批处理和流处理,也能用来做一些基于事件的应用。使用官网的一句话来介绍 Flink 就是 “Stateful Computations Over Streams”。首先 Flink 是一个纯流式的计算引擎,它的基本数据模型是数据流。流可以是无边界的无限流,即一般意义上的流处理。也可以是有边界的有限流,这样就是批处理。因此 Flink 用一套架构同时支持了流处理和批处理。其次,Flink 的一个优
2020-05-11 09:20:42 832
翻译 Flink之Watermark
当人们第一次使用 Flink 时,经常会对 watermark 感到困惑。但其实 watermark 并不复杂。让我们通过一个简单的例子来说明为什么我们需要 watermark,以及它的工作机制是什么样的。在 Apache Flink 中使用 watermark 的 4 个观察结果在下文中的例子中,我们有一个带有时间戳的事件流,但是由于某种原因它们并不是按顺序到达的。图中的数字代表事件发生的时间戳。第一个到达的事件发生在时间 4,然后它后面跟着的是发生在更早时间(时间 2)的事件,以此类推:注意这是
2020-05-11 09:09:07 176
翻译 Flink Window & Time详解
1 Window & TimeApache Flink(以下简称 Flink) 是一个天然支持无限流数据处理的分布式计算框架,在 Flink 中 Window 可以将无限流切分成有限流,是处理有限流的核心组件,现在Flink 中 Window 可以是时间驱动的(Time Window),也可以是数据驱动的(CountWindow)。下面的代码是在 Flink 中使用 Window...
2020-05-07 22:40:42 262
原创 Flink组态 之【并行度】概念详解
1. 基本概念运行 Flink 应用其实非常简单,但是在运行 Flink 应用之前,还是有必要了解 Flink 运行时的各个 组件,因为这涉及到 Flink 应用的配置问题。通过这张图我们可以看到,在一个 DAG 图中,不能被 chain 在一起operator 会被分隔到不同的 Task 中,也就是说,Task 是 Flink 中资源调度的最小单位。Flink 运行时包括两类进程:●...
2020-05-03 22:35:32 956
原创 Linux上Flink安装及测试
一、下载Flink1、手动下载Flink1.1、官网下载:Flink安装包下载.2.将flink安装包上传至linux较为基础 上传方式略过3.解压压缩包3.1解压成功4.启动kafka进入kafka的bin目录启动kafka:start-cluster.sh4.1查看是否启动成功5.centos开放flink默认端口(8081) 修改iptables进入配置...
2020-05-03 12:30:45 3433
原创 常见kafka面试题你都会了吗?
1、Kafka 都有哪些特点?高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。可扩展性:kafka集群支持热扩展持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点...
2020-05-03 00:27:57 187
转载 Kafka是如何实现高吞吐率的?
Kafka的高吞吐率是一个使用起来很不错的性能,其中有如下几点原因:一、Broker NIO异步消息处理,实现了IO线程与业务线程分离Kafka的网络通信模型是基于NIO的Reactor多线程模型来设计的,这里先引入Kafka源码中注释。An NIO socket server. The threading model is1 Acceptor thread that handles ne...
2020-05-03 00:21:41 862
转载 Kafka Producer是如何动态感知Topic分区数变化
我们都知道,使用Kafka生产者往Kafka的经纪人发送消息的时候,Kafka会根据消息的密钥计算出这条消息应该发送到分区。最小的分区计算类是HashPartitioner,其实现如下:class HashPartitioner(props: VerifiableProperties = null) extends Partitioner { def partition(data: Any,...
2020-05-03 00:10:58 1194
转载 关于Kafka的分区分配策略
问题用过 Kafka 的同学用过都知道,每个 Topic 一般会有很多个 partitions。为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会启动一个或多个streams去分别消费 Topic 里面的数据。我们又知道,Kafka 存在 Consumer Group 的概念,也就是 group.id 一样的 Consumer,这些 Co...
2020-05-03 00:04:59 496
转载 Kafka创建Topic时如何将分区放置到不同的Broker中
熟悉 Kafka 的同学肯定知道,每个主题有多个分区,每个分区会存在多个副本,本文今天要讨论的是这些副本是怎么样放置在 Kafka 集群的 Broker 中的。大家可能在网上看过这方面的知识,网上对这方面的知识是千变一律,都是如下说明的:为了更好的做负载均衡,Kafka尽量将所有的Partition均匀分配到整个集群上。Kafka分配Replica的算法如下:将所有存活的N个Brokers和...
2020-05-02 23:51:52 429
转载 Apache Kafka消息格式的演变(0.7.x~0.10.x)
用 Kafka 这么久,从来都没去了解 Kafka 消息的格式。今天特意去网上搜索了以下,发现这方面的资料真少,很多资料都是官方文档的翻译;而且 Kafka 消息支持压缩,对于压缩消息的格式的介绍更少。基于此,本文将以图文模式介绍 Kafka 0.7.x、0.8.x 以及 0.10.x 等版本 Message 格式,因为 Kafka 0.9.x 版本的消息格式和 0.8.x 一样,我就不单独介绍了...
2020-05-02 23:42:51 182
原创 Hive之FAILED: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient异常
Hive启动不报错,当使用show databases…时报:FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionH...
2020-04-27 15:38:36 132
原创 关于Spark性能调优
整体上的优化点目录如下:0. Overview开发调优避免创建重复的RDD尽可能复用同一个RDD对多次使用的RDD进行持久化尽量避免使用shuffle类算子使用map-side预聚合的shuffle操作使用高性能的算子广播大变量使用Kryo优化序列化性能优化数据结构资源参数调优运行时架构运行流程调优executor配置driver配置并行度网络...
2020-04-23 10:53:12 339
原创 SparkSession与SparkContext关系详解
SparkSession是Spark 2.0引如的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。 在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用S...
2020-04-14 22:34:51 3248
原创 启动hive,提示ls: 无法访问/home/software/spark-2.0.1-bin-hadoop2.7/lib/spark-assembly-*.jar: 没有那个文件或目录
[root@hadoop03 bin]# hivels: 无法访问/home/software/spark-2.0.1-bin-hadoop2.7/lib/spark-assembly-*.jar: 没有那个文件或目录原因是: spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没有...
2020-04-13 20:11:01 581
原创 Hadoop生态之kafka史上最全详解!
1、消息队列的介绍消息(Message):是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue):是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在2、K...
2020-03-19 07:37:01 5542
原创 Java api 操作 Hbase时 遇到的延时问题
问题发生现象:我最后的解决方法如下:需要在java开发时使用的系统hosts问价下同样配置数据库系统相同的节点。如下图中红框内部分,java开发的windows环境hosts文件要与数据库所在的linux服务器系统上hosts的配置匹配。这样做解决了我的问题。在java中刚开始写的是node01,node02…改成:...
2019-12-17 11:25:27 293
原创 Apache Sqoop的安装到测试
1.sqoop介绍Apache Sqoop是在Hadoop生态体系和RDBMS体系之间传送数据的一种工具。来自于Apache软件基金会提供。Sqoop工作机制是将导入或导出命令翻译成mapreduce程序来实现。在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。Hadoop生态系统包括:HDFS、Hive、Hbase等RDBMS体系包括:Mys...
2019-11-28 09:56:27 141
原创 Apache Sqoop安装过程常见问题解决
1.报错现象2.错误示例查看数据库命令:sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456;3.错误原因经实验,这里的连接语句中的localhost要根据hive的元数据库配置来写,如果是使用的本地mysql数据库作为元数据库,则需要写localho...
2019-11-28 09:54:49 265
原创 UDF自定义函数
方式一1.创建一个class 继承UDF2.编写evaluate函数,在这里编写业务需要的代码3.打成jar包,并上传4.将jar包添加到hive在hive shell 内 add jar 路径+jar包5.创建临时函数(永久的函数将temporary删掉)create temporary function 新的函数的名称 as 业务代码所在的包名-类名6.调用...
2019-11-25 21:48:16 182
原创 Hive基本操作
1、创建数据库与创建数据库表说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的<name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>创建数据库并指定hdfs存储位置create database myhive2 ...
2019-11-20 21:33:03 99
原创 Hive深入浅出
1.什么是hive?Hive是基于Hadoop的一个数据仓库工具,可以将数据化结构的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,hive可以理解为将一个SQL转换为MapReduce的任务的工具。Hive的特点可扩展Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。延...
2019-11-20 15:11:43 277
原创 MapReduceShuffle过程运行机制详解
map阶段处理的数据如何传递给reduce阶段,是MapReduce框架中最关键的一个流程,这个流程就叫shuffle。shuffle:核心机制(数据分区,排序,ComBiner,合并 等过程)shuffle是Mapreduce的核心,它分布在Mapreduce的map阶段和reduce阶段。一般把从Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle。...
2019-11-20 11:48:12 317
原创 HDFS新增节点与删除节点
服役新数据节点需求基础:随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。准备新节点第一步:复制一台新的虚拟机出来将我们纯净的虚拟机复制一台出来,作为我们新的节点 第二步:修改mac地址以及IP地址修改mac地址命令vim /etc/udev/rules.d/70-persistent-net.rules...
2019-11-07 21:16:10 129
原创 Java API 操作HDFS文件大集合
public class HdfsTest02 { static Configuration conf=new Configuration();//创建文件并写入 @Test public void create() throws IOException, URISyntaxException { FileSystem fs = FileSystem.g...
2019-11-07 17:26:25 182
原创 namenode发生故障如何修复?【看这一篇就够了!】
secondaryNamenode对namenode当中的fsimage和edits进行合并时,每次都会先将namenode的fsimage与edits文件拷贝一份过来,所以fsimage与edits文件在secondarNamendoe当中也会保存有一份,如果namenode的fsimage与edits文件损坏,那么我们可以将secondaryNamenode当中的fsimage与edits拷贝...
2019-11-06 21:10:16 746
原创 深度剖析SecondaryNameNode运行机制
1. Secondarynamenode工作过程SecondaryNameNode备份由三个参数控制fs.checkpoint.period控制周期(以秒为单位,默认3600秒),fs.checkpoint.size控制日志文件超过多少大小时合并(以字节为单位,默认64M), dfs.http.address表示http地址,这个参数在SecondaryNameNode为单独节点时需要设置。...
2019-11-06 20:45:56 460
原创 Fsimage,Edits详解
NameNode元数据解析(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载edits和fsimage文件到内存。(2)客户端对元数据进行增删改的请求。(3)namenode记录操作日志,更新滚动日志。(4)namenode在内存中对数据进行增删改查。fsimage保存了最新的元数据检查点,在HDFS启动时加载fsimage的信息...
2019-11-05 16:42:12 700
原创 Datenode的目录结构
和namenode不同的是,datanode的存储目录是初始阶段自动创建的,不需要额外格式化。在/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas/current这个目录下查看版本号(1)storageID:存储id号(2)clusterID集群id,全局唯一(3)cTime属性标记了datanode存储系统的创...
2019-11-05 16:01:45 380
原创 如何保证HDFS数据的完整性
1)当DataNode读取block的时候,它会计算checksum2)如果计算后的checksum,与block创建时(第一次上传是会计算checksum值)值不一样,说明block已经损坏。3)client读取其他DataNode上的block.4)datanode在其文件创建后周期验证checksum掉线时限参数设置datanode进程死亡或者网络故障造成datanode无法与n...
2019-11-05 15:49:40 692
原创 HDFS文件读写流程
写入详细步骤解析:1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;2、 client请求第一个block该传输到哪些DataNode服务器上;3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;4、 client请求3...
2019-11-05 15:46:20 118
原创 hdfs的高级命令和安全模式
HDFS文件限额配置hdfs文件的限额配置允许我们以文件大小或者文件个数来限制某个目录下 上传的文件数量或者文件内容的总量,以便达到我们类似百度网盘等限制每个用户允许上传的最大文件数量。1. 数量限额hdfs dfs -mkdir -p /user/root/lisi #创建hdfs文件夹hdfs dfsadmin -setQuota 2 lisi # 给该文件夹下面...
2019-11-05 15:12:38 251
空空如也
java自定义表单表头(动态字段)如何实现?
2021-07-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人