
从0到1的大数据探索
文章平均质量分 83
大数据生态技术学习分享
pezynd
工匠
展开
-
大数据实操篇 No.8-记一次业务简单的高可用离线计算/批计算
目录第1章 概要介绍第2章集群规划2.1 各机器安装部署概况2.2 各机器上部署组件及运行进程第3章 流程设计第4章 准备工作4.1 建立Hive表4.2 建立MySQL表第5章 具体步骤5.1 生成应用日志5.2 Flume采集日志5.3 Flume拦截器过滤日志5.4 Flume上传数据到HDFS5.5 Azkaban调度计划5.5.1 Azkaban调度任务一共执行3个job5.5.2 将HDFS数据导入Hive表5.5.3 将Hi.原创 2020-08-17 22:31:42 · 741 阅读 · 2 评论 -
Kafka源码篇 No.5-Producer消息发送
第一章 简介原创 2021-09-01 09:41:40 · 688 阅读 · 0 评论 -
Kafka源码篇 No.4-Producer消息封装
第1章 简介本篇文章从源码的角度,介绍Kafka生产者如何封装消息,细节详见代码中注释。第2章 详细步骤2.1 消息大小的校验在封装前会先进行数据大小的校验org.apache.kafka.clients.producer.KafkaProducer#doSend//TODO 校验消息大小int serializedSize = AbstractRecords.estimateSizeInBytesUpperBound(apiVersions.maxUsableProduce原创 2021-08-30 16:39:00 · 544 阅读 · 0 评论 -
大数据实操篇 No.18-Flink 处理函数介绍和使用(ProcessFunction)
第1章 简介第2章 处理函数类型Flink提供了8种不同的处理函数:ProcessFunction:处理函数KeyedProcessFunction:键值分区的处理函数CoProcessFunction:双流处理函数ProcessJoinFunction:多流join处理函数BroadcastProcessFunction:广播流处理函数KeyedBroadcastProcessFunction:键值分区的广播流处理函数ProcessWindowFunction:原创 2021-07-01 07:59:23 · 669 阅读 · 0 评论 -
Kafka源码篇 No.3-Producer分区分配规则
第1章 简介Kafka生产这端分区分配规则,第2章根据qian元数据信息,确定数据发往哪个partition原创 2021-06-20 14:36:15 · 307 阅读 · 0 评论 -
Kafka源码篇 No.2-Producer如何获取元数据
第1章 简介经过上一篇文章的讲解,大致了解了Producer发送消息的流程,本篇文章我们阅读以下Producer获取元数据的详细步骤。第2章 详细步骤2.1 sender线程拉取元数据sender线程启动以后,会执行run()=>runOnce()=>client.poll()执行kafka client的网络请求开始执行如下代码。@Overridepublic List<ClientResponse> poll(long timeout, long now)原创 2021-04-24 16:59:09 · 515 阅读 · 0 评论 -
Kafka源码篇 No.1-Producer发送消息的流程设计
第1章 简介Kafka为什么能被广泛使用?为什么吞吐量能这么大?他既能在OLTP场景系统中做消息队列,又能在OLAP系统中做大数据实时消息流的暂存。这个强大的一个框架,源码必须得学习学习!笔者Kafka源码文章使用Kafka版本v2.7.0进行编写,不妥之处欢迎留言指点,感激不尽!Kafka源码是Java和Scala语言编写,生产者部分主要是Java语言。下面我们先看看整体的流程,再一步一步剖析细节。第2章 源码结构Kafka源码结构如下:生产者和消费者主要再clients下,而服.原创 2021-04-24 16:55:26 · 600 阅读 · 0 评论 -
大数据实操篇 No.17-Flink State介绍和使用(Datastream API)
第1章 Flink State介绍Flink有两种基本类型的状态:Managed State(托管状态)、Raw State(原生状态)。Managed State是Flink Runtime托管,支持了常见的数据结构:ValueState、ListState、MapState等等;Raw State则是由用户自己管理,只支持字节数组的数据结构。任何上层的数据结构需要序列化为字节数组。使用时,需要用户进行序列化。以下完整代码请查阅github:https://github.com/zihao原创 2021-02-18 22:00:37 · 695 阅读 · 0 评论 -
目录 | 大数据探索文章
理论篇大数据理论篇 No.1-浅谈Flink中的数据传输大数据理论篇 No.2-聊聊Flink流计算中的Timestamp和Watermark大数据理论篇 No.3-看看Flink如何实现端到端的Exactly-once语义大数据理论篇 No.4-聊聊Flink的状态管理大数据理论篇 No.5-聊聊Flink中的Checkpoint和Savepoint大数据理论篇 No.6-理解一下HDFS数据读写流程大数据理论篇 No.7-从NameNode聊起,介绍一下HDFS元数据的Che原创 2021-02-09 15:02:55 · 370 阅读 · 0 评论 -
大数据实操篇 No.16-记一次完整的Flink流计算案例(DataStream API)
第1章 简介本篇文章采用Flink DataStream API完成一次端到端的完成流计算案例,将数据从Kafka抽取,写入Elasticsearch中,并且用kibana动态的展示出来。(客户端=>Web API服务=>Kafka=>Flink=>Elasticsearch=>Kibana)。第2章 案例设计先定一个简单的需求(就根据当下的疫情情况来做吧):统计各地区新冠疫情风险等级。我们假定每个地区确诊病例(0-10]例为低风险地区,(10-50]例为中风险地区,原创 2021-02-09 13:53:20 · 2215 阅读 · 3 评论 -
大数据实操篇 No.15-Elasticsearch集群高可用部署(含Elasticsearch head+Kibana)
第1章 ELK简介ELK(Elasticsearch、Logstash、Kibana)提供了一整套日志分析解决方案,其中elasticsearch是开源分布式搜索引擎。Logstash是一个开源的日志采集工具。Kibana也是开源的数据分析可视化工具。三者结合,Logstash采集系统日志信息后,上传到Elasticsearch中,kibana在利用Elasticsearch分布式高效的检索引擎,将数据可视化的展示到Web界面上。对于一些中小型的系统,可以用ELK快速搭建一套日志分析系统。本篇文章为原创 2021-01-20 23:47:09 · 1920 阅读 · 6 评论 -
大数据理论篇 No.8-聊聊Flink中TaskManager默认的G1垃圾回收器
第1章原创 2020-12-20 22:37:10 · 2168 阅读 · 2 评论 -
【重复文章】大数据流计算 Flink 端到端的完整案例
第1章 简介在前面的文章中,介绍了Flink相关环境的准备,并且完成了一个简单的Flink开发环境的搭建;本篇文章介绍一个完整的端到端涵盖Flink计算的案例:客户端=>Web API服务=>Kafka=>Flink=>MySQL。本次仍然以Flink Table API/SQL为例,采用docker-compose的方式进行部署。(文章中只给出关键部分代码,完整代码详见后续笔者上传的github)。第2章docker-compose2.1 添加docker-..原创 2020-10-23 22:50:20 · 902 阅读 · 0 评论 -
大数据理论篇 No.7-从NameNode聊起,介绍一下HDFS元数据的Checkpoint
NameNodeNameNode是HDFS(Hadoop分布式文件系统)的元数据管理进程,是整个HDFS的Master节点,管理HDFS命名空间、数据块映射的节点、副本策略等等。而这些数据是已文件的形式存在磁盘上的,他们分别是:fsimage和editslog。 fsimage:镜像,namenode元数据文件,存在磁盘;是NameNode内存元数据对应磁盘上的映射。 editslog:文件操作日志,也是存在磁盘,只有追加操作,效率很高。 fsImage 文件和 editslog 文件原创 2020-11-28 17:30:27 · 517 阅读 · 0 评论 -
大数据理论篇 No.6-理解一下HDFS数据读写流程
第1章 写数据 Client向NameNode发起上传请求。 NameNode检查文件是否存在等信息(权限、目录等),检查通过后,返回给Client允许上传。 Client将数据切分成n个block块,block大小默认128M。***文件缓存到本地的临时文件当中。并向NameNode发起RPC请求,请求上传第一个block块。 NameNode根据文件配置的副本数、机架感知,来计算并返回DataNode列表。(详见:第3章副本策略) Clie...原创 2020-11-27 23:44:16 · 210 阅读 · 0 评论 -
大数据理论篇 No.5-聊聊Flink中的Checkpoint和Savepoint
第1章 CheckpointFlink作为分布式流计算处理引擎,而分布式处理引擎必须面对的问题就是故障,例如:进程被强制关闭、服务器宕机、网络连接中断等等。Flink为了解决故障问题,保证在发生故障时能够完好的恢复,并且不丢失状态数据,定义了checkpoint机制。在checkpoint机制中不得不提的一个东西就是:checkpoint barrier。他是一个特殊标记分隔符。barrier不通过数据源算子注入到数据流当中。为了标记所属的checkpoint范围,每个barrier会带有一个c原创 2020-11-15 19:40:26 · 512 阅读 · 0 评论 -
大数据理论篇 No.4-聊聊Flink的状态管理
第1章 有状态的流计算State(状态)是流式应用中普遍存在的一种对象,在流计算整个过程中,算子会不断的对状态进行读取和更新。在Flink当中既有内置的状态,也支持用户自定义状态。算子计算结果保存在state当中,下一笔数据到来时采用上一次计算结果和本次数据一起进行计算。而Flink流计算的状态数据是以state形式存在state backends中。在Flink当中,提及State与Checkpoint和Savepoint息息相关,它们产生的快照的数据就来源于各个算子产生的Stat..原创 2020-11-08 19:59:03 · 220 阅读 · 0 评论 -
大数据理论篇 No.3-看看Flink如何实现端到端的Exactly-once语义
第1章 流计算语义1.1 最多一次At-most-once当流数据发生异常时,重启策略进行恢复时,不在对错误的数据进行重新计算,恢复过程中流过的数据也可能不被计算,所有数据最多只计算一次,At-most-once可能会丢失数据。1.2 至少一次At-least-once当流计算发生异常时,重启策略进行恢复时,之前错误的数据可能会被重新计算,所有数据至少都要被计算一次,At-least-once语义可能会有数据重复。不等待barrier对齐,已经流经算子的数据,在上次成功cp和下一次cp之原创 2020-10-31 22:30:44 · 395 阅读 · 1 评论 -
大数据理论篇 No.2-聊聊Flink流计算中的Timestamp和Watermark
第1章 时间语义Flink里定义了三种时间语义:Event Time、Ingestion Time、Processing Time。在整个流计算过程中,他们分别代表事件发生的时间、数据最早进入Flink的时间和数据被Flink算子处理时算子本地的时间。Event Time:事件发生时间,现实世界中数据真实产生的时间。无论数据流在传输和计算过程中花了多少时间EventTime是不会变的,它在时间发生时就已经确定。Ingestion Time:数据最早进入Flink的时间,也就是数据到达So原创 2020-10-24 08:39:06 · 1938 阅读 · 11 评论 -
大数据实操篇 No.14-记一次Flink端到端的完整流计算案例(Table API/SQL)
第1章 简介第2章原创 2020-10-19 07:54:10 · 538 阅读 · 0 评论 -
大数据实操篇 No.13-Flink开发环境搭建及使用
第1章 简介经过前几篇文章的介绍,相信大家已经了解Flink在生产环境上的部署和使用。那么问题随之而来:难道每一个Flink开发人员都要部署安装一套集群才能做开发吗?答案当然是否定的,如果每一个开发人员都要一套集群那开发成本就太高了。本篇文章以Flink Table API/SQL为例,以Kafka为数据源、Mysql为数据汇,采用容器的方式,为大家介绍Flink开发环境的搭建及使用。(注:笔者以windows为例,mac系统类似)第2章 安装组件2.1官网安装docker...原创 2020-10-02 20:33:10 · 818 阅读 · 0 评论 -
大数据理论篇 No.1-浅谈Flink中的数据传输
第1章 疑问Flink在作业运行过程中,TaskManager之间会不断的进行数据交换,而TaskManager进程里是以Slot为单位执行任务的,一个TaskManager里可以有多个Slot,每个Slot之间都可能进行连接,并且传输数据,而在流计算的场景中,数据之间的交互需要非常的即使,但是如果每一次交互都立即传输,对网络资源的消耗会非常大,Flink是如何解决这一问题的呢?第2章 缓冲区图1Slot之间传输数据的时候,实际是将数据先收集到缓存区中,而并非逐个发送,当数据被存到缓存区后,原创 2020-09-23 21:27:44 · 732 阅读 · 1 评论 -
大数据实操篇 No.12-Kafka集群部署及使用
第1章 简介Kafka作为一个高吞吐量的分布式发布订阅消息系统,在现今大数据生态中已经占有很重要的地位,在系统削峰、解耦等场景上也发挥了重要作用。其天生的分布式架构,可以灵活的进行扩展,可以非常好的支持大吞吐量的数据传输。因为其在大数据场景中的重要地位,并且后续文章案例中需要使用到Kafka,所以笔者这里单独介绍一章。第2章 集群规划Kafka笔者这里只安装2台另外,由于Kafka需要使用Zookeeper,Zookeeper相关部署请参照笔者之前的文章:大数据实操篇 No.1-Zoo.原创 2020-09-16 21:34:13 · 325 阅读 · 2 评论 -
大数据实操篇 No.11-Flink on Yarn集群HA高可用部署及使用
第1章 简介Flink on Yarn的HA高可用模式,首先依赖于yarn自身的高可用机制(ResourceManager高可用),并通过yarn对jobmanager进行管理,当jobmanager失效时,yarn将重新启动jobmanager。其次flink job在恢复时,需要依赖checkpoint进行恢复,而checkpoint的快照依赖于hdfs的高可用,同时jobmanager的元数据信息也依赖于hdfs的高可用(namenode的高可用,和多副本机制),再者jobmanager元数据的指原创 2020-09-05 16:22:38 · 4774 阅读 · 8 评论 -
大数据实操篇 No.10-Flink Standalone集群HA高可用部署
第1章 简介Flink高可用集群,有多种模式,本章介绍:Standalone独立集群模式的高可用部署,及其使用。下面先引用一张Flink官网的图:可以看到Standalone集群的高可用其实就是JobManager的高可用。一个Leader JobManager,以及其他多个Standby JobManager,Leader和Standby之间的切换是依赖于zookeeper,所以部署之前必须安装好Zookeeper集群(可以参考笔者的另外一篇文章:大数据实操篇 No.1-Zookeeper集群搭建原创 2020-08-28 23:28:57 · 1069 阅读 · 1 评论 -
大数据实操篇 No.9-Flink Standalone模式部署及使用
第1章 简介在前面的文章中把离线计算的整套流程和框架基本介绍了一遍,接下来的章节章我们将开始介绍实时计算的框架和使用,重点以Flink为例,Apache Flink是一个分布式数据处理引擎,用于无限流数据和有限流数据进行有状态的流计算。本章主要介绍Flink实操:单机Standalone模式的部署及配置第2章 安装配置2.1 下载安装官网地址:https://flink.apache.org/到官网下载文件,或通过源码编译(可以参考笔者的另外一篇文章:Flink源码编译),放..原创 2020-08-24 16:23:36 · 978 阅读 · 0 评论 -
Flume自定义拦截器的使用
第1章 简介在生产环境中,系统应用的日志千奇百怪,千万不能将这些乱七八糟的数据上传到HDFS上之后,再来做数据的清洗整理。通常的做法是,我们再上传HDFS之前,在Flume采集传输的时候,就将日志进行一层过滤和整理,经过这一层整理之后,我们再将数据上传到HDFS,以减少在HDFS上清洗数据的频次。这里,我们就需要用到Flume拦截器。Flume有很多预置好的拦截器,直接配置Agent即可使用,详见官方手册:https://flume.apache.org/FlumeUserGuide.html#fl原创 2020-08-18 23:53:19 · 773 阅读 · 0 评论 -
大数据实操篇 No.7-Azkaban HA高可用集群部署
第1章 Azkaban简介 Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。可以以计划、批量的模式对HDFS上的数据执行Hive、Sqoop等命令。第2章 编译与安装安装之前,可以先了解以下,Azkaban的组成:Azkaban Web Server、Azkaban Executor Server、My..原创 2020-08-13 23:46:28 · 1826 阅读 · 1 评论 -
大数据实操篇 No.6-Sqoop 部署及使用
第1章 Apache Sqoop简介Sqoop是一款开源的工具,主要用于hadoop(hive)与结构化的数据库(例如:关系型数据库mysql……)之间,进行高效的传输批量数据。注意在官网还有一个版本:Sqoop2,这个Sqoop2官方说明不适用于生产环境部署。Sqoop原理:将导入或导出命令转换成mapreduce程序,实现数据导入导出。在转换出的mapreduce中主要是对inputformat和outputformat进行定制。第2章 Sqoop安装部署2.1 下载解压到官网进原创 2020-08-05 23:29:11 · 521 阅读 · 0 评论 -
大数据实操篇 No.5-Hive 高可用方式集群部署
第1章 简介Hive是一个工具,原理是mapreduce,可以让用户以sql的方式去做数据分析汇总。第2章 安装2.1 解压$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/2.2 修改conf目录下配置$ mv hive-env.sh.template hive-env.sh$ vi hive-env.sh2.3 配置HADOOP_HOME路径export HADOOP_HOME=/opt/module/原创 2020-08-02 12:35:59 · 907 阅读 · 0 评论 -
大数据实操篇 No.4-Flume集群搭建
第1章 集群规划Flume集群,负载均衡和故障转移模式,笔者准备了3台机器安装了flume,其中webapp200是应用服务器,flume安装在这里,目的是收集应用服务器上的日志,通过2个avro sink分别对接到flume130和flume131机器;再通过flume130和flume131将数据传输到HDFS。(注:吞吐量大的channels可以换成kafka)。 Webapp200 Flume130 Flume131.原创 2020-07-26 11:57:35 · 393 阅读 · 0 评论 -
Flink源码编译(Windows环境下编译)
第1章 下载flink源码官网:https://flink.apache.org/https://flink.apache.org/zh/Flink因为阿里的加入,对国内IT人员变得越来越友好了,官网也出了中文版,也有很多中文文档了。第2章 准备环境2.1.Jdkjdk1.8.02.2.Mavenmaven-3.2.52.3.GitGit-2.27.02.4.Node.jsnode-v12.0.0注:笔者在windows环境下编译时出现问题才单独安装了原创 2020-07-25 00:50:30 · 2409 阅读 · 5 评论 -
大数据实操篇 No.3-Hadoop HA高可用集群搭建
第1章 hadoop高可用介绍Hadoop高可用,即 Namenode高可用和resourcemanager高可用。在Hadoop2.0之前,NameNode只有一个,存在单点问题(虽然Hadoop1.0有SecondaryNameNode,CheckPointNode,BackupNode这些,但是单点问题依然存在),在hadoop2.0引入了HA机制。Hadoop2.0的HA机制官方介绍了有2种方式,一种是NFS(Network File System)方式,另外一种是QJM(Quorum Jo原创 2020-07-17 19:41:43 · 665 阅读 · 0 评论 -
Azkaban源码编译(windows环境下编译)
第1章 安装准备1.下载azkaban源码官网:https://azkaban.github.io/downloads.html(笔者下载的是Releases:https://github.com/azkaban/azkaban/releases)下载后进行解压2.JDK安装jdk1.8.0,并配置好环境变量。3.Gradle安装gradle-4.6,并配置好环境变量。(注意:如果gradle版本与azkaban源码内的gradle配置版本不一致,编译时可能会出错)4原创 2020-06-25 00:15:22 · 1394 阅读 · 2 评论 -
大数据实操篇 No.1-Zookeeper集群搭建
zookeeper集群搭建原创 2020-07-17 20:32:18 · 560 阅读 · 0 评论 -
大数据实操篇 No.2-Hadoop集群搭建
hadoop集群搭建原创 2020-07-15 22:31:43 · 1476 阅读 · 0 评论