JustDoDT

JustDoDT-->From Zero To Hero.

浅析HBase RowKey设计原则

RowKey是什么 可以理解为关系型数据库(MySQL,Oracle)的主键,用于标识唯一的行。 完全是由用户指定的一串不重复的字符串。 HBase中的数据永远是根据RowKey的字典排序来排序的。 RowKey的作用 读写数据时,通过RowKey找到对应的Region,例如需要查找一条数据肯定需要知道他的RowKey,写数据的时候也要根据RowKey来写。 ...

浅析LSM树

概述 数据库最基本的两个功能:数据的存储和数据的查询。当我们写入数据的时候,数据库可以存储数据;当我们需要访问数据时,数据库可以给我们想要的数据。数据库会通过特定的数据模型和数据结构存储数据,并支持通过特定的询语言访问数据。本文将从最简单的数据库开始,讨论数据库如何存储数据,如何查询数据。本文将讨论两种存储引擎:log-structured 存储引擎和以B+树为代表的page-orient...

浅析MySQL的InnoDB存储引擎和MyISAM存储引擎

InnoDB存储引擎数据存储 在 InnoDB 存储引擎中,也有页的概念,默认每个页的大小为 16K,也就是每次读取数据时都是读取 4*4K 的大小! 假设我们现在有一个用户表,我们往里面写数据: 这里需要注意的一点是,在某个页内插入新行时,为了减少数据的移动,通常是插入到当前行的后面或者是已删除行留下来的空间,所以在某一个页内的数据并不是完全有序的(后面页结构部分有细讲)。 但...

浅谈二分查找,二叉树,平衡二叉树,B树,B+树

二分查找 二分查找是最基本的,后面的二叉树,平衡二叉树,B树,B+树都是基于二分查找演变而来的。 二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找。 代码实现 public int binarySearch(int[] A, int target, int n){ int low = 0,...

数据模型与查询语言

概述 语言的边界就是思想的边界。 数据模型可能是软件开发中最重要的部分了,因为它们的影响如此深远;不仅仅影响着软件的编写方式,而且影响着我们的解题思路。 多数应用使用层层叠加的数据模型构建。对于每层数据模型的关键问题是:它是如何用低一层数据模型来表示的?例如: 模型分层 开发人员视角 作为一名应用开发人员,你观察现实世界(里面有人员,组织,货物,行为,资金...

kafka+Spark Streaming管理offset的方法

概述 kafka配合Spark Streaming是大数据领域常见的黄金搭档,主要用于数据实时处理。为了应对可能出现的引起Streaming程序崩溃的异常情况,我们一般都需要手动管理好Kafka的offset,而不是让它自动提交,即需要将enable.auto.commit设为false。只有管理好offset,才能使整个流式系统最大限度地接近exactly once语义。 kafka提...

SparkStreaming数据零丢失使用mysql存储kafka的offset

MySQL创建存储offest的表格 mysql> use test mysql> create table hlw_offset( topic varchar(32), groupid varchar(50), partitions int, fromoffset bigint, untilof...

Maxwell读取MySQL binlog日志到Kafka

启动MySQL 创建maxwell的数据库和用户 在MySQL中创建一个测试数据库和表 前面三个步骤详见 Maxwell读取MySQL binlog日志通过stdout展示 启动Zookeeper [hadoop@hadoop001 ~]$ cd $ZK_HOME/bin [hadoop@hadoop001 bin]$ ./zkServer.sh start 启动kafka,并...

Maxwell读取MySQL binlog日志通过stdout展示

Maxwell简介 Maxwell实时抓取mysql数据的原理也是基于binlog,和canal相比,maxwell更像cannal server + 实时client。(数据抽取+数据转换) maxwell集成了kafka producer,直接从binlog获取数据更新并写入kafka,而canal则需要自己开发实时client将canal读取的binlog内容写入kafka中。 ...

Flume中的Sink到HDFS和Kafka的操作

概述 Flume用来采集日志,也可以用来采集数据库中的数据,也可以修改源代码自定义自己想要的source,channel,sink类型。 安装 安装Flume [hadoop@hadoop001 software]$ tar -zxvf flume-ng-1.6.0-cdh5.7.0.tar.gz -C ~/app/ # $FLUME_HOME/conf/flume-env.sh ...