HBase系列之region-split上
Region自动切分是HBase能够拥有良好扩张性的最重要因素之一,也必然是所有分布式系统追求无限扩展性的一副良药。那么region又是如何自动切分的呢,触发的条件又是什么?
Region切分触发策略在最新稳定版(1.2.6)中,HBase已经有多达6种切分触发策略。即RegionSplitPolicy的实现子类共有6个,如下类图:
当然,每种触发策略都有各自的适用场景,用户可以根据业务在表级别选择不同的切分触发策略。常见的切分策略如下图:
ConstantSizeRegionSplitPolicy0.94版本前默认切分策略。这是最容易理解但也最容易产生误解的切分策略,从字面意思来看,当region大小大于某个阈值(hbase.hregion.max.filesize)之后就会触发切分,实际上并不是这样,真正实现中这个阈值是对于某个store来说的,即一个region中最大store的大小大于设置阈值之后才会触发切分。另外一个大家比较关心的问题是这里所说的store大小是压缩后的文件总大小还是未压缩文件总大小,实际实现中store大小为压缩后的文件大小(采用压缩的场景)。Constan ...
HBase系列之compact
在介绍HBase Compaction之前,我们先来看一下HBase是如何存储和操作数据。
如上图所示,HRegionServer负责打开region,并创建对应的HRegion实例。当HRegion打开之后,它会为每个表的HColumnFamily创建一Store实例,ColumnFamily是用户在创建表时定义好的,ColumnFamily在每个region中和Store实例一一对应。每个Store实例包含一个或者多个StoreFile实例,StoreFile是对实际存储数据文件HFile的轻量级封装。每个Store对应一个MemStore(也就是写内存)。一个HRegionServer共享一个HLog实例。
当我们不停地往HBase中写入数据,也就是往MemStore写入数据,HBase会检查MemStore是否达到了需要刷写到磁盘的阈值(更多关于MemStore刷写的信息,可以参考HBase Reference Guide关于MemStore的介绍)。如果达到刷写的条件,MemStore中的记录就会被刷写到磁盘,形成一个新的StoreFile。可想而知,随着MemStore的不 ...
八大基础分析模型
模型是指对于某个实际问题或客观事物、规律进行抽象后的一种形式化表达方式。任何模型都有三个部分组成:目标、变量和关系。通俗来讲:
目标:这个模型是干嘛用的,要解决什么问题。
变量:自变量、因变量、中介变量,总之就是,明确变量,改变变量,即可直接呈现结果,实现目标。
关系:可以理解为对目标和变量进行组织。下面介绍常用的八种基础分析模型,可能大家也都了解。而且这些模型,其实也在不断的优化,并且又有了一些新特性,比如用户分群模型中的“新增后”、事件模型中的“活跃比”
用户模型“用户”是以人为中心的数据分析平台的最小单元,对单个用户画像构建越完整,数据多维交叉的分析能力才能凸显。
事件模型用户在产品上的行为(所有代码的交互)都是会被记录的,怎样标记是事件模型的核心,它是漏斗模型,自定义留存模型,全行为路径分析模型的数据源。
活跃比:某一时间区间内触发某事件的人数占该时间区间内活跃人数的百分比。
漏斗分析模型漏斗是常用也是最经典的分析模型,在行为数据的漏斗分析中,通常我们以每一步触发的人数为统计口径。漏斗中另一个重要的限定因素是:转化时间的限定。当设定转化时间是一天内,用户只要在一天内先后 ...
传统的MapReduce框架慢在哪里
本文转载于传统的MapReduce框架慢在那里,翻译自Shark: SQL and Rich Analytics at Scale的论文第七章节,从理论上讨论了相比于Hive,Shark的优势在哪里,原文可见http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-214.pdf.
为什么之前的MapReduce系统比较慢常理上有几个理由使得MapReduce框架慢于MPP数据库:
容错所引入的昂贵数据实体化 (data materialization)开销。
孱弱的数据布局 (data layout),比如缺少索引。
执行策略的开销[1 2]。
而我们对于Hive的实验也进一步证明了上述的理由,但是通过对Hive“工程上”的改进,如改变存储引擎(内存存储引擎)、改善执行架构(partial DAG execution)能够缩小此种差距。同时我们也发现一些MapReduce实现的细节会对性能有巨大的影响,如任务调度的开销,如果减小调度开销将极大地提高负载的均衡性。
中间结果输出:类似于Hive这样的基于MapReduce的查 ...
Performance optimizations in Apache Impala
历史和动机SQL on Apache Hadoop
SQL
Run on top of HDFS
Supported various file formats
Converted query operators to map-reduce jobs
Run at scale
Fault-tolerant
High startup-costs/materialization overhead (slow…)
impala performance optimizationsquery planning2-phase cost-based optimizer
Phase 1: Generate a single node plan (transformations, join ordering, static partition pruning, runtime filters)
Phase 2: Convert the single node plan into a distributed query execution plan (add exchange nodes, d ...
数据存储系统性能优化思维导图
当前计算机硬件的基本性能指标及其在数据库中主要操作内容,可以整理出如下图所示的性能基本优化法则:
这个优化法则归纳为5个层次:
1、 减少数据访问(减少磁盘访问)
2、 返回更少数据(减少网络传输或磁盘访问)
3、 减少交互次数(减少网络传输)
4、 减少服务器CPU开销(减少CPU及内存开销)
5、 利用更多资源(增加资源)
由于每一层优化法则都是解决其对应硬件的性能问题,所以带来的性能提升比例也不一样。传统数据库系统设计是也是尽可能对低速设备提供优化方法,因此针对低速设备问题的可优化手段也更多,优化成本也更低。我们任何一个SQL的性能优化都应该按这个规则由上到下来诊断问题并提出解决方案,而不应该首先想到的是增加资源解决问题。
以下是每个优化法则层级对应优化效果及成本经验参考:
优化法则
性能提升效果
优化成本
减少数据访问
1~1000
低
返回更少数据
1~100
低
减少交互次数
1~20
低
减少服务器CPU开销
1~5
低
利用更多资源
@~10
高
以上是数据库优化方法思路。同样,在大数据系统也适用。下面通过思维导图方式,例 ...
OLAP引擎思维导图
联机分析处理(OLAP)联机分析处理(英语:On-Line Analytical Processing,简称OLAP),是一套以多维度方式分析数据,而能弹性地提供上卷(Roll-up)、下钻(Drill-down)、和透视分析(pivot)等操作,呈现集成性决策信息的方法,多用于决策支持系统、商务智能或数据仓库。其主要的功能,在于方便大规模数据分析及统计计算,对决策提供参考和支持。OLA数据库的设计目的是为了提高检索数据的速度。OLAP数据库包含两种基本类型的数据:度量值和维度。前者是数值数据,表示您用于做出明智的商业决策的数量和平均值;后者是用于组织这些度量值的类别。OLAP 数据库可帮助您按照多个明细级别组织数据,从而可以使用您熟悉的相同类别来分析数据。
各类OLAP引擎针对OLAP查询,出现了各类的引擎,主要以ROLAP与MOLAP为主,MOLAP将需要查询分析的维度数据预先计算好,来实现高速的查询要求。下面例举常见的OLAP引擎以及优缺点,实现技术细节等。OLAP引擎思维导图
bitmap与标签存储
最近在标签存储中,需要根据标签值查询用户id,所以想到在源数据表基础上建立索引。因为标签数据量大,且标签基数相对较少,查询条件往往涉及多标签组合过滤,所以选用了bitmap作为索引。
bitmap简介bitmap就是以比特位来存储状态。
bitmap索引例如用户数据表现在要在用户性别和婚姻状态建立bitmap索引。通过索引值为1,我们可以看出性别男的用户rowid为1和3,然后在查询源用户表,就可以查出性别男的是张三,王五。婚姻状况同理。下面我们如果要查询:select * from table where Gender=’男’ and Marital=’未婚’首先我们找到男索引列和未婚索引列,然后对其取并集。
因为是bit存储,索引取并集就相当简单,只需要进行位运算&即可。所以整个bitmap索引多条件过滤效率很高。
bitmap的适用范围因为bitmap的特性,所以bitmap索引适用于:
查询为主,更新较少的数据
基数较少,重复度较多的列
and/or可以直接通过位运算快速得到结果。
RoaringBitmap未压缩的bitmap占有空 ...
磁盘I/O
最近一直在看HBase底层存储,想更深入的理解HBase采用LSM结构,而不是B-tree的缘由,所以需要更深入的理解磁盘存储。本文转载于磁盘I/O那些事,该文详细讲解了磁盘结构,磁盘如何存储数据,如果读取数据,以及磁盘读写的IO过程。
背景计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。
硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计?针对这些问题,本文将介绍硬盘的物理结构和性能指标,以及操作系统针对磁盘性能所做的优化,最后讨论下基于磁盘I/O特性设计的技巧。
硬盘的物理结构硬盘内部主要部件为磁盘盘片、传动手臂、读写磁头和主轴马达。实际数据都是写在盘片上,读写主要是通过传动手臂上的读写磁头来完成。实际运行时,主轴让磁盘盘片转动,然后传动手臂可伸展让读取 ...
工程师跨越成长视频笔记
今天看了一个分享视频,来自美团技术学院院长刘江的分享。结合最近自己在公司里,对除技术外其他技能的要求有所反思,觉得有必要对这个分享做个纪要。下面是刘江老师的分享主要内容(包括主持人提问回答)。
技术人员需要的技能之前觉得技术很牛逼很重要,很多事情的改变都是由技术推动的,但渐渐发现跟技术同等重要的事情还有很多。技术人员的能力要求分为四个方面:技术知识,技术能力,通用能力,专业影响力。
技术知识和技术能力是一个工程师通识的技能要求,毕竟要完成任务。但是沟通能力,以及商业sense也是很重要的。随着职级上升,沟通表达能力以及商业sense也越来越重要(上次去数据库大会,百度首席科学家毕然老师也强调了商业sense)。没有商业sense的技术在公司是没有价值的。而团队合作,作为leader是需要通过演讲来凝聚团队,给与团队目标。职级越高,对表达能力要求越高。而专业影响力在于沉淀,通过文字或者演技总结经验,传输给别人。通过博客或者演讲让自己在业界有一定影响力。
公司在对技术人员培养上,也需要给予表达和演讲这样的平台和机会,push他们,让他们走出舒适区,提升自己的软实力。
周报,Wiki文化对 ...