自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 问答 (1)
  • 收藏
  • 关注

原创 Canal原理及其使用

1 什么是canal  canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)2 canal使用场景  (1)阿里otter(阿里用于进行异地数据库之间的同步框架)中间件的一部分,这是原始场景  (2)更新缓存:如果有大量的请求发送到mysql的话,mysql查询速度慢,QPS上不去,

2021-02-08 12:21:16 36987 2

原创 Flink的异步I/O及Future和CompletableFuture

1 概述  Flink在做流数据计算时,经常要外部系统进行交互,如Redis、Hive、HBase等等存储系统。系统间通信延迟是否会拖慢整个Flink作业,影响整体吞吐量和实时性。  如需要查询外部数据库以关联上用户的额外信息,通常的实现方式是向数据库发送用户a的查询请求(如在MapFunction中),然后等待结果返回,返回之后才能进行下一次查询请求,这是一种同步访问的模式,如下图左边所示,网络等待时间极大的阻碍了吞吐和延迟。  Flink从1.2版本开始就引入了Async I/O(https:/

2021-02-03 16:27:52 1858

原创 Maven详解及实例

1 什么是Maven   Maven对项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。简单的来说Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),用来运行在生命

2021-01-18 16:57:27 1183

原创 DistCp迁移Hive数据过程中源集群增加删除文件等场景测试

1 概述  由于在数据迁移过程中,上层任务仍在运行,会出现源集群新增文件及删除文件的情况,因此进行测试2 需要同步的数据文件说明  源集群:192.168.40.100:8020,目标集群:192.168.40.200:8020  数据目录及其大小如下1.8 G 5.5 G /user/hive/warehouse/iot.db/dwd_pollution_distcp  这个文件对应的表为dwd_pollution_distcp,共有20140801-20140930这些分区3

2020-10-23 17:57:48 1840

原创 Hadoop DistCp工具简介及其参数

1 概述  DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。官网地址:http://hadoop.apache.org/docs/r2.7.0/hadoop-distcp/DistCp.html2 适合的场景及其有点  适合场景:数据异地灾;机房下线,数据迁移等。  优点:①可以限制带宽,使用bandwidth参数对distcp

2020-10-23 16:10:35 10111 1

原创 java之NIO(Channel,Buffer,Selector)

NIO1 什么是NIO传统io称为bio:blocking:阻塞式io,等待线程准备数据。NIO是产生于jdk1.4,基于通道,面向缓冲区的非阻塞式IO2 BIO与NIO的区别(1)io面向流,流是单向的;NIO是面向缓冲区的,通道可以将数据读取到缓存区实现双向传输(2)i...

2020-10-23 15:19:27 949

原创 DolphinScheduler对比Airflow

DolphinScheduler AirFlow稳定性 单点故障 去中心化的多Master和多Worker 是(单一调度程序)HA额外要求 不需要(本身就支持HA) Celery / Dask / Mesos + Load Balancer + DB过载处理 任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会造成机器卡死 任务太多时会卡死服务器易用性 DAG监控界面 任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然 不能直观区分任务.

2020-09-25 13:54:10 9509 2

原创 ClickHouse的特性及读写

1 ClickHouse特性  OLAP数据库一般有2个要求:①容量要比关系型数据库大,②在线查询的速度要快。ClickHouse这两点都满足并且还支持标准的sql,支持比较复杂的语句,支持分布式。ClickHouse的几个显著特点如下:  (1)列式存储  列式存储的优点:①列式存储不同于行式存储,以行为单位进行存储,行式存储更变故搜索查询。列式存储以列为单位进行存储,这样更适合做聚合计算,如求和是针对一列的数据进行求和,这一列的数据又放在一起。②行式存储每个字段类型不一致,列式存储不同的类型是不在

2020-09-25 12:12:35 6413 1

原创 Flink的Table API 与SQL的流处理

1 流处理与SQL的区别  Table API和SQL,本质上还是基于关系型表的操作方式;而关系型表、SQL本身,一般是有界的,更适合批处理的场景。所以在流处理的过程中,有一些特殊概念。SQL流处理处理对象字段元组的有界集合字段元组的无限序列查询对数据的访问可以访问完整的数据输入无法访问所有数据,必须持续等待流式输入查询终止条件生成固定大小的结果集后终止永不停止,根据持续收到的数据不断更新查询结果  尽管存在这些差异,使用关系查询和SQL处理流并不是不

2020-08-07 22:57:15 4926

原创 Flink的Table API 与SQL介绍及调用

1 概述   DataSetAPI和DateStreamAPI是基于整个Flink的运行时环境做操作处理的,Table API和SQL是在DateStreamAPI上又包了一层。对于新版本的Blink在DateStream基础上又包了一层实现了批流统一,上层执行环境都是基于流处理,做批流统一的查询。Table API是流处理和批处理通用的关系型API,与常规SQL语言中将查询指定为字符串不同,Table API查询是以Java或Scala中的语言嵌入样式来定义。 是一套内嵌在 Java 和 Scala 语

2020-08-02 16:18:21 3168

原创 Flink的状态一致性

1 状态的一致性1.1 一致性级别  流处理操作一般分为at-most-once,at-least-once和exactly-once这3个级别。  at-most-once:至多一次,发生故障恢复后数据可能丢失  at-least-once:至少一次,发生故障恢复后数据可能多算,绝对不会少算  exactly-once:精确一次,发生故障恢复后数据不会丢失也不会多算1.2 端到端的状态一致性1.2.1 Spark Streaming的exactly-once  对于 Spark Strea

2020-08-01 23:28:24 1899

原创 Flink中的容错机制

1 checkpoint   Flink 故障恢复机制的核心,就是应用状态的一致性检查点checkpoint。  在Spark Streaming中仅仅是针对driver的故障恢复做了数据和元数据的Checkpoint,处理的是当前时间点所有分区当前数据的状态。在Flink中不能把当前所有分区的数据直接存下来,因为是有状态的流式计算所以除了当前处理的数据之外还应该有当前的状态。因为在状态编程中,我们可能会自定义状态,所以直接保存当前的数据和他的状态是不行的,还要知道在具体的操作流程里面到底执行到哪了,这

2020-08-01 23:27:24 1946

原创 Flink中的状态管理

1 Flink中的状态  当数据流中的许多操作只查看一个每次事件(如事件解析器),一些操作会跨多个事件的信息(如窗口操作)。这些操作称为有状态。状态由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态。可以简单的任务状态就是一个本地变量,可以被任务的业务逻辑访问。  有些算子有些任务是没有状态的,如map操作,只跟输入数据有关。像窗口操作不管是增量窗口函数还是全窗口函数都要保持里面的信息的,一开始在窗口到达结束时间之前是不输出数据的,所以最后输出数据的时候,他的计算是要依赖之前的,全窗

2020-08-01 23:23:18 7200 3

原创 Flink的ProcessFunction API

1 ProcessFunction   ProcessFunction是一个低阶的流处理操作,可以访问事件(event)(流元素),状态(state)(容错性,一致性,仅在keyed stream中),定时器(timers)(event time和processing time, 仅在keyed stream中)。也就是说可以访问普通的转换算子无法访问事件的时间戳信息和Watermark的。   ProcessFunction可以看作是一个具有keyed state 键控状态和 timers定时器访问权

2020-07-28 00:03:33 1372

原创 Flink的时间语义和Watermark

1 时间语义   数据迟到的概念是:数据先产生,但是处理的时候滞后了   在Flink的流式处理中,会涉及到时间的不同概念,如下图所示:   Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通过时间戳分配器访问事件时间戳。   Ingestion Time:是数据进入Flink的时间。   Processing Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是Process

2020-07-28 00:02:18 1552

原创 Flink的Window

1 Window概述    streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为有限块进行处理的手段。    Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。    注意:window一般在keyBy(KeyedStram)后。如果实在DataStream后的话是windowAll(不建议使用,会将所有数据汇

2020-07-27 23:57:20 1367

原创 Flink常见流处理API

Flink 流处理API的编程可以分为environment,source,transform,sink四大部分1 Flink支持的数据类型  在Flink底层因为要对所有的数据序列化,反序列化对数据进行传输,以便通过网络传送它们,或者从状态后端、检查点和保存点读取它们。所以Flink要有一套自己的类型提取系统,就是TypeInformation机制。Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器、反序列化器和比较器。这里其实就是说在转换过程中必须是他支持的数据类型才能转

2020-07-27 23:53:14 1793

原创 Flink运行时架构

1 运行时相关的组件    Flink运行时架构主要包括四个不同的组件:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)  (1)资源管理器(ResourceManager)  主要负责TaskManager的slot(插槽),slot是Flink中处理资源的单元。Flink为不同的环境和资源管理工具提供了不同资源管理器。当JobManager申请插槽资源的时候,ResourceManager会将

2020-07-27 23:50:32 1943 1

原创 Flink简介

初识Flink1 什么是Flink    Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。   它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。2 Flink的特点2.1 事件驱动  事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。  事件驱动型应用是在计算存

2020-07-27 23:43:13 1588 1

原创 Kapacitor安装及使用

1 安装1.1 Tar包安装  (1)下载wget https://dl.influxdata.com/kapacitor/releases/kapacitor-1.5.5_linux_amd64.tar.gz  (2)安装$ tar xvfz /opt/package/kapacitor-1.5.5-static_linux_amd64.tar.gz -C /home/tigk/.local/$ mv /home/tigk/.local/kapacitor-1.5.5-1/ /home/ti

2020-07-05 20:57:45 2705

原创 InfluxDB安装及使用

1 安装1.1 Tar包安装  (1)获取tar包wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0_linux_amd64.tar.gz  (2)解压tar包  tar xvfz influxdb-1.8.0_linux_amd64.tar.gz$ su - tigk$ tar xvfz /opt/package/influxdb-1.8.0_linux_amd64.tar.gz -C /home/tigk/.lo

2020-07-05 20:55:03 7054

原创 Telegraf安装及使用

1 安装1.1 创建用户  (1)添加用户# useradd tigk  (2)授权  个人用户的权限只可以在本home下有完整权限,其他目录需要别人授权。经常需要root用户的权限,可以通过修改sudoers文件来赋予权限,使用sudo命令。 # 赋予读写权限# chmod -v u+w /etc/sudoersmode of ‘/etc/sudoers’ changed from 0440 (r--r-----) to 0640 (rw-r-----)  修改sudoers

2020-07-04 22:57:56 5888

原创 TIGK监控平台介绍

1 概述  众所周知监控平台对大数据平台是非常重要的,监控是故障诊断和分析的重要辅助利器,在发生事故之前就能预警,最大限度降低系统故障率。  监控系统我们可以分为业务层面,应用层面,系统层面1.1 业务层面  业务系统是为了达成某种业务目标,因此监控业务系统最有效的方式是从数据上监控业务目标是否达成,因为业务系统的是多样的所以应由各个业务系统实现监控指标开发。1.2 应用层面  需要对应用的整体运行状况进行了解、把控。一般通过抽象出的统一指标收集组件,收集应用级指标,如JVM堆内存、GC、CPU

2020-07-04 17:24:47 2211

原创 confluent connect写出到ES及ClickHouse

1 连接Elasticsearch测试1.1 启动confluent/home/kafka/.local/confluent/bin/confluent startThis CLI is intended for development only, not for productionhttps://docs.confluent.io/current/cli/index.htmlUsing CONFLUENT_CURRENT: /tmp/confluent.swpIapNwStarting z

2020-06-29 20:49:19 2177 1

原创 Confluent介绍及其使用

1 confluent介绍Confluent是用来管理和组织不同数据源的流媒体平台,可以实时地把不同源和位置的数据集成到一个中心的事件流平台。并且很可靠、性能很高。Confluent目前提供了社区版(免费)和商业版()收费两个版本,社区版提供了Connectors、REST Proxy、KSQL、Schema-Registry等基础服务。商业版为企业提供了控制面板、负载均衡,跨中心数据备份、安全防护等高级特性。1.2 服务功能介绍1.2.1 ZookeeperZookeeper是一个开放源码的分布

2020-06-29 20:41:59 8467

原创 ClickHouse常见问题及其解决方案

1 概述  在对ClickHouse进行分布表+复制表+zookeeper保证高可用的情况下进行性能测试时遇到如下坑,进行整理2 分布表join问题Unknown identifier: LO_CUSTKEY, context:…1.1 问题描述  SQL如下:SELECT count(1)FROM performance.line_all AS c LEFT JOIN performance.customer_all AS l ON l.C_CUSTKEY = c.LO_CUSTKEY 

2020-05-29 07:52:56 44698 2

原创 ClickHouse表引擎之Integration系列

​ Integration系统表引擎主要用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源。1 Kafka1.1 Kafka引擎​ 将Kafka Topic中的数据直接导入到ClickHouse。​ 语法如下:CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],

2020-05-24 21:01:27 2268

原创 ClickHouse高可用及副本测试

1 概述​ 对于默认的分布式表的配置,每个分片只有一份,这种多分片单副本集群,挂掉一个节点的话查询分布式表会报错。为了解决这个问题的话可以使用ClickHouse高可用集群,对于每个分片具有2个或2个以上的副本,当某个节点挂掉时,该节点分片由其他节点的副本代替工作,这就避免了单点故障的问题。下面测试节点分别为:ambari01,ambari02,ambari03,ambari04​ 说明:下面的测试都是以internal_replication=true进行的。internal_replicatio

2020-05-22 22:48:08 3765

原创 ClickHouse表引擎

1 概述​ 表引擎在ClickHouse中的作用十分关键,表引擎有如下作用:​ (1)数据如何存储,存在哪,数据写到哪, 怎样读取数据;​ (2)支持哪些查询以及如何支持;​ (3)并发数据访问;​ (4)索引的使用;​ (5)是否可以执行多线程的请求;​ (6)数据如何同步。2 表引擎系列2.1 MergeTree系列​ MergeTree系列是对于高负载任务的最通用和最实用的表引擎。这些引擎共享的属性是快速数据插入和后续的后台数据处理。想要高效地一批批写入数据片段,并

2020-05-22 22:23:15 3425

原创 ClickHouse入门

1 什么是ClickHouse​ ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),他的优势就是快,每秒处理的数据量特别大,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。​ 与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:列式存储数据库,数据压缩;关系型、支持SQL;分布式并行计算,把单机性能压榨到极限;高可用;数据量级在PB级别。适用场景:日志数据的行为分析,标签画像的分析,数据集市层分析

2020-05-22 22:20:15 1863

原创 Airflow简介

1、什么是Airflow Airflow 是一个 Airbnb 的 Workflow 开源项目,使用Python编写实现的任务管理、调度、监控工作流平台。Airflow 是基于DAG(有向无环图)的任务管理系统,可以简单理解为是高级版的crontab,但是它解决了crontab无法解决的任务依赖问题。与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依 赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。2、Airflow与同类产品的

2020-05-17 18:22:43 38886 1

原创 Task执行流程

1、源码走读(1)当Driver中的SchedulerBackend(Standalone模式为CoarseGrainedSchedulerBackend)给ExecutorBackend(Standalone模式为CoarseGrainedExecutorBackend)发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,E...

2020-04-10 23:47:20 1656

原创 TaskScheduler相关

目录1、DAGScheduler与TaskScheduler2、TaskScheduler与SchedulerBackend3、任务调度过程总结1、DAGScheduler与TaskSchedulerDAGScheduler面向我们整个Job划分出了Stage,划分了Stage是从后往前划分的,执行的时候是从前往后,每个Stage内部有一系列任务,Stage里面的任务是并...

2020-04-08 23:49:44 1054

原创 Stage划分和Task最佳位置

1、Job Stage划分Spark Application中因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行。而Stage划分的依据就是宽依赖。下面以RDD的collect方法为例:(1...

2020-04-06 13:34:46 1375

原创 Spark Executor解析

目录1、Spark Executor如何工作2、Spark Executor工作源码1、Spark Executor如何工作当Driver发送过来Task的时候,其实是发送给CoarseGrainedExecutorBackend这个RPCEndpoint,而不是直接发送给Executor(Executor由于不是消息循环体永远也无法接收远程发过来的信息)。Driver向...

2020-04-06 01:06:40 1793

原创 Spark Worker源码

目录1、概述2、LaunchDriver3、LaunchDriver4、总结1、概述worker肯定是实现RPC通信的,否则别人没法给你发消息。他继承的是ThreadSafeRpcEndpoint,ThreadSafeRpcEndpoint是线程安全的,意味着处理一条消息完成后再处理下一个消息。换句话说,在处理下一条消息时,可以看到对ThreadSafeRpcEn...

2020-04-05 19:49:27 947

原创 Spark Master的注册机制与状态管理

1、Master接收注册的主要对象Master主要接受注册的对象是:Application,Driver,Worker。注意:Executor不是注册给master而是注册给Driver中的SchedulerBackend2、Master接收Worker的注册Worker启动后主动向Master注册,所以在生产环境下不需要重启集群就能够使用新的Worker。(1)worker是...

2020-04-05 19:32:46 958

原创 Spark资源调度分配

1、任务调度与资源调度任务调度:是指通过DAGScheduler,TaskScheduler,SchedulerBackend等进行的作业调度。资源调度:是指应用程序获取资源。任务调度是在资源调度的基础上,没有资源调度,那么任务调度就没有任何意义了。2、分配Driver(只对cluster模式有效)Spark的Driver的运行有2种模式,一种是Client模式(Driver程...

2020-03-31 00:20:28 3846 2

原创 SparkContext解析

1、SparkContext概述Spark的程序编写是基于SparkContext的,体现在2方面:①Spark编程的核心基础(RDD),第一个RDD是由SparkContext创建的;②Spark程序的调度优化也是基于SparkContext,RDD在一开始不会立即运行,会交给框架,主要是SparkContext。Spark程序的注册是在SparkContext实例化时候生成的对象来完成...

2020-03-31 00:00:44 2300

原创 Spark2.x RPC解析

1、概述在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。Spark 2.0 之后,master 和worker 之间完全不使用akka 通信,改用netty实现。因为使用Akka要求message发送端和接收端有相同的版本,为了避免Akka造成的版本问题,给用户的应用更大灵活性,决定使...

2020-03-27 23:59:29 1057

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除