- 博客(102)
- 收藏
- 关注
原创 Redis搭配RedisTemplate实现分布式锁实战实例
一、SETNX在Redis中一般会使用setnx命令实现分布式锁。当使用setnx命令设置一个kv时如:setnx lockKey lockValue当lockKey存在时,会返回1时表示设置成功。当lockKey不存在时,会返回0时表示设置值失败。根据以上理论就可以实现redis的分布式锁:加锁第一版:只使用setnx,这种方式的缺点是容易产生死锁,因为有可能忘记解锁,或者解锁失败。setnx key value第二版:给锁增加了过期时间,避免出现死锁
2022-01-13 18:00:53
11354
原创 Seata分布式事务失效,不生效(事务不回滚)的常见场景
一、微服务没有正常获取XID检查方法:在每个微服务中调用方法 RootContext.getXID() 检查XID例如,服务A调用了服务B和服务C那么可以分别在服务A、服务B、服务C的事务方法中添加===============服务A@Servicepublic class ServiceAImpl implements IServiceA{ private static final Logger log = LoggerFactory.getLogger(Serv
2022-01-09 22:55:40
13866
2
原创 Seata启动错误Communications link failure解决方法
1.检查jdbc驱动版本和mysql版本是否一致2.检查jdbc连接地址是否正确有可能是因为版本问题,连接地址参数中没有加上时区:jdbc:mysql://127.0.0.1:3306/ry-seata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B83.检查driverClassN..
2022-01-08 17:54:32
2105
原创 Java大数据-DataX从 Oracle 中读取数据存到 MySQL、读取 Oracle 的数据存入 HDFS 中
一、读取数据存到 MySQL1.MySQL 中创建表 [oracle@hadoop102 ~]$ mysql -uroot -p000000mysql> create database oracle;mysql> use oracle;mysql> create table student(id int,name varchar(20));2.编写 datax 配置文件[oracle@hadoop102 ~]$ vim /opt/module/datax/job
2022-01-04 16:52:01
1786
原创 Java大数据-DataX读取 MySQL 中的数据存放到 HDFS、读取 HDFS 数据写入 MySQL
一、读取MySQL 中的数据存放到 HDFS官方模板[atguigu@hadoop102 ~]$ python /opt/module/datax/bin/datax.py -r mysqlreader -w hdfswriter{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "column": [], "connection": [ { "jdbcUrl": [], .
2022-01-04 16:43:34
2140
原创 Java大数据-DataX从stream流读取数据并打印到控制台
一、查看配置模板[atguigu@hadoop102 bin]$ python datax.py -r streamreader -w streamwriterDataX (DATAX-OPENSOURCE-3.0), From Alibaba !Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.Please refer to the streamreader document: https://github.com/ali
2022-01-04 16:32:02
917
原创 Java大数据-DataX入门
一、DataX概述 简介 DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据 库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高 效的数据同步功能。 设计 为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路, DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要 将此数据源对接到 DataX,便能跟已有
2022-01-04 16:25:20
619
原创 Kafka的生产者与消费者解析
一、生产者1.分区策略 分区的原因 (1)方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic 又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了。(2)可以提高并发,因为可以以 Partition 为单位读写了。 分区的原则 我们需要将 producer 发送的数据封装成一个 ProducerRecord 对象。(1)指明 partition 的情况下,直接将指明的值直接作为 p.
2021-12-29 10:26:20
1129
原创 Kafka工作流程及文件存储机制
Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文 件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该 log 文件末端,且每条数据都有自己的 offset。消费者组中的每个消费者,都会实时记录自己 消费到了哪个 offset,以便出错恢复时,从上次...
2021-12-29 09:40:51
95
原创 Kafka的点对点模式、发布订阅模式、基础架构
一、定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于 大数据实时处理领域。二、消息队列 使用消息队列的好处 1)解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2)可恢复性 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所 以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。3)缓冲有助于控制和优化数据流经过系统的速度,解决生产...
2021-12-27 15:21:58
5647
1
原创 Java大数据-HBase 在java中创建表、删除表、向表中插入数据、删除多行数据、获取所有数据、获取某一行数据、获取某一行指定“列族:列”的数据
一、环境准备在pom中添加依赖<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>1.3.1</version></dependency><dependency> <groupId>org.apache.hbase</gro
2021-12-27 10:24:42
1046
原创 Java大数据-HBase读写流程、MemStore Flush、StoreFile Compaction、Region Split
一、写流程(1)Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 Region Server(2)访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey, 查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 region 信息以 及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问(3)与目标 Region .
2021-12-24 17:08:32
175
原创 Java大数据-HBase入门
一、HBase 定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。二、HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。 但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。三、HBase 逻辑结构四、HBase 物理存储结构五、数据模型(1)Name Space 命名空间,类似于关系型数据库的 Data.
2021-12-24 16:31:16
309
原创 Java大数据-Flume事务
Flume Agent 内部原理(1)ChannelSelector ChannelSelector 的作用就是选出 Event 将要被发往哪个 Channel。其共有两种类型, 分别是 Replicating(复制)和 Multiplexing(多路复用)。ReplicatingSelector 会将同一个 Event 发往所有的 Channel,Multiplexing 会根据相应的原则,将不同的 Event 发往不同的 Channel。(2)SinkProcessor...
2021-12-24 16:06:59
92
原创 Java大数据-Flume基础架构、监听数据端口、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件
一、Flume 定义 Flume 是Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构,灵活简单。基础架构(1)AgentAgent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的。Agent 主要有 3 个部分组成,Source、Channel、Sink。(2)SourceSource 是负责接收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种...
2021-12-24 15:28:50
373
原创 Java大数据-Sqoop数据导入与导出
一、Sqoop简介Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项
2021-12-23 10:47:34
496
原创 Java大数据-HiveDML数据导入与导出、Truncate
一、数据导入1.向表中装载数据(Load)语法load data [local] inpath '/opt/module/datas/student.txt' overwrite | into table student [partition (partcol1=val1,…)](1)load data:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overwrite:表示覆盖表
2021-12-22 16:38:32
282
原创 Java大数据-Hive分区表基本操作、注意事项
分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。一、分区表基本操作1.引入分区表(需要根据日期对日志进行管理)/user/hive/warehouse/log_partition/20170702/20170702.log/user/hive/warehouse/log_partit.
2021-12-22 15:48:52
433
原创 Java大数据-Hive创建表、管理表、外部表、管理表与外部表的互相转换
一、创建表1.建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORT
2021-12-22 15:15:11
492
原创 Java大数据-Hive所有数据类型解析及类型转化
一、基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。二、集合数据类型Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。三、案例 假设某表有如下一行,我们用JSON格式来...
2021-12-22 11:26:21
762
原创 Java大数据-Hive入门
1.1 什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序1)Hive处理的数据存储在HDFS2)Hive分析数据底层的实现是MapReduce3)执行程序运行在Yarn上1.2 Hive的优缺点1.2.1 优点操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。.
2021-12-22 10:53:04
384
原创 Java大数据-Hadoop-Yarn 调度器和调度算法FIFO、容量调度器、公平调度器
目前,Hadoop 作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler。 CDH 框架默认调度器是 Fair Scheduler。 具体设置详见:yarn-default.xml 文件<property> <description>The class to use as the resource scheduler.&
2021-12-21 14:55:58
967
2
原创 Java大数据-Hadoop-Yarn基础架构、工作机制、作业提交全过程
一、基础架构二、工作机制(1)MR 程序提交到客户端所在的节点。(2)YarnRunner 向 ResourceManager 申请一个 Application。(3)RM 将该应用程序的资源路径返回给 YarnRunner。(4)该程序将运行所需资源提交到 HDFS 上。(5)程序资源提交完毕后,申请运行 mrAppMaster。(6)RM 将用户的请求初始化成一个 Task。(7)其中一个 NodeManager 领取到 Task 任务。(8)该 N...
2021-12-21 14:31:03
203
转载 Java大数据-Hadoop-HDFS- DN (DataNode)工作机制、数据完整性、掉线时限参数设置
一、DataNode(1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据 本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。(2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上 报所有的块信息。DN 向 NN 汇报当前解读信息的时间间隔,默认 6 小时<property><name>dfs.blockreport.intervalMsec</.
2021-12-21 10:13:49
358
转载 Java大数据-Hadoop-HDFS- NN (NameNode)和 2NN(SecondaryNameNode) 工作机制
思考:NameNode 中的元数据是存储在哪里的?首先,我们做个假设,如果存储在 NameNode 节点的磁盘中,因为经常需要进行随机访 问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在 内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的 FsImage。这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新 FsImage,就会导 致效率过低,但如果不更新,就会发生一致性问题,一旦 NameNode 节点断电,就会产生数 据丢失。
2021-12-21 09:29:26
115
原创 Java大数据-Hadoop-HDFS的读数据流程(原理)
一、HDFS 读数据流程(1)客户端通过 DistributedFileSystem 向 NameNode 请求下载文件,NameNode 通过查 询元数据,找到文件块所在的 DataNode 地址。(2)挑选一台 DataNode(就近原则,然后随机)服务器,请求读取数据。(3)DataNode 开始传输数据给客户端(从磁盘里面读取数据输入流,以 Packet 为单位 来做校验)。(4)客户端以 Packet 为单位接收,先在本地缓存,然后写入目标文件。...
2021-12-20 15:49:47
287
转载 Java大数据-Hadoop-HDFS的写数据流程(原理)、网络拓扑-节点距离计算、机架感知
(1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在。(2)NameNode 返回是否可以上传。(3)客户端请求第一个 Block 上传到哪几个 DataNode 服务器上。(4)NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3。(5)客户端通过 FSDataOutputStream 模块请求 dn1 上传数据,dn1 收到请求会继续调用 d...
2021-12-20 14:59:30
399
原创 Java大数据-Hadoop-HDFS客户端文件和文件夹判断
@Testpublic void testListStatus() throws IOException, InterruptedException, URISyntaxException{ // 1 获取文件配置信息 Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu.
2021-12-20 14:45:36
902
原创 Java大数据-Hadoop-HDFS客户端文件详情查看
查看文件名称、权限、长度、块信息@Testpublic void testListFiles() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configurat
2021-12-20 14:44:32
540
原创 Java大数据-Hadoop-HDFS客户端删除文件和目录
@Testpublic void testDelete() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");// 2 .
2021-12-20 14:43:35
819
原创 Java大数据-Hadoop-HDFS客户端操作文件更名和移动
@Testpublic void testRename() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu"); // 2.
2021-12-20 14:42:42
730
原创 Java大数据-Hadoop-HDFS客户端文件下载
@Testpublic void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException{ // 1 获取文件系统 Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atgu.
2021-12-20 14:41:08
520
原创 Java大数据-Hadoop-HDFS的参数优先级顺序
编写测试客户端代码@Testpublic void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException { // 1 获取文件系统 Configuration configuration = new Configuration(); configuration.set("dfs.replication", "2"); FileSystem fs = FileSystem..
2021-12-20 14:38:15
337
原创 Java大数据-Hadoop-HDFS的Shell 操作
基本语法 hadoop fs 具体命令 OR hdfs dfs 具体命令 两个是完全相同的。 命令大全 [atguigu@hadoop102 hadoop-3.1.3]$ bin/hadoop fs[-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]...
2021-12-20 12:06:17
974
原创 Java大数据-Hadoop-HDFS文件块大小
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数 ( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。为什么块的大小不能设置太小,也不能设置太大?(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开 始位置所需的时间。导致程序在处理这块数据时,会非常慢。总结:HDFS块的大小设置主要取决于磁盘传输速率。...
2021-12-20 11:38:13
685
原创 animate.css旧版失效、Vue搭配新版animate.css实现动画效果
一、安装在vue脚手架目录下cmd运行npm install animate.css --save在main.js下全局引入并挂载import animated from 'animate.css' Vue.use(animated)二、使用在需要实现动画效果的组件上加上类名,用法类似于Bootstrap<span class="animate__animated animate__zoomIn">test</span>更改动画类型bou
2021-12-13 17:14:38
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人