大数据
文章平均质量分 76
大数据
落花雨时
守破离,断舍进。
展开
-
ClickHouse 快速入门
文章目录一、ClickHouse入门1. ClickHouse的特点1.1 列式存储1.2 DBMS的功能1.3 多样化引擎1.4 高吞吐写入能力1.5 数据分区与线程级并行二、ClickHouse的安装1. 准备工作1. 1 确定防火墙处于关闭状态1.2 CentOS取消打开文件数限制1.3 安装依赖1.4 取消SELINUX2. 单机安装(在线)三、数据类型1. 整型2. 浮点型3. 布尔型4. Decimal 型5. 字符串6. 枚举类型7. 时间类型8. 数组四、表引擎1. 表引擎的使用2. Tin原创 2022-05-10 16:51:03 · 15139 阅读 · 0 评论 -
Flink CDC 快速入门
一、CDC简介1.1 什么是CDC CDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。1.2 CDC的种类CDC主要分为基于查询和基于Binlog两种方式,我们主要了解一下这两种之间的区别:基于查询的CDC基于Binlog的CDC开源产品Sqoop、Kafka JDBC SourceCanal原创 2022-04-27 14:35:44 · 1318 阅读 · 0 评论 -
Flink CEP
一、基本概念1. CEP 是什么 所谓CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。 那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。 具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换原创 2022-04-12 16:50:53 · 4645 阅读 · 2 评论 -
Flink Table API和SQL(下)
一、函数 在 SQL 中,我们可以把一些数据的转换操作包装起来,嵌入到 SQL 查询中统一调用,这就是“函数”(functions)。 Flink 的Table API 和 SQL 同样提供了函数的功能。两者在调用时略有不同:Table API 中的函数是通过数据对象的方法调用来实现的;而 SQL 则是直接引用函数名称,传入数据作为参数。例如,要把一个字符串 str 转换成全大写的形式,Table API 的写法是调用 str 这个 String 对象的 upperCase()方法:str.upp原创 2022-04-10 16:15:26 · 3394 阅读 · 0 评论 -
Flink Table API和SQL(中)
一、时间属性和窗口 基于时间的操作(比如时间窗口),需要定义相关的时间语义和时间数据来源的信息。在 Table API 和 SQL 中,会给表单独提供一个逻辑上的时间字段,专门用来在表处理程序中指示时间。 所以所谓的时间属性(time attributes),其实就是每个表模式结构(schema)的一部分。它可以在创建表的DDL 里直接定义为一个字段,也可以在 DataStream 转换成表时定义。一旦定义了时间属性,它就可以作为一个普通字段引用,并且可以在基于时间的操作中使用。 时间属性的数原创 2022-04-10 14:45:55 · 4632 阅读 · 0 评论 -
Flink Table API和SQL(上)
概述 Flink 提供了对于“表”处理的支持,这就是更高层级的应用API,在 Flink 中被称为Table API 和 SQL。Table API 顾名思义,就是基于“表”(Table)的一套 API,它是内嵌在 Java、 Scala 等语言中的一种声明式领域特定语言(DSL),也就是专门为处理表而设计的;在此基础上,Flink 还基于Apache Calcite 实现了对 SQL 的支持。这样一来,我们就可以在 Flink 程序中直接写 SQL 来实现处理需求了。 在 Flink 中这两种原创 2022-04-09 16:17:33 · 1970 阅读 · 0 评论 -
Flink 容错机制
概述 在分布式架构中,当某个节点出现故障,其他节点基本不受影响。这时只需要重启应用, 恢复之前某个时间点的状态继续处理就可以了。这一切看似简单,可是在实时流处理中,我们不仅需要保证故障后能够重启继续运行,还要保证结果的正确性、故障恢复的速度、对处理性能的影响,这就需要在架构上做出更加精巧的设计。 在 Flink 中,有一套完整的容错机制(fault tolerance)来保证故障后的恢复,其中最重要的就是检查点(checkpoint)。在前面,我们已经介绍过检查点的基本概念和用途,接下来我们就深入探原创 2022-04-04 14:29:21 · 5118 阅读 · 3 评论 -
Flink 状态编程
概述 Flink 处理机制的核心,就是“有状态的流式计算”。我们在之前的章节中也已经多次提到了“状态”(state),不论是简单聚合、窗口聚合,还是处理函数的应用,都会有状态的身影出现。在前面,我们已经简单介绍过有状态流处理,状态就如同事务处理时数据库中保存的信息一样,是用来辅助进行任务计算的数据。而在 Flink 这样的分布式系统中,我们不仅需要定义出状态在任务并行时的处理方式,还需要考虑如何持久化保存、以便发生故障时正确地恢复。这就需要一套完整的管理机制来处理所有的状态。一、Flink 中的状态原创 2022-04-03 18:39:08 · 2737 阅读 · 0 评论 -
Flink 多流转换
概述 无论是基本的简单转换和聚合,还是基于窗口的计算,我们都是针对一条流上的数据进行处理的。而在实际应用中,可能需要将不同来源的数据连接合并在一起处理,也有可能需要将一条流拆分开,所以经常会有对多条流进行处理的场景。本章我们就来讨论 Flink 中对多条流进行转换的操作。 简单划分的话,多流转换可以分为“分流”和“合流”两大类。目前分流的操作一般是通过侧输出流(side output)来实现,而合流的算子比较丰富,根据不同的需求可以调用union、connect、join以及 coGroup等接口进原创 2022-04-01 15:17:21 · 2876 阅读 · 0 评论 -
Flink 处理函数
概述 之前所介绍的流处理 API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于 DataStream 进行转换的;所以可以统称为DataStream API,这也是 Flink 编程的核心。而我们知道,为了让代码有更强大的表现力和易用性,Flink 本身提供了多层API,DataStream API 只是中间的一环。 在更底层,我们可以不定义任何具体的算子(比如map,filter,或者window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概原创 2022-03-31 16:23:29 · 2028 阅读 · 0 评论 -
Flink 中的时间和窗口
一、时间语义1. Flink 中的时间语义 对于一台机器而言,“时间”自然就是指系统时间。但我们知道,Flink 是一个分布式处理系统。分布式架构最大的特点,就是节点彼此独立、互不影响,这带来了更高的吞吐量和容错性;但有利必有弊,最大的问题也来源于此。 在分布式系统中,节点“各自为政”,是没有统一时钟的,数据和控制信息都通过网络进行传输。比如现在有一个任务是窗口聚合,我们希望将每个小时的数据收集起来进行统计处理。而对于并行的窗口子任务,它们所在节点不同,系统时间也会有差异;当我们希望统计 8 点原创 2022-03-30 16:36:55 · 3578 阅读 · 0 评论 -
Flink DataStream API(基础版)
概述 DataStream(数据流)本身是 Flink 中一个用来表示数据集合的类(Class),我们编写的 Flink 代码其实就是基于这种数据类型的处理,所以这套核心API 就以DataStream 命名。对于批处理和流处理,我们都可以用这同一套 API 来实现。 DataStream 在用法上有些类似于常规的 Java 集合,但又有所不同。我们在代码中往往并不关心集合中具体的数据,而只是用 API 定义出一连串的操作来处理它们;这就叫作数据流的“转换”(transformations)。原创 2022-03-28 17:51:47 · 4304 阅读 · 2 评论 -
Flink 运行时架构
一、系统架构1.1 整体构成 Flink 的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器(TaskManager)。对于一个提交执行的作业,JobManager 是真正意义上的“管理者”(Master),负责管理调度,所以在不考虑高可用的情况下只能有一个;而 TaskManager 是“工作者”(Worker、Slave),负责执行任务处理数据,所以可以有一个或多个。 这里首先要说明一下“客户端”。其实客户端并不是处理系统的一部分,它只负责作业的提交。具体来原创 2022-03-26 19:31:01 · 2084 阅读 · 0 评论 -
Flink 部署
这里需要提到 Flink 中的几个关键组件:客户端(Client)、作业管理器(JobManager)和任务管理器(TaskManager)。我们的代码,实际上是由客户端获取并做转换,之后提交给 JobManger 的。所以 JobManager 就是 Flink 集群里的“管事人”,对作业进行中央调度管理;而它获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的TaskManager。这里的 TaskManager,就是真正“干活的人”,数据的处理操作都是它们来做的,一、快速启动一个 Fli.原创 2022-03-26 15:50:48 · 11512 阅读 · 0 评论 -
Flink 快速上手(批处理+流处理)
一、环境准备工欲善其事,必先利其器。在进行代码的编写之前,先将我们使用的开发环境和工具介绍一下:系统环境为 Windows 10。需提前安装 Java 8。集成开发环境(IDE)使用 IntelliJ IDEA,具体的安装流程参见 IntelliJ 官网。安装 IntelliJ IDEA 之后,还需要安装一些插件——Maven 和Git。Maven 用来管理项目依赖;通过 Git 可以轻松获取我们的示例代码,并进行本地代码的版本控制。二、创建项目在准备好所有的开发环境之后,我们就可以开始开原创 2022-03-26 12:52:12 · 7288 阅读 · 0 评论 -
Flink 概述
一、简介 Flink是 Apache 基金会旗下的一个开源大数据处理框架。目前,Flink 已经成为各大公司大数据实时处理的发力重点,特别是国内以阿里为代表的一众互联网大厂都在全力投入,为Flink 社区贡献了大量源码。如今 Flink 已被很多人认为是大数据实时处理的方向和未来,许多公司也都在招聘和储备掌握 Flink 技术的人才。二、特性2.1 Flink 的核心特性Flink 区别与传统数据处理框架的特性如下。高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟。结果的准确性。Flink原创 2022-03-25 15:36:25 · 6004 阅读 · 0 评论 -
离线数仓问题总结
一、采集1.1 maxwell中的默认JDBC驱动包其版本不适用于MySQL 5.7版本二、数仓2.1 关于hive如何支持json类型的字段主要在建表语句上指定上DROP TABLE IF EXISTS ods_log_inc;CREATE EXTERNAL TABLE ods_log_inc( `common` STRUCT<ar :STRING,ba :STRING,ch :STRING,is_new :STRING,md :STRING,mid :STRING,原创 2022-03-20 09:09:56 · 3233 阅读 · 0 评论 -
DolphinScheduler 入门操作
一、安全中心配置安全中心主要有租户管理、用户管理、告警组管理、Worker分组管理、队列管理、令牌管理等功能。安全中心只有管理员账户才有操作权限。1.1 队列管理此处的队列对应的是Yarn调度器的资源队列。故队列概念只对跑在Yarn上的任务类型有效。此处创建出的队列,可供后续任务进行选择。需要注意的是,在DolphinScheduler中创建队列,并不会影响到Yarn调度器的队列配置。此处可不创建队列。1.2 租户管理租户对应的是Linux系统用户,是Worker执行任务使用的用户。如果Wo原创 2022-03-12 15:49:49 · 11660 阅读 · 0 评论 -
DolphinScheduler 简介及安装部署(集群)
一、 DolphinScheduler简介1.1 DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。1.2 DolphinScheduler核心架构DolphinScheduler的主要角色如下:MasterServer 采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交、任务监控,并同时监听原创 2022-03-12 15:12:36 · 15829 阅读 · 1 评论 -
SparkStreaming DStream转换及其输出&优雅关闭
DStream上的操作与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的原语,如:updateStateByKey()、transform()以及各种Window相关的原语。一、DStream转换1. 无状态转化操作 无状态转化操作就是把简单的RDD转化操作应用到每个批次上,也就是转化DStream中的每一个RDD。部分无状态转化操作列在了下表中。注意,针对键值对的DStream转化操作(比如 reduce.原创 2021-11-21 09:57:56 · 768 阅读 · 2 评论 -
SparkStreaming Dstream创建方式
一、Dstream入门1. WordCount案例实操需求:使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数添加依赖<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.12</artifactId> <version>3.0原创 2021-11-21 09:10:31 · 542 阅读 · 0 评论 -
SparkStreaming 概述
一、Spark Streaming是什么Spark流使得构建可扩展的容错流应用程序变得更加容易。 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。 和Spark基于RDD的概念很相似,Spark Stream原创 2021-11-20 10:56:26 · 483 阅读 · 0 评论 -
SparkSQL 数据的加载和保存
一、通用加载和保存方式 SparkSQL提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据,SparkSQL默认读取和保存的文件格式为parquet1. 加载数据spark.read.load 是加载数据的通用方法scala> spark.read.csv format jdbc json load option options orc parquet schema table tex原创 2021-11-18 17:12:44 · 726 阅读 · 1 评论 -
SparkSQL 用户自定义函数
SparkSQL允许用户可以通过spark.udf功能添加自定义函数,实现自定义功能。一、UDF1. 创建DataFramescala> val df = spark.read.json("data/user.json")df: org.apache.spark.sql.DataFrame = [age: bigint, username: string]2. 注册UDFscala> spark.udf.register("addName",(x:String)=> "N.原创 2021-11-18 16:39:49 · 926 阅读 · 0 评论 -
SparkSQL核心编程 (DataFrame DataSet RDD 及三者之间的关系)
目录一、概述二、DataFrame2.1 创建DataFrame1) 从Spark数据源进行创建2) 从RDD进行转换3) 从Hive Table进行查询返回2.2 SQL语法1) 读取JSON文件创建DataFrame2) 对DataFrame创建一个临时表(视图)3) 通过SQL语句实现查询全表4) 结果展示5) 对于DataFrame创建一个全局表6) 通过SQL语句实现查询全表2.3 DSL语法1) 创建一个DataFrame2) 查看DataFrame的Schema信息3) 只查看"usernam原创 2021-11-18 16:17:18 · 545 阅读 · 0 评论 -
SparkSQL 概述
一、SparkSQL是什么Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块。二、Hive and SparkSQL SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具。 Hive是早期唯一运行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,大量的SQL-o原创 2021-11-18 09:19:37 · 17619 阅读 · 0 评论 -
Spark 内存管理
一、堆内和堆外内存规划作为一个JVM 进程,Executor 的内存管理建立在JVM的内存管理之上,Spark对 JVM的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用。堆内内存受到JVM统一管理,堆外内存是直接向操作系统进行内存的申请和释放。1) 堆内内存 堆内内存的大小,由Spark应用程序启动时的–executor-memory或 spark.executo原创 2021-11-17 20:40:10 · 481 阅读 · 0 评论 -
Spark Shuffle解析
一、Shuffle的核心要点1.1 ShuffleMapStage与ResultStage 在划分stage时,最后一个stage称为finalStage,它本质上是一个ResultStage对象,前面的所有stage被称为ShuffleMapStage。 ShuffleMapStage的结束伴随着shuffle文件的写磁盘。 ResultStage基本上对应代码中的action算子,即将一个函数应用在RDD的各个partition的数据集上,意味着一个job的运行结束。二、HashShu原创 2021-11-17 20:20:56 · 1599 阅读 · 0 评论 -
Spark任务调度机制
概述在生产环境下,Spark集群的部署方式一般为YARN-Cluster模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式。在上一章中我们讲解了Spark YARN-Cluster模式下的任务提交流程,但是我们并没有具体说明Driver的工作流程, Driver线程主要是初始化SparkContext对象,准备运行所需的上下文,然后一方面保持与ApplicationMaster的RPC连接,通过ApplicationMaster申请资源,另一方面根据用户业务逻辑开始调度任务,将原创 2021-11-17 20:06:11 · 1836 阅读 · 0 评论 -
Spark 通讯架构
一、Spark通信架构概述Spark中通信框架的发展:Spark早期版本中采用Akka作为内部通信部件。Spark1.3中引入Netty通信框架,为了解决Shuffle的大数据传输问题使用Spark1.6中Akka和Netty可以配置使用。Netty完全实现了Akka在Spark中的功能。Spark2系列中,Spark抛弃Akka,使用Netty。Spark2.x版本使用Netty通讯框架作为内部通讯组件。Spark 基于Netty新的RPC框架借鉴了Akka的中的设计,它是基于Actor模原创 2021-11-17 19:44:11 · 461 阅读 · 0 评论 -
Spark 核心编程(RDD+累加器+广播变量)
Spark 核心编程概述一、RDD1.1 什么是RDD1.2 核心属性1.3 执行原理1.4 基础编程1.4.1 RDD创建1.4.2 RDD并行度与分区1.4.3 RDD转换算子(重点)Value类型:1) map2) mapPartitions3) mapPartitionsWithIndex4) flatMap5) glom6) groupBy7) filter8) sample9) distinct10) coalesce11) repartition12) sortBy双Value类型:13) i原创 2021-11-14 11:06:48 · 1332 阅读 · 0 评论 -
Spark 架构
一、运行架构Spark框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。如下图所示,它展示了一个 Spark执行时的基本结构。图形中的Driver表示master,负责管理整个集群中的作业任务调度。图形中的Executor 则是 slave,负责实际执行任务。二、核心组件2.1 DriverSpark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。Driver在Spark作业执行时主要负责:将用户程序转化为作业(job)在Exe原创 2021-11-13 09:21:47 · 3737 阅读 · 0 评论 -
Spark 安装部署(Local+Standalone+Yarn等)
概述Spark作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为Yarn,不过逐渐容器式环境也慢慢流行起来。接下来,我们就分别看看不同环境下Spark的运行下载地址:http://spark.apache.org/downloads.html一、Local模式想啥呢,你之前一直在使用的模式可不是Local模式哟。所谓的Local模式,就是不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等,之前在IDEA中运行代码的原创 2021-11-12 09:29:19 · 1025 阅读 · 0 评论 -
Spark快速上手
一、创建Maven项目1.1 增加Scala插件Spark由Scala语言开发的,所以本课件接下来的开发所使用的语言也为Scala,咱们当前使用的Spark版本为3.0.0,默认采用的Scala编译版本为2.12,所以后续开发时。我们依然采用这个版本。开发前请保证IDEA开发工具中含有Scala开发插件详细参考:https://blog.csdn.net/mengxianglong123/article/details/1210221221.2 增加依赖关系修改Maven项目中的POM文件,原创 2021-11-11 20:10:07 · 172 阅读 · 0 评论 -
Spark 概述
一、 Spark是什么Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。二、Spark and Hadoop在之前的学习中,Hadoop的MapReduce是大家广为熟知的计算框架,那为什么咱们还要学习新的计算框架Spark呢,这里就不得不提到Spark和Hadoop的关系。首先从时间节点上来看:Hadoop2006年1月,Doug Cutting加入Yahoo,领导Hadoop的开发2008年1月,Hadoop成为Apache顶级项目2011年1.0正式发布2012年原创 2021-11-11 19:55:50 · 2444 阅读 · 0 评论 -
DataX 实现从MySQL导入数据到HDFS
一、环境准备LinuxJDK(1.8以上,推荐1.8)Python(推荐Python2.6.X)yum安装Python:https://www.cnblogs.com/kaishirenshi/p/11858655.html# centos7# 换成阿里云的yum源yum -y install epel-releaseyum repolistyum -y install python36下载Datax:https://github.com/alibaba/DataX二、原创 2021-10-28 16:09:13 · 2571 阅读 · 0 评论 -
DataX 概述
一、什么是 DataXDataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、 Oracle 等)、 HDFS、 Hive、 ODPS、 HBase、 FTP 等各种异构数据源之间稳定高效的数据同步功能。github地址:https://github.com/alibaba/DataXREADME中有所有支持的数据库的使用指南二、 DataX 的设计为了解决异构数据源同步问题, DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间原创 2021-10-28 09:18:17 · 2218 阅读 · 0 评论 -
Hbase 整合Phoenix
一、Phoenix简介1.1 Phoenix定义Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。1.2 Phoenix特点1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce;2)操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改;3)支持HBase二级索引创建。1.3 Phoenix架构二、Phoenix快速入门2.1 安装1.官网地址http://p原创 2021-10-11 19:38:52 · 660 阅读 · 0 评论 -
Hbase 优化
一、预分区每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高HBase性能。1.手动设定预分区hbase> create 'staff1','info',SPLITS => ['1000','2000','3000','4000']2.生成16进制序列预分区create 'staff2','info',{NUMR原创 2021-10-11 18:39:50 · 1211 阅读 · 0 评论 -
Hbase API操作
一、环境准备新建项目后在pom.xml中添加依赖<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>2.0.5</version></dependency><dependency> <groupId>org.a原创 2021-10-11 18:29:56 · 487 阅读 · 0 评论