自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

进一步有一步的欢喜

专注大数据&分布式系统,微博@不睡觉的时候会困。

  • 博客(57)
  • 收藏
  • 关注

原创 HBase Replicate中的peer处理

如果用户新加入了一个peerid,那怎么处理,这部分逻辑的入口在ReplicationSourceManager的addSource方法中:addSource接受peerid作为参数,它会新创建一个ReplicationSourceInterface(实际就是ReplicationSource)和ReplicationEndpoint,并分别初始化两者,ReplicationSource负责h...

2018-10-19 17:12:31 1680

原创 HBase Replication的源码分析

在HRegionServer中有两个量和replication相关,如下图所示:在ReplicationSourceService中只有一个方法getWALActionsListener,该方法返回WALActionsListener。ReplicationSinkService同样也是一个接口类,它有一个方法replicateLogEntries。在HRegionServer的如下代码段...

2018-10-19 17:05:29 846

原创 openTSDB的安装部署

首先openTSDB以root用户安装,安装前需要确认HBase集群已安装完毕,并且JAVA_HOME也已设置,并且安装gnuplot(yum install gnuplot);1、从官网上下载相应版本的openTSDB安装文件,并解压该文件,并执行编译:tar -xvf opentsdb-2.2.2.tarcd opentsdb-2.2.2.tar./build.sh2、执行...

2018-10-19 16:24:33 2331

原创 HBase因hostname可能引起的RIT问题

HBase的RegionServer会将自己的hostname上报到zookeeper,客户端连接zookeeper时,获取的是regionserver的hostname,再由hostname获得regionserver的ip地址。基于hbase的这种名称上报机制,客户端连接hbase时,需要能够ping通hbase的hostname,但是如果把hbase的hostname分发到所有的服务器上,毕...

2018-10-19 16:03:40 3180

原创 HBase限流机制源码分析

master启动的时候会初始化MasterQuotaManager,并启动该manager;MasterQuotaManager实现了RegionStateListener接口,可以监听region的状态变化,RegionStateListener接口中定义了三个事件,分别是onRegionSplit,onRegionSplitReverted,onRegionMerged。MasterQ...

2018-09-09 13:27:33 1745

原创 HBase高级优化配置

hbase.regionserver.optionalcacheflushinterval默认是1hour,regionserver每个region上的memstore会每个小时flush一次,这也是flush的触发条件之一,代码在PeriodicMemstoreFlusher中 hbase.regionserver.regionSplitLimit一个regionserver上的...

2018-08-24 11:47:50 1596

原创 HBase Replication的源码解析

Replication的类结构:replication的类结构包括了ReplicationSource、ReplicationSourceManager和ReplicationSink、ReplicationSinkManger以及ReplicationEndpoint五部分组成。ReplicationSource是源端负责读取wal  entry的对象,每个RegionServer对应每个pee...

2018-02-24 22:44:19 1273

原创 Apache Ranger的安装及其HBase插件的使用

Apache Ranger是HDFS生态系统的安全管理框架,用于对HDFS生态的产品,包括HBase、Hadoop、Hive、Kafka等提供一个集中式的安全管理策略。Apache Ranger在架构组成上包括一个策略管理服务器(Policy Admin Server),该服务将策略存储于外部的关系型数据库,如MySQL中。

2017-09-15 18:40:42 4391 1

原创 HBase PerformanceEvaluation机制分析

本文我们来分析一下hbase自带的测试工具——performanceEvaluation。该工具是hbase自带的性能压测工具,基本原因是是用多线程模拟多用户同时访问集群的情况。运行hbase org.apache.hadoop.hbase.PerformanceEvaluation,可以看到关于performanceEvaluation的用法介绍,如下图中所示:介

2017-09-09 08:47:51 3651 1

原创 HBase的权限控制

HBase自带的权限管理工具:HBase的权限管理包括两个部分,分别是Authentication&AuthorizationAuthentication:针对某host是否有权成为集群的regionserver或者client端;Authorization:是针对client端对集群数据的读写等权限;其中Authentication由kerberos提供解决方

2017-08-27 10:33:45 6893

原创 HBase&HDFS异构存储的使用&简单介绍

使用方式:首先,开启hdfs异构存储策略,配置项是——dfs.storage.policy.enabled,该配置默认是开启的(true);第二步,需要将机器物理硬件上已经部署好的磁盘配置添加到hdfs的配置项dfs.datanode.data.dir中,需要注意的对于SSD盘或者RAM_DISK需要打上特殊的标记,类似[SSD]、[RAM_DISK],配置示例如下:

2017-04-22 12:14:23 6374 1

原创 高可用Hdfs&HBase配置实践

首先介绍版本背景,hdfs为2.7.1,hbase为1.3.0,其它版本的配置可能存在变化。HDFS相关配置:dfs.datanode.synconclose 设为true,当为false时,系统重启或断电时有可能数据丢失,默认值是falsedfs.datanode.sync.behind.writes=FALSE 如果是true,写之后,DN将指示操作系统把队列中的数据全部立

2017-03-28 22:24:46 5970

原创 HBase BlockCache机制讲解&源码分析

HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。当数据写入hbase时,会先写入memstore,RegionServer会给每个region提供一个memstore,memstore中的数据达到系统设置的水位值后,会触发flush将memstore中的数据刷写

2017-03-18 15:36:36 9276 7

原创 事件驱动的HLog写入模型

WALFactory:分析HLog的写入首先要从WALFactory开始,WALFactory是一个管理wal的工厂实例,WALFactory中提供了两个接口createReader&createWriter,分别实现了对wal文件的读和写,其实这两个读写接口也是由DefaultWALProvider提供的。HRegionServer中管理着一个WALFactory变量,定义的格式如下:

2017-03-11 17:10:46 3129

原创 MySQL使用小坑总结(一)

1、数据库中的字段类型不要使用long型,否则会造成查询缓慢,可以选择BigInt类型来代替。2、避免select *。3、如果表结构中字段定义的类型与应用传入的类型不一致,这时候可能会发生隐式转换;两个表join的时候,如果字符集定义不一致,也会导致隐式转换,mysql中定义的隐式转换规则如下所示:a、两个参数至少有一个是NULL时,比较的结果也是NULL,例外是使用对两个NULL做

2017-03-02 19:01:26 906 1

原创 HBase源码之Compaction的执行策略分析

HBase的Compaction操作一般都是表粒度的,该操作会将合并HStore下的storefile文件,具体应该合并哪些storefile文件则是由compaction的筛选算法决定的。基本的调用逻辑是用户的compactRequest一步步向下传递,最终传入HStore中的requestCompaction()方法里。也就是说compaction请求最终送到了该表相关的各个HStore,

2017-02-26 17:00:06 3630

原创 租约机制以及在hbase中的应用

为什么需要Lease分布式系统中为什么需要租约机制,这是因为在分布式系统,为了保证服务的高可用,需要在服务发生故障的时候及时启动另外一个服务实例以替换故障服务。这样就需要在服务端和客户端或者服务端和控制中心维持一个心跳信息,用于服务进程向控制中心汇报当前自己的健康情况,如果控制中心在一段时间收不到服务进程上报的心跳,则会启动新的进程继续对外提供服务。但是,由于实际网络情况的复杂性,控制中心

2017-02-18 18:00:11 2221

原创 常用Linux运维指令汇总

收集了一下工作中常用的Linux运维指令,列在下面,本文长期更新。netstat -na | grep 7651查看本机7651端口在和谁通信ps aux | grep 7651查看本机7651进程的相关信息ps aux --sort -rss显示各个进程对内存的使用情况,从大到小排序netstat -ntpl查看处于监听状态的TCP类型的端口netstat -

2017-01-18 20:10:15 636

原创 HBase中MemStore flush的源码解析

flush请求的发出:HRegion会调用requestFlush()触发flush行为,flush发生在每一处region可能发生变化的地方,包括region有新数据写入,客户端调用了put/increment/batchMutate等接口。hbase.hregion.memstore.block.multiplier是个乘数因子,默认值是4,该值会乘上hbase.hregion.mem

2017-01-09 19:05:57 2859 1

原创 java并发包在hbase&hadoop中的应用

HBase保证了行级事务,也就是说保证行级数据的ACID属性,为了实现上述的事务属性同时保持数据库读写的高性能,HBase采用了各种并发控制策略。本文从常用的Java并发工具入手,并分析它们在hbase中的使用,一者对Java的并发工具包有更深刻的理解,其次对HBase的并发控制机制有更清晰的认识。CountDownLatch:CountDownLatch是在jdk1.5中引入的,这个类能

2017-01-04 18:56:12 788

原创 做产品的一些碎碎念

记录一些我平时思考的碎片,主要是关于产品,因为无论是做平台还是什么,最终都是要推出去给别人用的,每人用就缺乏改进的机会,也就没有了价值。此文长期更新。1、用户的需求可以理为弱需求和强需求,强需求就是一个产品的基本功能,以数据库为力,提供存储能力,不丢数据,高可用,低延时就是强需求,而周边的配套设施比如监控、报警或者某些SQL语句的支持相对来说可以算做弱需求,这部分需求不那么急迫,又或者可以通过

2016-12-22 22:38:41 551

原创 HBase Split流程源码分析

本文主要分析hbase split的核心流程,HBase split的主要操作在SplitTransactionImpl.java中。1、所有的split请求被包装成SplitRequest对象,该对象会被放入到队列中,由HRegionServer持有,在HRegionServer中有一个CompactSplitThread对象,所有compact/split相关的线程由该对象管理;2、进

2016-12-20 18:04:18 2012

原创 HBase的compact流程分析

关于hbase的compact意义及其应用背景已经有很多文章做了描述,这里不再赘述,本文以1.1.2背景的hbase为例,从源码中分析hbase中compact请求发出到接受处理的流程,限于作者水平有限,分析中可能有疏漏或者错误的地方,希望大家指正,一起学习提高。从regionserver开始分析compact的流程,regionserver初始化的时候会初始化两个与compact相关的线程分

2016-12-20 14:06:16 6394

原创 一种实现mysql里自增序列的方法

最近工作中遇到一个需求,需要设计一个自增字段,当每插入一条记录的时候,该字段加1,但是由于种种原因,该字段无法作为primary key存在,这样就需要该字段实现为一个自增序列。mysql中的auto_increment可以实现自增长,其起始值是可以指定的,步长固定就是1,但是一张表里只有一个字段可以设置为auto_increment,我们的表中已经存在主键字段,其它字段就不能再指定为auto

2016-11-18 14:16:22 8184 1

原创 hbase的admin可用api汇总

hbase的admin接口提供了一系列可以获得集群访问状态的api,如果是做hbase的集群监控系统,通过这些api或许可以帮你获得关于当前集群访问情况的数据,并简单介绍这些api返回的信息和一些使用姿势。admin.listTableNames():返回集群的table列表admin.getClusterStatus():返回一个ClusterStatus类,该类描述了集群整体的一些状态

2016-10-27 23:27:03 4054

原创 hbase零碎小记

1)hbase表查行可以在shell中进行,命令如下:count ’tablename’,CACHE=>10000,INTERVAL=>10000CACHE是客户端缓存条数,INTERVAL是分隔多久显示一次结果上述方法实现是走scan客户端完成,一旦表较大,查起来很慢。另外一种方式如下: bin/hbase org.apac

2016-10-27 11:17:41 4679

原创 HBase的Scan实现源码分析

我们从接口InternalScanner开始分析,实现该接口的类表示其是使用于HBase内部的scanner,不暴露给客户端使用。实现了这个接口的类如下所示:KeyValueHeap、StoreScanner、RegionScanner下面再看KeyValueScanner,KeyValueScanner也是一个接口,它是一个可以向外迭代出KeyValue的scanner。它定义的

2016-09-23 16:53:02 4885

原创 Linux系统运维常用命令汇总

netstat -na | grep 7651 查看本机7651端口在和谁通信 ps aux | grep 7651查看本机7651进程的相关信息md5sum 文件名用于查看文件的md5值,常用于检查文件是否一致ps aux --sort -rss显示各个进程对内存的使用情况,从大到小排序netstat -ntpl查看处于

2016-09-09 19:32:41 3633 1

原创 git常用命令汇总

1、推送本地分支到远程分支git push origin local_branch:remote_branchlocal_branch是你创建的本地分支,remote_branch是远程上的分之,如果remote_branch不存在则自动创建该分支。类似地,git push origin :remote_branch,local_branch留空的话则删除远程的remote_branc

2016-09-07 18:31:09 335

原创 java的ThreadPoolExecutor与BlockingQueue

本文介绍java中经常用到的ThreadPoolExecutor,并共同探讨学习其中用到的参数BlockingQueue。在介绍具体的实例之前,先来看看ThreadPoolExecutor在hbase中的应用。hbase中的HTable类用于客户端获得服务器上一个table的连接,其构造函数中会创建线程池,后续数据传输的连接都从该线程池中获取,这部分的源代码如下所示:public static

2016-08-28 17:23:17 1462

原创 JMM内存可见性与顺序一致性模型

首先让我们从as-if-serial语义讲起,程序执行时为提高性能,编译器和处理器常常会对指令做重排序,该语义是指不管怎么重排序,单线程程序的执行结果不能被改变。根据该语义存在数据依赖关系的操作不会发生重排序,因为这种重排序会改变程序的执行结果,部分存在控制依赖关系的操作可以做重排序。编译器和处理器中为了实现as-if-serial语义,定义了一系列的重排序规则,并通过内存屏障指令实现。内存屏

2016-08-20 22:37:11 3355

原创 常用的linux系统性能查询指令

本文汇总工作可能会使用到的linux性能查询指令,并给出指令的实际用例与输出解释,本文将长期更新,限于作者水平有限,文中有描述不准确的地方欢迎指出,共同学习提高。1、tsar指令tsar是淘宝开发的用来收集服务器系统信息(mem、cpu、io、tcp)的工具,如下图所示的命令可以输出tsar的帮助信息从上图中可以看出tsar可以监控系统的cpu使用情况、物理内存&虚拟内存的使用、T

2016-08-19 11:50:12 2758

原创 数据库的事务实现与ACID属性

本文简要讲述了作者所理解的事务概念与ACID属性,并简要介绍了这四个属性在数据库中的实现方式。

2016-08-18 15:18:44 1077

原创 分布式hadoop集群安装启动流程

介绍分布式hadoop HA集群安装启动流程

2016-08-17 14:19:58 2167

原创 linux系统运维实例分享

收集linux环境下应用大数据系统的运维案例

2016-08-11 11:32:20 6762

原创 你可能会用到的数据库工具

1、percona-toolkitpercona-toolkit是一组高级命令行工具集合。2、pt-query-digestpt-query-digest是用于分析mysql的一个工具,可以分析binlog、slowlog、General log等。统计出各查询的执行时间、次数、占比等等。如下是一个使用pt-query-digest的查询示例:pt-query-digest --p

2016-08-09 20:46:10 514

原创 HBase StoreFile的实现分析

StoreFile是hbase中的数据文件,HBase中memestore的每次flush都会形成一个storefile文件。我们知道HBase中的数据索引是按照LSM tree组织起来的,简单来说,LSM tree就是一系列的B+ tree组织起来,对应着每个storefile就是一棵B+ tree。本文主要分析StoreFile中的Reader和Writer的实现,并简要分析storefile中数据是如何组织成一个B+ tree,欢迎大家一起讨论学习,本文长期更新。

2016-08-09 14:36:50 6305

原创 Hadoop&HBase集群linux配置优化

本文会收集工作中遇到的Hadoop&HBase系统优化涉及到的各个参数,并简要介绍如此设置的意义。1、禁用集群所有节点的transparent huge page特性,设置方式如下:echo "never" > /sys/kernel/mm/redhat_transparent_hugepage/enabledecho "never" > /sys/kernel/mm/redh...

2016-07-31 22:34:52 727

转载 SSD优化案例:读策略优化和中断多核绑定

转自:http://noops.me/?p=1778没有开场白,直接切主题!各位把这篇当成是报告来阅读吧:应用IO模型:大量读线程同时访问多块SSD,请求均为4KB随机读,并且被请求的数据有一定间隔连续性;服务器硬件配置:LSI SAS 2308直连卡 + 8块SSD优化前应用QPS:27K第一轮优化:读策略优化通过 /sys/block/sdx

2016-07-28 11:15:35 2048

原创 HBase Replication源码解析之HLog读取

本文分析了HBase Replication中的源码实现,主要针对Replication中hlog的读取模块进行了分析,通过本文读者可以了解hlog读取所使用到的类以及其处理流程

2016-07-21 14:14:49 2435

空空如也

空空如也

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

TA关注的人

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