
大数据离线实时数据采集体系
文章平均质量分 88
在大数据数据分析中,数据采集分为离线数据采集和实时数据采集两类,针对离线数据采集,典型的代表工具为Sqoop,针对实时数据采集,典型的代表工具为Flume,当然还有其他类似以上两种的数据采集工具,这些工具都有一个特点:将数据由某个源头采集到大数据存储系统中,本栏目将学习各种数据采集工具。
Lansonli
优快云大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
大数据Maxwell(二):使用Maxwell增量和全量同步MySQL数据
注意:maxwell-bootstrap命令执行后,可以在对应的topic中查看到数据,这里对应的topic是maxwell进程对应config.properties文件中配置的topic。Maxwell不支持高可用搭建,但是支持断点还原,可以在执行失败时重新启动继续上次位置读取数据。停止maxwell进程,在当前config.properties配置文件最后一行添加配置“client_id”,此配置项是指定当前maxwell启动后连接mysql的实例id,名字自取,在全量同步数据时需要使用到。原创 2023-03-18 04:30:00 · 2106 阅读 · 14 评论 -
大数据Maxwell(一):Maxwell介绍和工作原理
Maxwell是由美国Zendesk开源,使用Java编写的MySQL实时抓取工具,可以实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。Maxwell工作原理与Canal工作原理一样,都是把自己伪装成MySQL 的slave从库,同步binlog数据,来达到同步MySQL数据,与Canal相比,更加轻量。支持客户端,支持定制/kafka。原创 2023-03-13 10:06:44 · 2174 阅读 · 6 评论 -
大数据Canal(四):Canal HA原理及安装
Canal一般用于实时同步数据场景,那么对于实时场景HA显得尤为重要,Canal支持HA搭建,canal的HA分为两部分,canal server和canal client分别有对应的HA实现。将Canal安装包上传到node3,node4,并解压到“/software/canal”目录下,修改“/software/canal/conf”下的canal.properties文件,加上zookeeper配置。运行Canal的机器:node3,node4。经过以上测试,Canal HA 生效。原创 2023-03-11 07:30:00 · 755 阅读 · 8 评论 -
大数据Canal(三):使用Canal同步MySQL数据
首先需要在Canal中配置CanalServer 对应的canal.properties,这个文件中主要配置Canal对应的同步数据实例(Canal Instance)位置信息及数据导出的模式,例如:我们需要将某个mysql中的数据同步到Kafka中,那么就可以创建一个“数据同步实例”,导出到Kafka就是一种模式。下面我们使用Canal同步MySQL数据到Kafka为例,学习下Canal如何同步MySQL数据。注意:“canal_topic”不需要提前创建,默认创建就是1个分区。原创 2023-03-10 07:00:00 · 3548 阅读 · 86 评论 -
大数据Canal(二):Canal下载安装
缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。在Mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志格式,也就是在Statement和Row之间选择一种。原创 2023-03-09 06:30:00 · 634 阅读 · 2 评论 -
大数据Canal(一):Canal介绍
1.1、MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)中继日志是从服务器I/O线程将主服务器的二进制日志读取过来,记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。1.3、MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据。原创 2023-03-08 07:00:00 · 596 阅读 · 7 评论 -
大数据DataX(七):HBase导入到MySQL
简而言之,HbaseReader 通过 HBase 的 Java 客户端,通过 HTable, Scan, ResultScanner 等 API,读取你指定 rowkey 范围内的数据,并将读取的数据使用 DataX 自定义的数据类型拼装为抽象的数据集,并传递给下游 Writer 处理。将HBase中的数据导入到MySQL中,这里使用到“HBaseReader”和“MySQLWriter”,前面已经介绍过“MySQLWriter”,下面介绍“HBaseReader”。原创 2023-02-22 07:00:00 · 7074 阅读 · 8 评论 -
大数据DataX(六):MySQL导入到HBase
简而言之,HbaseWriter 通过 HBase 的 Java 客户端,通过 HTable,Put等 API,将从上游Reader读取的数据写入HBase你hbase11xwriter与hbase094xwriter的主要不同在于API的调用不同,Hbase1.1.x废弃了很多Hbase0.94.x的api。将Mysql数据 同步到HBase需要使用到“MysqlReader”和“HbaseWriter”两个插件,前面介绍过MysqlReader插件,这里不再赘述,下面介绍“HbaseWriter”。原创 2023-02-21 06:30:00 · 7181 阅读 · 6 评论 -
大数据DataX(五):Hive导入到MySQL
目前HdfsReader支持的文件格式有textfile(text)、orcfile(orc)、rcfile(rc)、sequence file(seq)和普通逻辑二维表(csv)类型格式的文件,且文件内容存放的必须是一张逻辑意义上的二维表。在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输协议传递给Writer。将Hive数据导入到MySQL需要使用到“hdfsreader”和“MySQLWriter”插件,下面介绍以上两种插件。原创 2023-02-20 06:00:00 · 1460 阅读 · 2 评论 -
大数据DataX(四):MySQL导入到Hive
MysqlReader插件实现了从Mysql读取数据。简而言之,MysqlReader通过JDBC连接器连接到远程的Mysql数据库,并根据用户配置的信息生成查询SELECT SQL语句,然后发送到远程Mysql数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。将MySQL的数据导入到Hive中使用到的“MysqlReader”和“hdfswriter”两个插件,先将mysql数据导入到HDFS中,创建Hive表映射对应的路径即可。原创 2023-02-19 06:00:00 · 1167 阅读 · 1 评论 -
大数据DataX(三):DataX安装及使用
注意:以上“ErrorLimit”设置指的是在Datax中Job支持用户对于脏数据的自定义监控和告警,包括对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值),当Job传输过程出现的脏数据大于用户指定的数量/百分比,DataX Job报错退出。DataX自带了一个“streamreader”读入数据、“streamwriter”写出数据的自检脚本,可以运行此脚本检查DataX是否正常运行。原创 2023-02-18 06:00:00 · 3875 阅读 · 66 评论 -
大数据DataX(二):DataX核心架构
DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本文按一个DataX作业生命周期的时序图,从整体架构设计非常简要说明DataX各个模块相互关系。举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。原创 2023-02-17 06:00:00 · 659 阅读 · 2 评论 -
大数据DataX(一):DataX的框架设计和插件体系
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。DataX Framework提供了简单的接口与插件交互,提供简单的插件接入机制,只需要任意加上一种插件,就能无缝对接其他数据源。DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。原创 2023-02-16 14:51:04 · 781 阅读 · 3 评论 -
大数据NiFi(二十二):Kafka中数据实时导入到HDFS中
连接后,并设置“PutHDFS”处理器“failure”和“success”路由关系为自动终止。此案例使用到“ConsumerKafka_1_0”和“PutHDFS”处理器。“ConsumerKafka_1_0”处理器可以将消费Kafka中的数据。案例:向Kafka某个topic中写入数据,实时导入到HDFS文件中。逗号分割的Kafka集群Broker列表。格式:host:port。Kafka topic名称,多个可以使用逗号分隔。设置读取Kafka topic数据的位置。原创 2023-02-28 06:30:00 · 1123 阅读 · 12 评论 -
大数据NiFi(二十一):监控日志文件生产到Kafka
该选项就是如果消息被单个Kafka节点接收到,FlowFile将被路由到成功,无论它是否被复制,但如果Kafka节点崩溃,可能会导致数据丢失。连接“TailFile”处理器和“PublishKafka_1_0”处理器,并设置“PublishKafka_1_0”处理器“failure”和“success”路由关系为自动终止。以上数据每写入一行,有个空行,这是由于“TailFile”处理器监控数据导致的,实际就是写入了3条数据,可以通过后期业务处理时,对数据进行trim处理即可。格式:host:port。原创 2023-02-27 07:30:00 · 610 阅读 · 4 评论 -
大数据NiFi(二十):实时同步MySQL数据到Hive
连接关系中,我们这里只关注“insert”和“update”的数据,后期获取对应的属性将插入和更新的数据插入到Hive表中,对于“delete”的数据可以路由到其他关系中,例如需要将删除数据插入到另外的Hive表中,可以再设置个分支处理。登录mysql ,使用“mynifi”库,创建表“test2”。以上获取的tablename名称为“test2”,后面这个sql是要将数据插入到Hive中的,所以这里在Hive中也应该创建“test2”的表名称,或者将表名称写成固定表,后期在Hive中创建对应的表即可。原创 2023-02-26 21:23:28 · 7235 阅读 · 63 评论 -
大数据NiFi(十九):实时Json日志数据导入到Hive
如果所提供的JsonPath计算为指定的值,JSON的返回类型可以返回"scalar"。当一次性向tail的文件输入多条数据,我们不希望全部json行内容替换成第一行json内容,那么可以将“TailFile”处理器处理的数据直接传递给“ConvertRecord”处理器,将数据由json格式转换成自定义文本格式数据,再传递到“PutHDFS”处理器即可,所以解决以上问题,我们这里复用之前的“TailFile”和“PutHDFS”处理器即可,下面只需要配置“ConvertRecord”处理器即可。原创 2023-02-23 23:50:55 · 3064 阅读 · 2 评论 -
大数据NiFi(十八):离线同步MySQL数据到HDFS
案例:使用NiFi将MySQL中数据导入到HDFS中。以上案例用到的处理器有“QueryDatabaseTable”、“ConvertAvroToJSON”、“SplitJson”、“PutHDFS”四个处理器。原创 2023-02-13 10:17:26 · 798 阅读 · 10 评论 -
大数据NiFi(十七):NiFi术语
此外,NiFi在更新时会自动备份此文件,您可以使用这些备份来回滚配置,如果想要回滚,先停止NiFi,将flow.xml.gz替换为所需的备份,然后重新启动NiFi。在集群环境中,停止整个NiFi集群,替换其中一个节点的flow.xml.gz,删除自其他节点的flow.xml.gz,然后重启集群,节点之间会自动同步"flow.xml.gz"备份文件。控制器服务是扩展点,在用户界面中由DFM添加和配置后,将在NiFi启动时启动,并提供给其他组件(如处理器或其他控制器服务)需要的信息。原创 2023-02-12 01:17:09 · 501 阅读 · 4 评论 -
大数据NiFi(十六):处理器Connection连接
NiFi提供了两种背压配置机制,背压机制允许在队列中存在多少数据,当达到这个数据后,源头处理器就不再调度产生数据,防止数据溢出。"Back pressure object threshold"指定队列中的数据达到多少条数触发背压机制。可以指定如何对队列中的数据进行优先级排序以便处理优先级高的数据。设置FlowFile expiration 时间可以删除队列中无法及时处理的数据,默认设置为0,数据永远不会过期,当设置了一个过期时间,在Connect连接上可以看到一个小时钟图标。原创 2023-02-01 09:35:16 · 1096 阅读 · 10 评论 -
大数据NiFi(十五):NiFi入门案例二
GenerateFlowFile”默认调度会不间断运行产生数据,为了方便后期测试,这里设置好“PROPERTIES”配置后,还需要配置“SCHEDULING”中“Run Schedule”,当产生数据后,每隔10s调度一次,目的是产生数据慢一些,方便后期看到结果。以上需要用到的“GenerateFlowFile”、“ReplaceText”、“PutFile”处理器。将接收“GenerateFlowFile”处理器生成的“hello world”数据,替换其中的“world”为“nifi”。原创 2023-01-30 22:00:29 · 5949 阅读 · 2 评论 -
大数据NiFi(十四):数据来源和变量及表达式
当数据通过系统处理并被转换,路由,拆分,聚合和分发到其他端点时,这些信息都存储在NiFi的Provenance Repository中。为了搜索和查看此信息,我们可以从全局菜单中选择数据源(Data Provenance),也可以在对应的处理器上右键选择“View data provenance”进行查看。左下角的滑块允许我们查看这些事件发生的时间。通过左右滑动,我们可以看到哪些事件花费了较长的时间,这样我们可以分析瓶颈,得知哪些节点需要更多资源,例如配置处理器的并发任务数。原创 2023-01-29 15:35:05 · 1097 阅读 · 6 评论 -
大数据NiFi(十三):NiFi监控
这是一个滚动窗口,允许我们查看处理器消耗的FlowFiles数量,以及处理器发出的FlowFiles数量。它包含一些关于NiFi当前健康状况的重要统计数据:活动线程的数量可以指示NiFi当前的工作状态,排队统计数据表示当前在整个流程中排队的FlowFile数量以及这些FlowFiles的总大小。可以通过“公告指示”来查看事件处理日志信息,默认级别是“WARN”级别,可以在处理器配置中设置,当有对应级别的事件信息产生时,才会显示。:组内正在运行的处理器个数。:组内已经停止的处理器个数。:组内无效处理器数量。原创 2023-01-10 14:59:26 · 1079 阅读 · 2 评论 -
大数据NiFi(十二):集群页面组操作
以上重新创建新的DataFlow或者导入外部模板生成的DataFlow,都会与页面中已经存在的处理器“混”在一起,为了便于理解和维护DataFlow,可以创建组来将不同的DataFlow放入不同的组。在对应的组上双击可以进入一个组,可以在组内继续创建组形成嵌套组,或者将组内的组件移动到组外,进入组之后在左下角会显示组的层级关系。停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活。本文由 Lansonli 原创,首发于 优快云博客。最终页面形成两个组。原创 2023-01-09 11:42:28 · 630 阅读 · 2 评论 -
大数据NiFi(十一):NiFi入门案例一
注意:数据写出的目录可以不需要提前在对应节点上创建,默认是可以自动创建,可以通过“Create Missing Directories”属性配置。将输出文件的权限设置为此属性的值,格式必须是UNIX rwxrwxrwx,用-来代替被拒绝的权限(例如rw-r--r--)或八进制数字(例如644),可以使用表达式,例如${file.permissions}。这里需要使用到的处理器是“GetFile”和“PutFile”,完成以上需求对“GetFile”和“PutFile”相关属性进行配置。原创 2023-01-08 15:32:12 · 1215 阅读 · 2 评论 -
大数据NiFi(十):集群页面导航、操作区介绍和模板操作
注意:以上“Operate”选项卡中的启用和禁用只能对组件作用,不能作用在组上。启动和停止如果选择了组件或者组,那么是对对应的组或者组件进行启动或停止,如果不选择,将会启动/停止所有。原创 2023-01-07 23:21:30 · 669 阅读 · 3 评论 -
大数据NiFi(九):NiFi集群页面的添加、配置处理器操作
鼠标双击处理器或者选择以上“Configure”,打开配置处理器选项,配置分为四个部分:SETTINGS,SCHEDULING,PROPERTIES,COMMENTS。此选项显示NiFi数据来源表,其中包含有关通过该处理器路由的FlowFiles的数据出处事件的信息。此选项允许用户建立或更改处理器的配置,也可以在对应的Processor上双击打开。此选项允许用户启用或禁用处理器,具体取决于处理器的当前状态。此选项允许用户查看和跳转到进入处理器的上游连接。此选项允许用户查看和跳转到处理器的下游连接。原创 2023-01-07 14:58:34 · 1095 阅读 · 3 评论 -
大数据NiFi(八):NiFi集群页面的组件工具栏介绍
一、处理器(Processor)处理器是最常用的组件,因为它负责数据的流入,流出,路由和操作,有许多不同类型的处理器,将处理器拖动到画布上时,会向用户显示一个对话框,以选择要使用的处理器类型。原创 2023-01-06 22:29:07 · 880 阅读 · 5 评论 -
大数据NiFi(七):NiFi集群页面管理节点操作
当“删除节点”后,页面中不再显示当前节点信息,在当前节点重启NiFi服务后,该节点重新加入NiFi集群中,那么如何彻底在NiFi集群中删除一个节点呢?可以在状态为“Offloading”的节点上重新启动NiFi服务或者点击“Connect”将该节点重新加入到集群中,也可以点击“删除-Delete”将该节点删除。点击“Delete”删除当前集群的节点,该节点在页面中不再显示,并且重新启动删除节点上的NiFi服务后,当前节点会重新加入集群。断开节点之后,可以对断开节点进行卸载、删除操作。原创 2023-01-04 12:58:37 · 661 阅读 · 2 评论 -
大数据NiFi(六):NiFi Processors(处理器)
EvaluateJsonPath:用户提供JSONPath表达式,这个表达式将对Json内容操作,将表达式计算的结果值替换FlowFile内容或将结果值提取到用户自己命名的Attribute中。PutSQL:将FlowFile的内容作为SQL语句(INSERT,UPDATE或DELETE)执行,该处理器将执行sql语句,同时支持参数化的SQL语句。ExtractText:用户提供一个或多个正则表达式,然后根据FlowFile的文本内容对其进行评估,然后将结果值提取到用户自己命名的Attribute中。原创 2023-01-03 23:50:57 · 790 阅读 · 1 评论 -
大数据NiFi(五):NiFi分布式安装
NiFi DataFlow Manager(DFM)用户可能会发现在单个服务器上使用一个NiFi实例不足以处理他们拥有的数据量。因此,一种解决方案是在多个NiFi服务器上运行相同的数据流。但是,这会产生管理问题,因为每次DFM想要更改或更新数据流时,他们必须在每个服务器上进行这些更改,然后单独监视每个服务器。通过集群NiFi服务器,可以增加处理能力以及单个接口,通过该接口可以更改数据流并监控数据流。集群允许DFM仅进行一次更改,然后将更改复制到集群的所有节点。原创 2023-01-03 02:25:20 · 6567 阅读 · 6 评论 -
大数据NiFi(四):NiFi单节点安装
Apache NiFi可以基于Linux和Window安装,这里建议基于Linux安装。安装NiFi的节点需要安装JDK8,NiFi0.x版本需要JDK7。NiFi安装可以单节点安装,也可以分布式安装。我们这里安装NiFi的1.13版本,需要JDK8。原创 2023-01-02 23:17:20 · 860 阅读 · 1 评论 -
大数据NiFi(三):NiFi关键特性
此项功能与data provenance(数据跟踪)功能一起,可以提供一项非常有用的基础功能,即用户能够对中间过程的内容进行下载和回放。与隔离方式相比,多租户授权支持数据流管理的自助服务模型,允许每个团队或组织在完全了解流的其余部分的情况下管理流,而无法访问流。由于数据流是高度面向模式的,并且在解决一个问题时会有多种不同的方式,能够共享一些好的通用处理模板将对用户会有很大的帮助。NiFi支持所有排队数据的缓冲以及当这些队列达到指定限制时提供背压的能力,或者指定过期时间,当数据达到指定期限时丢弃数据的能力。原创 2023-01-01 12:04:11 · 671 阅读 · 3 评论 -
大数据NiFi(二):NiFi架构
指定主节点是为了运行单节点任务,这种任务不适合在集群中运行的组件,例如:读取单节点文件,如果每个节点都读取数据文件会造成重复读取,这时可以配置主节点来指定从某个节点上执行。NiFi集群中的每个节点都对数据执行相同的任务,但每个节点都运行在不同的数据集上。源存储库是存储所有源事件数据的地方,同样此功能是可插拔的,并且默认可以在一个或多个物理分区上进行存储,在每个路径下的事件数据都被索引,并且可被查询。此外,我们可以通过集群中任何节点的UI与NiFi集群进行交互,所做的任何更改都会复制到集群中的所有节点。原创 2022-12-31 10:22:29 · 5990 阅读 · 1 评论 -
大数据NiFi(一):什么是NiFi
NiFi初始的项目名称是Niagarafiles,当NiFi项目开源之后,一些早先在NSA的开发者们创立了初创公司Onyara,Onyara随之继续NiFi项目的开发并提供相关的支持。原有系统的协议和数据格式,会伴随系统的升级有一定的调整,同时单个系统的升级会影响周边系统。Apache NiFi 是为数据流设计,它支持高度可配置的指示图,来指示数据路由、转换和系统中流转关系,支持从多种数据源动态拉取数据。不可避免出现数据太大,数据传输太慢,数据损坏、问题数据、数据碎片及数据格式错误问题。原创 2022-12-30 12:35:27 · 6707 阅读 · 2 评论