- 博客(36)
- 收藏
- 关注
原创 MySQL中实现某时刻快照
事务的ACID特性原子性(Atomic): 事务中的多个操作,不可分割,要么都成功,要么都失败(All or Nothing);一致性(Consistency): 事务操作之后, 数据库所处的状态和业务规则是一致的(比如a和b账户相互转账之后,总金额不变);隔离性(Isolation): 多个事务之间就像是串行执行一样,不相互影响;持久性(Durability): 事务提交后被持久化到永久存储。隔离性1、级别READ UNCOMMITTED:可以读取未提交的数据,未提交的数据称为脏数据,所以又
2022-04-25 23:09:27
1607
原创 Maxwell采集Mysql数据到Kafka
Mysql设置修改/etc/my.cnf文件,开启binlog日志vim /etc/my.cnf添加一下配置①server-id=1②log-bin=mysql-bin 这个表示binlog日志的前缀是mysql-bin,以后生成的日志文件就是 mysql-bin.123456 的文件后面的数字按顺序生成,每次mysql重启或者到达单个文件大小的阈值时,新生一个文件,按顺序编号。③binlog_format=row 这个表示binlog日志的级别为行级, binlog会记录每次操作后每行记
2022-03-24 22:43:21
4272
2
原创 Kafka常用命令(2.6.x版本)
消费者组偏移量查看消费者组的偏移量情况sh kafka-consumer-groups.sh --bootstrap-server node01:9092,node02:9092,node03:9092 --describe --group 组名设置消费者组的偏移量为最初sh kafka-consumer-groups.sh --bootstrap-server node01:9092,node02:9092,node03:9092 --group 组名--topic 主题名--rese
2022-03-21 22:46:06
1991
原创 Presto安装
下载安装包presto-server-0.271.tar.gzpresto-cli-0.271-executable.jarpresto-jdbc-0.271.jar下载链接:https://prestodb.io/download.html解压tar -zxvf presto-server-0.271.tar.gz设置配置文件在安装目录创建一个etc和data目录mkdir /opt/xxx/presto-server-0.271/etcmkdir /opt/xxx/pre
2022-03-18 23:10:27
2300
原创 Hive优化
合并小文件set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 压缩格式进行shuffle中,数据的传输会产生很大的io,此时对map输出的文件进行压缩,能降低io,提高shuffle的效率set hive.exec.compress.intermediate=true;set hive.intermediate.compression.codec=org.apache.hadoop.io.compr
2022-03-16 21:49:46
1012
原创 数仓指标体系
统一口径指标体系中最重要的是各个部门之间统一业务口径。在实际工作中我们往往会遇到这样的问题:1)A部门对于新用户的概念是首次下单并完成支付的用户;2)B部分对于新用户的概念是当日新注册用户;然后这两个部门都要统计每日新用户销售额,我们往往会对于一个需求写多个不同的逻辑来满足不同的部门。最后就导致老板看了这两个部门统计的数据后发现这些数据对不上。指标分层原子指标对事实表中的度量进行count、sum等简单聚合派生指标(原子指标+时间限定+修饰词)如:最近七天各个店铺的销售额原子指标:co
2022-03-16 00:07:25
336
原创 卸载并且重装Kafka
卸载Kafka连接Zookeeper客户端sh zkCli.sh -server 127.0.0.1:2181删除Kafka在ZK上的节点,如图所示,有consumers,admin,config,controller,brokers,controller_epoch等节点 rmr /path 安装Kafka去官网下载对应版本的压缩包 https://kafka.apache.org/downloads解压缩对应文件tar -zxvf kafka_2.12-2.6.0.tg
2022-03-10 20:31:53
6093
原创 JavaAPI生产者连接Kafka之Bug记录
版本Kafka0.8.2.1BugJava生产者客户端连接不上Kafka解决kafka中的/config/server.properties配置文件中,把host.name注释给打开,并且附上当前虚拟机的ip地址
2022-03-10 01:05:26
2617
原创 VMware网络配置
虚拟网络编辑器这边无须和物理机保持一致NAT设置节点配置vim /etc/sysconfig/network-scripts/ifcfg-ens33
2022-03-09 22:12:54
434
原创 Hive编译流程
步骤Hive的编译主要经过以下几个步骤Parser(解析器)Semantic Analyzer(语义分析器)Logical Plan Gen(逻辑计划生成)Logical Optimizer(逻辑优化器)Physical Plan Gen(物理计划生成)Physical Optimizer(物理优化器)细节Hive SQL经过Parser变成AST(Abstract Syntax Tree抽象语法树);AST经过Semantic Analyzer变成QB(Query Block查询
2022-03-08 22:30:48
1170
原创 IDEA安装Scala开发环境
配置环境变量配置SCALA_HOME在Path中添加%SCALA_HOME%\bin;在cmd命令窗口输入scala验证是否配置成功在IDEA中下载Scala插件方法一1)打开此网址https://plugins.jetbrains.com/plugin/1347-scala/versions/eap,点击下载2)在IDEA中弹出的界面点击OK方法二在Settings中的Plugins中搜索scala,然后Install方法三以上方法下载很慢时,可以使用迅雷进行下载1)
2022-03-07 22:25:07
329
原创 维度建模-零售业务
业务场景:大型食品杂货连锁店,此连锁店由100个分布在5个不同的省份。每个商店都有完整的部门,包括杂货、冷冻食品、日常生活用品、肉类、农产品、烘烤商品、花卉、保健/美容产品等。每个商店包含被成为产品统一编号(SKU)的60000种不同的上架产品。选择业务过程对于零售商店来说,管理方面主要关注对订单、库存、销售产品的组织工作,目的是实现利润最大化。此时建模的业务过程就是零售交易 ,该数据可以体现商品是在哪几天、哪几个商店、处于何种环境中被销售的。声明粒度声明粒度时,尽量是此业务过程中最细的粒度,因为这
2022-03-01 23:21:12
387
原创 JAVA基础-数据结构
ListArrayList底层实现:数组扩容:每次扩容原来的1.5倍,通过Arrays.copyof方法扩容特点:线程不安全,查询块LinkedList底层实现:双向链表扩容:不需要扩容特点:线程不安全,增删块Vector底层实现:数组扩容:每次扩容原来的2倍特点:线程不安全SetHashSet底层是由HashMap维护的,value为一个空的Object对象TreeSet底层是由NavigableMap一样,value为一个空的Object对象MapHash
2022-02-28 22:25:35
342
原创 维度建模-维度表
维度表技术基础维度表结构每个维度表都包含单一的主键列,维度表一般比较宽,包含了大量低粒度的文本属性,是扁平形非规范表。维度代理键维度表的唯一主键一般都是没有语义的整型主键(顺序分配的简单整数,从1开始)。但是日期维度不需要遵守这个规则,因为日期维度是高度可预测的且稳定的维度。自然键、持久键和超自然键自然键:受业务规则影响持久键:也叫超自然键,不受业务规则影响下钻从粗粒度到细粒度的过程,会细化某些维度退化维度一个维度表,可能只有一列,这种情况下可以把此维度直接
2022-02-25 23:36:00
786
原创 维度建模-事实表
事实表事实表结构用于联接不同维度的外键+度量值+可选的退化维度键和时间。可加、半可加、不可加事实可加事实:如销售额;半可加事实:如商品价格差额,除了时间维度外,可以跨所有维度进行相加;不可加事实:比率。事实表中的空值可以允许度量出现空值,但是事实表中维度外键不能出现空值。一致性事实某些度量出现在不同的事实表中,如果需要比较或者计算不同事实表的事实,应保证对事实的技术定义是相同的。事务事实表增量同步,当天分区里有当天新增或变化的数据。周期快照事实表
2022-02-24 22:53:31
238
原创 维度建模-基本过程
基本过程收集业务需求与数据实现维度建模前,项目组需要理解业务,和业务方进行讨论交流,深刻理解他们的需求。协作维度建模研讨维度模型应该由主题专家与企业管理代表合作设计而成。维度设计过程1. 选择业务过程2. 声明粒度3. 确认维度4. 确认事实业务过程业务过程是一个操作性活动,像获取订单,学生课程注册等等。每个业务过程对应企业数据仓库总线矩阵的一行。粒度这个粒度尤为重要,用于确定某一事实表中的行表示什么。建议从原子粒度开始设计,这样能够应对各种复杂的场
2022-02-24 20:55:31
493
原创 项目上线流程-离线SQL
代码远程通过xshell连接服务器,打开对应的脚本文件(vim xxx.sh)编写对应脚本,我们是通过presto连接hive数据源,然后编写presto sql。编写一个job脚本(vim job.sh),脚本中写之前一些脚本的运行命令(sh xxx.sh 参数)测试自己通过命令执行一遍脚本,查看目标表中的数据,如果没啥问题就可以配置调度了调度去azkaban中创建一个项目编写对应的job文件,放到一个目录中。每个job文件大概是这样的,写你要运行的脚
2022-02-24 11:15:57
1257
原创 项目上线流程-实时Flink
代码在idea中拉取公司git中实时相关的项目切换项目环境为本地环境,每个环境有不同的配置文件在idea中编写java/scala代码运行在本地环境下运行代码,通过netcat工具通过socket传输数据如果本地自测没有问题,把项目打jar包,放到test环境去跑,大概跑一天。如果没问题就切换成生产环境。运维可以在运维界面看整体项目的情况...
2022-02-24 10:37:23
1471
原创 StarRocks集群搭建
单节点部署去官网下载对应产品包StarRocks-2.0.0.tar.gztar -zxvf StarRocks-2.0.0-GA.tar.gzStarRocks-2.0.0-GA/femkdir -p metabin/start_fe.sh --daemon确认是否启动成功,可以去log/fe.log查看日志,也可以jps查看有没有StarRocksFE进程,也可以去访问节点的8030端口查看(用户名为root,密码为空)yum install mysql-client 下载mysql客户
2022-02-23 23:48:45
1247
原创 HBase、ClickHouse、StarRocks
HBaseHBase行锁机制,保证对单行数据操作的原子性。ClickHouse基本概念数据的基本映射单元:一列数据用Column表示,一列数据中的单个值用Field表示。数据类型:DataType,进行序列化和反序列化操作Block:ClickHouse内部是面向Block操作的,Block是由Column,DataType和列名称组成的。具体细节:1)建表时,会指定字段进行sort by,保证数据在磁盘上连续存储。2)ClickHouse通过对数据排序,然后对数据建立稀疏索引,Merg
2022-02-22 22:46:51
2965
原创 Kafka事务
Kafka在0.11版本开始引入幂等和事务的特性幂等简单来说就是,无论我新增多少条数据,结果都是一条。对于Kafka来说,通过producer id(PID)和序列号sequence number来实现。每个producer都有一个pid,当他们往分区发送消息时,会携带一个sequence number,这个序列号是递增的。当一个producer多次发送一个数据时,这个数据的sequence number是一样的。此时Kafka的broker,只会接受第一次发送的数据(在broker里,会为每个pr
2022-02-14 16:57:10
1375
原创 Flink和Kafka端到端数据一致性
Flink内部把Checkpoint开启,设置Checkpoint模式为EXACTLY_ONCEenv.enableCheckpointing(1000*10L);env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);KafkaSource当Flink开启Checkpoint时,Kafka的offset会在Checkpoint的时候,把偏移量保存到状态后端(也会提交到kafka中一份)。 注意
2022-02-14 16:10:35
1810
原创 Flink常用算子
OperatorsmapDataStream → DataStreamflatMapDataStream → DataStreamfliterDataStream → DataStreamkeyByDataStream → KeyedStream对数据进行分流reduceKeyedStream/KeyedStream/AllWindowedStream → DataStream用于keyBy或者window/windowAll之后windowKeyedStream → Win
2022-02-11 17:39:58
2336
1
原创 Flink常见机制
反压机制Flink在1.5版本之前是基于TCP的流量控制和反压的。缺点:一个TaskManager执行的一个Task触发反压,该TaskManager和上游TaskManager的Socket就不能传输数据,从而影响到其他Task,也会影响到Barrier的流动,导致作业雪崩。在1.5版本之后,Flink是基于信用值的流量控制和反压的,接收端会给发送端授予一定信用值,发送端一但接受到信用通知,就会在信用值所允许的范围内尽可能多的向接收端发送数据,且附带上发送端的积压量。接收端会依据发送端的积压量信息
2022-02-10 22:30:47
2454
1
原创 Flink架构
Flinks所需组件JobManager接受需要执行的应用,此应用包含一个JobGraph(逻辑Dataflow图),以及打包了全部所需类、库以及其他资源的JAR文件。JobManager将JobGraph转化为ExecutionGraph(物理Dataflow图),此图包含了那些可以并行的任务。JobManager向ResourceManager申请执行任务所需资源(TaskManager的slot槽)。将ExecutionGraph中的任务分发给TaskManager来执行。负责所有需要集中
2022-02-08 18:01:02
3372
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人