自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(808)
  • 收藏
  • 关注

原创 Airflow从入门到实战(万字长文)

Airflow 是一个以编程方式编写,安排和监视工作流的平台。使用 Airflow 将工作流编写任务的有向无环图(DAG)。Airflow 计划程序在遵循指定的依赖项,同时在一组工作线程上执行任务。丰富的命令实用程序使在 DAG 上执行复杂的调度变的轻而易举。丰富的用户界面使查看生产中正在运行的管道,监视进度以及需要时对问题进行故障排除变的容易。

2023-01-19 22:55:10 336

原创 Airflow启停脚本

这里记录了Airflow启停脚本的写法,写法为固定模板,在企业中,只需要对某个特定的字母进行改进即可。

2023-01-18 19:07:54 45

原创 Java配置log 将日志信息输出到指定日志文件中

【代码】Java配置log 将日志信息输出到指定日志文件中。

2023-01-12 14:31:29 97

原创 Filebeat从入门到实战

Filebeat是一种轻量型日志采集器,内置有多种模块(auditd、Apache、NGINX、System、MySQL 等等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点,是因为它将自动默认路径(因操作系统而异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在一起。不仅如此,数个 Filebeat 模块还包括预配置的 Machine Learning 任务。

2023-01-12 07:46:40 343

原创 Hudi集成Spark(二)Spark SQL方式

Catalog:可以和Spark或者Flink中做一个共享,共享之后,计算引擎才可以去读取计算Hive引擎。

2023-01-11 22:36:35 352

原创 Permission denied: user=hive, access=EXECUTE, inode=“/tmp“:root:supergroup:drwxrwx---

在执行Hadoop的创建目录、写数据等情况,可能会出现该异常,而在读文件的时候却不会报错,这主要是由于系统的用户名不同导致的,由于我们进行实际开发的时候都是用Windows操作系统,而编译后的JAVA程序是部署在Linux上的。而Windows的用户名一般都是自定义的或者是administrator,Linux的用户名是root,对于Hadoop的部署,也有可能是hadoop用户名。Hive同步Hudi时发生如下错误,用方法即可同步成功!hdfs-site.xml中的权限检查改为false即可。

2023-01-11 22:24:27 51

原创 Hudi集成Spark(一)Spark Shell方式

查找以前提交中相同的_hoodie_record_keys 在该表的_hoodie_commit_time、rider、driver 字段中的变化。我们希望类似 hive 的 "insert overwrite "操作,以忽略现有数据,只用提供的新数据创建一个提交。查询特定时间点的数据,可以将 endTime 指向特定时间,beginTime 指向 000(表示最早提交时间)新增数据,生成一些数据,将其加载到 DataFrame 中,然后将 DataFrame 写入 Hudi 表。

2023-01-11 16:15:32 243

原创 Hudi的核心概念 —— 数据读

2)有 base file:走 copy on write upsert 流程,先读 log file 建 index,再读 base file,最后读 log file 写新的 base file。0.8.0 版本的 Hudi Flink writer 支持实时的增量订阅,可用于同步 CDC 数据,日常的数据同步 ETL pipeline。Flink 的 streaming 读做到了真正的流式读取,source 定期监控新增的改动文件,将读取任务下派给读 task。1)没有 base file。

2023-01-09 22:26:54 400

原创 Hudi的核心概念 —— 数据写 ★★★★★

通过对写流程的梳理可以了解到 Apache Hudi 相对于其他数据湖方案的核心优势:1)写入过程充分优化了文件存储的小文件问题,Copy On Write 写会一直将一个bucket (FileGroup)的 base 文件写到设定的阈值大小才会划分新的 bucket;Merge On Read 写在同一个 bucket 中,log file 也是一直append 直到大小超过设定的阈值 roll over。

2023-01-09 22:17:56 204

原创 Hudi的核心概念 —— 表类型(Table Types)

对每一个新批次写入都将创建相应数据文件的新版本(新的 FileSlice),新版本文件包括旧版本文件的记录以及来自传入批次的记录(全量最新)。对于写时复制(COW),它可以替代现有的 parquet 表(或相同基本文件类型的表),同时提供 upsert/delete 和其他写入方面的功能,可以理解为查询最新版本的 Parquet 数据文件。读取端将实时合并基本文件及其各自的增量日志文件。MOR 表中,包含列存的基本文件(.parquet)和行存的增量日志文件(基于行的 avro 格式,.log.*)。

2023-01-09 16:40:58 309

原创 Hudi的核心概念 —— 索引(Index)

事实上,有范围裁剪功能的布隆索引是最佳的解决方案。从 index 的维护成本和写入性能的角度考虑,维护一个 global index 的难度更大,对写入性能的影响也更大,所以需要 non-global index。上图为例,白色是基本文件,黄色是更新数据,有了索引机制,可以做到:避免读取不需要的文件、避免更新不必要的文件、无需将更新数据与历史数据做分布式关联,只需要在 File Group 内做合并。全局索引:全局索引在全表的所有分区范围下强制要求键的唯一性,也就是确保对给定的键有且只有一个对应的记录。

2023-01-09 14:13:26 235

原创 Hudi的核心概念 —— 文件布局(File Layout)

(1)元数据:.hoodie 目录对应着表的元数据信息,包括表的版本管理(Timeline)、归档目录(存放过时的 instant 也就是版本),一个 instant 记录了一次提交(commit)的行为、时间戳和状态,Hudi 以时间轴的形式维护了在数据集上执行的所有操作的元数据;(2)多个日志文件(.log.*),这些日志文件包含自生成基本文件以来对基本文件的插入/更新(COW 没有)(2)clean 操作:清除不使用的/旧的文件片以回收文件系统上的空间。Hudi 将一个表映射为如下文件结构。

2023-01-09 11:40:15 290

原创 Hudi的核心概念 —— 时间轴(TimeLine)

上图中采用时间(小时)作为分区字段,从 10:00 开始陆续产生各种 commits,10:20 来了一条 9:00 的数据,根据 event time 该数据仍然可以落到 9:00 对应的分区,通过timeline 直接消费 10:00 (commit time)之后的增量更新(只消费有新 commits 的 group),那么这条延迟的数据仍然可以被消费到。就是一个时间线,它的每一个操作都记录在内,每一个时刻,你做了什么事情,对某一个时刻,记录一个时刻的数据。

2023-01-09 10:59:42 174

原创 JDBC使用优化以及工具类封装

JDK 1.2的版本中就提供java.lang.ThreadLocal,为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。通常用来在在多线程中管理共享数据库连接、Session等ThreadLocal用于保存某个线程共享变量,原因是在Java中,每一个线程对象中都有一个ThreadLocalMap,其key就是一个ThreadLocal,而Object即为该线程的共享变量。

2023-01-05 18:42:01 379

原创 Druid 连接池技术的使用

JDBC 的数据库连接池使用 javax.sql.DataSource接口进行规范,所有的第三方连接池都实现此接口,自行添加具体实现!也就是说,所有连接池获取连接的和回收连接方法都一样,不同的只有性能和扩展功能!1)不使用数据库连接池,每次都通过DriverManager获取新连接,用完直接抛弃断开,连接的利用率太低,太浪费。2)对于数据库服务器来说,压力太大了。我们数据库服务器和Java程序对连接数也无法控制,很容易导致数据库服务器崩溃。connection可以复用!(年纪轻轻你就犯了 浪费连接的罪啊!

2023-01-05 14:30:06 215

原创 JDBC 中数据库事务实现

1,使用jdbc代码,添加数据库事务动作!3,事务提交 / 事务回滚。

2023-01-04 22:13:04 79

原创 JDBC 扩展提升

2,作用: 在多表关联插入数据时,一般主表的主键都是自动生成的,所以在插入数据之前无法知道这条数据的主键,但是从表需要在插入数据之前就绑定主表的主键,这是可以使用主键回显技术。1, Java程序 获取插入数据时mysql维护自增长维护的主键id值,这就是主键回显。2, 提升大量数据插入效率。1, 批量数据插入优化。

2023-01-04 18:01:03 65

原创 JDBC代码案例(使用PreparedStatement进行CURD)

/1.注册驱动 方案 1 : 调用静态方法 , 但是会注册两次 DriverManager . registerDriver(new com . mysql . cj . jdbc . Driver());方案 2 : 反射触发 Class . forName("com.mysql.cj.jdbc.Driver");//2.获取连接 Connection connection = DriverManager . getConnection();

2023-01-04 16:49:55 64

原创 JDBC代码案例(使用PreparedStatement进行优化查询)

https://blog.csdn.net/weixin_45417821/article/details/1285368121,静态查询2,可能发生注入攻击,动态值充当了SQL语句结构,影响了原有的查询结果!图解

2023-01-04 14:32:19 74

原创 JDBC代码案例(使用statement查询)

大量笔记都记录在代码中,可细心观看,对敲一遍必然弄会。模拟登录,控制台输入账号和密码,判断是否登陆成功成功。

2023-01-04 12:43:52 79

原创 JDBC概念理解

|Java 连接数据库技术!通俗点说,在Java代码中,使用JDBC提供的方法,可以发送字符串类型的SQL语句到数据库管理软件(MySQL,Oracle,Hive等),并且获取语句执行结果!进而实现数据库数据CURD操作的技术!1,JDBC是Java连接数据库的统称Java提供的JDBC规范(接口)各个数据库厂商的实现驱动jar包maven。

2023-01-03 17:38:40 52

原创 编译Scala 的maven 打包 jar依赖

Scala的maven打包依赖插件

2022-12-03 12:47:00 117

原创 简单带你进入Linux的世界

YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装,

2022-10-24 18:39:50 133

原创 Hudi编译安装

(1)上传apache-maven-3.6.1-bin.tar.gz到/opt/software目录,并解压更名。修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。否则在使用DeltaStreamer工具向hudi表插入数据时,也会报Jetty的错误。将hudi-0.12.0.src.tgz上传到/opt/software,并解压。(1)修改setting.xml,指定为阿里仓库地址。1)新增repository加速依赖下载。2)修改依赖的组件版本。

2022-10-20 16:05:04 733

原创 Hudi概述

Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。Apache Hudi可以轻松地在任何云存储平台上使用。

2022-10-19 14:22:18 185

原创 Could not find artifact net.shibboleth.tool:xmlsectool:pom:2.0.0 in central

步骤1.修改maven的setting.xml文件。搜索框搜xmlsectool。步骤2.运行脚本安装jar包。一步一步点击如下网站。

2022-10-12 16:45:05 256

原创 Hadoop 与 Hive 兼容性问题(一)部署Hadoop与Hive

1)把 apache-hive-3.1.3-bin.tar.gz上传到 linux 的/opt/software 目录下。2)解压 apache-hive-3.1.3-bin.tar.gz 到/opt/module目录下面。5)解决日志 Jar 包冲突,进入/opt/module/hive/lib 目录(有冲突再做)3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive。在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件。会报如下异常:暂且搁置。

2022-10-12 14:23:38 993

原创 HBase2.x(十六) HBase与 Hive 的集成

目标:在 HBase 中已经存储了某一张表 hbase_emp_table,然后在 Hive 中创建一个外部表来关联 HBase 中的 hbase_emp_table 这张表,使之可以借助 Hive 来分析 HBase 这张表中的数据。如果大量的数据已经存放在 HBase 上面,需要对已经存在的数据进行数据分析处理,那么 Phoenix 并不适合做特别复杂的 SQL 处理,此时可以使用 hive 映射 HBase 的表格,之后写 HQL 进行分析处理。(1)在 Hive 中创建表同时关联 HBase。

2022-10-03 23:56:26 590 1

原创 HBase2.x(十五)Phoenix 二级索引

写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。也就是说索引数据和数据表是存放在不同的表中的,因此全局索引适用于多读少写的业务场景。索引数据和数据表的数据是存放在同一张表中(且是同一个 Region),避免了在写操作的时候往不同服务器的索引表中写索引带来的额外开销。本地索引会将所有的信息存在一个影子列族中,虽然读取的时候也是范围扫描,但是没有全局索引快,优点在于不用写多个表了。创建携带其他字段的全局索引(本质还是全局索引)。

2022-10-03 22:49:31 629

原创 HBase2.x(十四)Phoenix 快速入门

Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API来创建表,插入数据和查询 HBase 数据。

2022-10-02 22:40:55 567

原创 HBase2.x(十三)HBase 分区

每一个 region 维护着 startRow 与 endRowKey,如果加入的数据符合某个 region 维护的rowKey 范围,则该数据交给这个 region 维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高 HBase 性能。1)手动设定预分区2)生成 16 进制序列预分区3)按照文件中设置的规则预分区aaaabbbbccccdddd4)使用 JavaAPI 创建预分区。

2022-10-02 08:24:01 486

原创 HBase2.x(十二)HBase 文件合并机制

MinorCompaction会将临近的若干个较小的 HFile 合并成一个较大的 HFile,并清理掉部分过期和删除的数据,有系统使用一组参数自动控制,Major Compaction 会将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且会清理掉所有过期和删除的数据,由参数 hbase.hregion.majorcompaction控制,默认 7 天。(2)hbase.hstore.compaction.min(默认 3) 为 Minor Compaction 的最少文件个数。

2022-10-01 23:18:36 568

原创 HBase2.x(十一)HBase 读流程

每一个 HFile 还会维护一个布隆过滤器(就像是一个很大的地图,文件中每有一种 key,就在对应的位置标记,读取时可以大致判断要 get 的 key 是否存在 HFile 中)。包括数据本身(keyValue 键值对)、元数据记录、文件信息、数据索引、元数据索引和一个固定长度的尾部信息(记录文件的修改情况)。timestamp -----------→ 时间戳(默认系统时间)rowlength -----------→ key 的长度。row -----------------→ key 的值。

2022-10-01 21:49:00 728

原创 HBase2.x(十)HBase MemStore Flush (写缓存冲洗规则)

当 region server 中 memstore 的总大小达到低水位线java_heapsize * hbase.regionserver.global.memstore.size(默认值 0.4) * hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95),region 会按照其所有 memstore 的大小顺序(由大到小)依次进行刷写。主要的刷写规则是控制刷写文件的大小,在每一个刷写线程中都会进行监控。

2022-10-01 19:42:40 128

原创 HBase2.x(九)写流程

(2)访问对应的 Region Server,获取 hbase:meta 表,将其缓存到连接中,作为连接属性 MetaCache,由于 Meta 表格具有一定的数据量,导致了创建连接比较慢;(3)调用Table的put方法写入数据,此时还需要解析RowKey,对照缓存的MetaCache,查看具体写入的位置有哪个 RegionServer;(4)将数据顺序写入(追加)到 WAL,此处写入是直接落盘的,并设置专门的线程控制 WAL 预写日志的滚动(类似 Flume);(6)向客户端发送 ack;

2022-10-01 19:36:15 265

原创 HBase2.x(八) RegionServer 架构

由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile,写入到对应的文件夹 store 中。

2022-10-01 16:57:00 97

原创 HBase2.x(七)Master 架构

注意:在客户端对元数据进行操作的时候才会连接 master,如果对数据进行读写,直接连接zookeeper 读取目录/hbase/meta-region-server 节点信息,会记录 meta 表格的位置。如果一个表处于切分的过程中,即 region 切分,还会多出两列 info:splitA 和 info:splitB,存储值也是 HRegionInfo 对象,拆分结束后,删除这两列。全称 hbase:meta,只是在 list 命令中被过滤掉了,本质上和 HBase 的其他表格一样。

2022-10-01 16:51:49 569

原创 HBase2.x(六)HBase API DML的操作

创建类 HBaseDML。

2022-09-30 21:41:25 248

原创 HBase2.x(五)HBase API DDL的操作

创建 HBaseDDL 类,添加静态方法即可作为工具类。

2022-09-30 21:35:20 220

原创 HBase2.x(四)HBase API 创建连接

根据官方 API 介绍,HBase 的客户端连接由 ConnectionFactory 类来创建,用户使用完成之后需要手动关闭连接。同时连接是一个重量级的,推荐一个进程使用一个连接,对 HBase的命令通过连接中的两个属性 Admin 和 Table 来实现。在 resources 文件夹中创建配置文件 hbase-site.xml,添加以下内容。注意:会报错 javax.el 包不存在,是一个测试用的依赖,不影响使用。使用类单例模式,确保使用一个连接,可以同时用于多个线程。

2022-09-29 21:28:25 198

空空如也

空空如也

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

TA关注的人

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