自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(308)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

转载 hbase hbck及region RIT处理

hbase hbck主要用来检查hbase集群region的状态以及对有问题的region进行修复。hbase hbck :检查hbase所有表的一致性,如果正常,就会Print OKhbase hbck -details:检查hbase所有表的一致性,并且输出详细报告。hbase hbck table1 table2:指定检查某些表,可以输入多个表,用空格隔开。HBCK - HBCK检查什么?(1)HBase Region一致性集群中所有region都被assign,而..

2021-05-18 15:40:13 11

转载 linux查看服务器配置(CPU、物理核数、逻辑核数、内存)

总核数 = 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数1、查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l或grep 'physical id' /proc/cpuinfo | sort -u | wc -l2、查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"|

2021-05-14 11:09:47 18

转载 OpenJDK ZGC 源码分析(二)触发GC的时机

1. 简介ZGC的回收周期触发时机与其他GC算法略有不同,VM内部有个线程轮询定期检查是否满足开始回收的条件,如果满足则开始回收。ZGC提供四种策略,其中一种满足条件即触发回收:rule_timer,定时策略,距离上次GC时间超过interval即触发GC rule_warmup,VM启动后,如果从来没有发生过GC,则在堆内存使用超过10%、20%、30%时,分别触发一次GC,以收集GC数据 rule_allocation_rate,根据对象分配速率决定是否GC rule_proactiv

2021-03-31 11:24:41 38

转载 OpenJDK ZGC 源码分析(一)概览

1. 前言G1是JDK中最新最成熟的垃圾回收器,其稳定性和性能得到了广泛的认可。但是,一方面随着硬件的发展,堆空间越来越大,几十GB、上百GB的内存在生产环境逐渐出现;另一方面,对于停顿时间的需求日益严苛,从最初的秒级到百毫秒级,再到十毫秒级和毫秒级。G1对于这种情况逐渐力不从心,下一代低延迟垃圾回收器主要有ZGC和Shenandoah。本文将详细介绍ZGC相关原理。2. 历史Oracle在2017年将ZGC贡献给OpenJDK社区。在JDK 11中作为实验性功能加入(JEP 333: ZG

2021-03-31 10:50:31 41

转载 ParNew收集器复习

以下摘自:《深入理解Java虚拟机:JVM高级特性与最佳实践》第3章垃圾收集器与内存分配策略ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数(例如:-XX:SurvivorRatio、 -XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器完全一样,实现上这两种收集器也共

2021-02-22 15:41:28 54

转载 JVM 中的 GC Roots 和可达链

什么是GC Root 对象?简单讲,凡是被常量、静态变量、全局变量、运行时方法中的变量直接引用的对象,原则上不能被GC释放。JVM中对内存进行回收时,需要判断对象是否仍在使用中,可以通过 GC Roots Tracing辨别。GC Roots 定义:通过一系列名为”GCRoots”的对象作为起始点,从这个节点向下搜索,搜索走过的路径称为ReferenceChain,当一个对象到GCRoots没有任何ReferenceChain相连时,(图论:这个对象不可到达),则证明这个对象不可用。

2021-02-17 23:14:07 69

转载 【Hadoop学习】HDFS 短路本地读

Hadoop版本:2.6.0背景在HDFS中,通常是通过DataNode来读取数据的。但是,当客户端向DataNode请求读取文件时,DataNode就会从磁盘读取该文件并通过TCP socket将数据发送到客户端。所谓“短路”是指旁路DataNode来读取文件,也就是说,允许客户端直接读取文件。很明显,这种情况只在客户端与数据放在同一地点(译者注:同一主机)时才有可能发生。短路读对于许多应用程序会带来重大的性能提升。创建要配置短路本地读,你需要使能libhadoop.so。详见..

2021-02-01 23:10:39 68

转载 HDFS 本地短路读取 Short-Circuit Local Reads

背景在 HDFS 中,读操作通常要经过 DataNode。因此,当客户端请求 DataNode 读取文件时,DataNode 从磁盘读取该文件并通过 TCP 套接字将数据发送给客户端。所谓的“短路”读取就是绕过 DataNode,允许客户端直接读取文件。当然,这只有在客户端与数据共存的情况下才可能实现。短路读取为许多应用程序提供了实质性的性能提升。设置要配置短路本地读操作,您需要启用libhadoop.so,有关启用此库的详细信息,请参阅https://hadoop.apache.org/doc

2021-02-01 22:43:09 26

转载 HBase MemStore简介

MemStore 是 HBase 非常重要的组成部分,MemStore 作为 HBase 的写缓存,保存着数据的最近一次更新,同时是HBase能够实现高性能随机读写的重要组成。MemStoreHBase Table 的每个 Column family 维护一个 MemStore,当满足一定条件时 MemStore 会执行一次 flush,文件系统中生成新的 HFile。而每次 Flush 的最小单位是 Region。MemStore的主要作用: 更新数据存储在 MemStore 中,使

2021-01-24 18:41:42 35

原创 HBase中LSM-tree的应用

前言传统的关系型数据库一般使用B树作为索引结构,而在大数据场景下,比较多的存储引擎使用LSM-tree这种数据结构,比如hbase、kudu等,本篇文章介绍下HBase中LSM-tree的具体应用以及针对读性能的具体优化机制(compaction、应用BloomFilter以及BlockCache),HBase中的LSM应用我们知道LSM树的存储结构由2部分组成,一部分是内存部分,一部分是磁盘部分。在hbase实现中,内存部分采用跳跃表来维护一个有序的KeyV...

2020-12-17 23:50:08 69

原创 LSM-Tree介绍

前言2006年的OSDI有两篇Google的论文,分别是BigTable和Chubby。Chubby是一个分布式锁服务,基于Paxos算法;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。相当多的google应用使用了BigTable,比如Google Earth和Google Analytics,因此它和GFS、MapReduce并称为谷歌技术"三宝"。Google发布的BigTable这篇论文的一个很有价值的方面是它使用

2020-12-16 23:03:28 162

转载 LSM Tree存储组织结构介绍

LSM Tree(Log Structured Merge Trees)数据组织方式被应用于多种数据库,如LevelDB、HBase、Cassandra等,下面我们从为什么使用LSM tree、LSM tree的实现思路两方面介绍这种存储组织结构,完成对LSM tree的初步了解。存储背景回顾LSM tree相较B+树或其他索引存储实现方式,提供了更好的写性能。究其原因,我们先回顾磁盘相关的一点背景知识。顺序操作磁盘的性能,较随机读写磁盘的性能高很多,我们实现数据库时,也是围绕磁盘的这点特性进行

2020-12-15 22:24:27 72

转载 跳跃表(skiplist)

跳跃表(SkipList)是一种能高效实现插入、删除、查找的内存数据结构,这些操作的期望复杂度都是O(logN)。与红黑树以及其他的二分查找树相比,跳跃表的优势在于实现简单,而且在并发场景下加锁粒度更小,从而可以实现更高的并发性。正因为这些优点,跳跃表广泛使用于KV数据库中,诸如Redis、LevelDB、HBase都把跳跃表作为一种维护有序数据集合的基础数据结构。众所周知,链表这种数据结构的查询复杂度为O(N),这里N是链表中元素的个数。在已经找到要删除元素的情况下,再执行链表的删除操作其实非常高效,

2020-12-14 22:27:05 95

原创 聊聊java的Fork/Join框架

背景某日线上hdfs集群namenode状态切换出现长时间延迟情况,排查zkfc log发现有调用namenode 的切换状态的rpc方法超时的报错。通过打印切换过程时的火焰图发现几乎所有的调用时间都花费在了递归更新namespace quota上。梳理具体的代码逻辑,namenode端处理zkfc transitionToActive切换状态请求,需要保证所有的editlog已加载完成,并调用递归方法updateCountForQuotaRecursively更新整个fsimage下的配额和使用量信.

2020-12-13 01:08:12 24

原创 浅谈copy-on-write

写入时复制(Copy-on-write)是一个被使用在程序设计领域的最佳化策略。其基础的观念是,如果有多个呼叫者(callers)同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者(caller)尝试修改资源时,系统才会真正复制一个副本(private copy)给该呼叫者,以避免被修改的资源被直接察觉到,这过程对其他的呼叫只都是通透的(transparently)。此作法主要的优点是如果呼叫者并没有修改该资源,就不会有副本(private copy)被建立。--百度百科简介.

2020-12-11 21:44:01 41

原创 读写锁饥饿问题解决方案之StampedLock

引言ReentrantReadWriteLock可以让多个读线程同时持有读锁(只要写锁未被占用),而写锁是独占的,所以在读多写少的场景上可以提高吞吐量,比如hdfs文件系统。但是,读写锁如果使用不当,很容易产生“饥饿”问题,比如在读线程非常多,写线程很少的情况下,很容易导致写线程“饥饿”,虽然使用“公平”策略可以一定程度上缓解这个问题,但是“公平”策略是以牺牲系统吞吐量为代价的。导致写线程饥饿的情况:当线程 A 持有读锁读取数据时,线程 B 要获取写锁修改数据就只能到队列里排队。此时又来了线程 C

2020-12-09 22:23:25 369

转载 StampedLock原理分析

背景ReentrantReadWriteLock可以让多个读线程同时持有读锁(只要写锁未被占用),而写锁是独占的,所以在读多写少的场景上可以提高吞吐量,比如hdfs文件系统。但是,读写锁如果使用不当,很容易产生“饥饿”问题,比如在读线程非常多,写线程很少的情况下,很容易导致写线程“饥饿”,虽然使用“公平”策略可以一定程度上缓解这个问题,但是“公平”策略是以牺牲系统吞吐量为代价的。导致写线程饥饿的情况:当线程 A 持有读锁读取数据时,线程 B 要获取写锁修改数据就只能到队列里排队。此时又来了线程 C

2020-12-08 23:53:41 125

转载 Kylin、Druid、ClickHouse核心技术对比

文章作者:吴建超内容来源:jackywoo.cn出品平台:DataFunTalk导读:Kylin、Druid、ClickHouse是目前主流的OLAP引擎,本文尝试从数据模型和索引结构两个角度,分析这几个引擎的核心技术,并做简单对比。在阅读本文之前希望能对Kylin、Druid、ClickHouse有所理解。01Kylin数据模型Kylin的数据模型本质上是将二维表(Hive表)转换为Cube,然后将Cube存储到HBase表中,也就是两次转换。第一次转换,其实就是传统数据库的C

2020-12-04 22:52:30 78

转载 OpenTSDB 数据存储详解

随着互联网、尤其是物联网的发展,我们需要把各种类型的终端实时监测、检查与分析设备所采集、产生的数据记录下来,在有时间的坐标中将这些数据连点成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。这些数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。基于时间序列数据的特点,

2020-11-30 22:45:15 135

转载 性能优化之cpu的 us和sy

随着系统数据量的不断增长, 访问量的不断提升, 系统的响应通常会越来越慢, 又或是编写的新的应用在性能上无法满足需求, 这个时候需要对系统的性能进行调优, 调优过程是构建高性能应用的必备过程, 也是一个相当复杂的过程, 而且涉及到了很多的方面, 硬件、操作系统、 运行环境软件以及应用本身, 要实现调优, 首先需要做的是找到性能低的根本原因, 然后才是针对性的进行调优, 本章节就来介绍下寻找性能瓶颈以及调优的一些技术上的方法。CPU 消耗分析当 CPU 消耗过高时, 对于多线程的 Java 应用而言,

2020-11-30 22:05:17 42

转载 解读linux iowait

%iowait 是使用linux检测工具(iostat、sar 等)检查CPU使用率时显示的一个指标,在一些Unix版本上显示为 %wio。这个指标常常被误读,很多人把它当作I/O出现瓶颈的参考指标,我自己每隔一段时间就会遇到对 %iowait 紧张兮兮的客户,不得不费尽唇舌反复解释。事实上这个指标所含的信息量非常少,不能单独用来判断系统有没有I/O问题。接下来我们详细探讨一下它真正的含义。man iostat :Linux的man page上的解释是:%iowait 表示在一个采样周期内有百分

2020-11-30 21:43:06 75

转载 58HBase平台实践和应用—时序数据库篇

OpenTSDB是一个分布式、可伸缩的时序数据库,支持高达每秒百万级的写入能力,支持毫秒级精度的数据存储,不需要降精度也可以永久保存数据。其优越的写性能和存储能力,得益于其底层依赖的HBase,HBase采用LSM树结构存储引擎加上分布式的架构,提供了优越的写入能力,底层依赖的完全水平扩展的HDFS提供了优越的存储能力。在58,OpenTSDB目前主要用于数据平台监控系统中相关性能指标的存储查询,58智能监控系统中回归模型和分类模型原始明细数据存储查询,以及风铃监控预警系统数据的存储查询等。Open

2020-11-29 22:57:59 113

原创 聊聊自旋锁

自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,即在标志寄存器中关闭/打开中断标志位,不需要自旋锁)。---百度百科背景由于在多处理器环境中资源的有限性和并发安全问题,很多时候需要进行互斥访问(mutual exclusion),所以需要引入锁的机制,只有获取了锁的线程才能够对资源进行访问,由于多线程运行是依赖cpu的时间分片,所以同一时刻只能有一个线程获取到锁。那么没有获取到锁的线程通常有两种方式.

2020-11-29 22:44:05 105

原创 SMP、NUMA、MPP体系结构

前言:系统的性能很大程度上依赖于cpu 硬件架构的支持,所以了解cpu不同架构体系对开发人员优化性能非常重要,且可以通过学习相关的架构体系,借鉴或者应用到开发架构上。本篇内容参考和摘录一些技术博客进行整理,如有错误之处欢迎指正。从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构(SMP :Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA :Non-Uniform Memory Access) ,以及海量并行处理结构 (MPP :Massive P.

2020-11-29 22:40:12 69

原创 git常见使用命令&常见问题解决方法记录

常见操作1. checkout操作:git checkout -b branch1(本地分支名) origin/branch1(远程分支名)2. diff操作:#比较一个文件两个版本的区别$ git diff HEAD^^ HEAD main.c$ git diff HEAD^^..HEAD -- main.c$ git diff HEAD~2 HEAD -- main.c3. stash操作# 当git pull发现有代码冲突时,本地的所有修改就需要被暂时存储起来gi

2020-11-29 22:36:10 40

转载 OpenTSDB介绍

OpenTSDB 2.0, the scalable, distributed time series database可扩展、分布式时间序列数据库1、背景一些老的监控系统,它常常会出现这样的问题:1)中心化数据存储进而导致单点故障。2)有限的存储空间。3)数据会因为时间问题而变得不准确。4)不易于定制图形。5)不能扩展采集数据点到100亿级别。6)不能扩展metrics到K级别。7)不支持秒级别的数据。OpenTSDB解决上面的问题:1、它用hbase存储所有的

2020-11-23 23:03:17 47

转载 ClickHouse内核分析 MergeTree的存储结构和查询加速

注:以下分析基于开源 v19.15.2.2-stable 版本进行引言ClickHouse是最近比较火的一款开源列式存储分析型数据库,它最核心的特点就是极致存储压缩率和查询性能,本人最近正在学习ClickHouse这款产品中。从我个人的视角来看存储是决定一款数据库核心竞争力、适用场景的关键所在,所以接下来我会陆续推出一系列文章来分析ClickHouse中最重要的MergeTree存储内核。本文主旨在于介绍MergeTree的存储格式,并且彻底剖析MergeTree存储的极致检索性能。MergeT

2020-11-22 23:30:45 85

原创 浅谈TCP的keep-alive机制

相关背景:hbase集群大量的regionserver节点因Linux服务器上的fd数量不足导致进程主动退出,每台服务器上处于CLOSE_WAIT状态的tcp连接有10万+,排查发现是regionserver访问datanode产生的大量tcp连接;首先简单回顾一下TCP断开连接的过程,如下图所示。CLOSE_WAIT产生的原因是被动方收到FIN请求后没有调用close();一般是由于对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()

2020-11-16 21:52:12 236

转载 一文读懂HBase多租户

本文从三个方面介绍了HBase的多租户实现。多租户(multi-tenancy technology),参考维基百科定义,它是在探讨与实现如何于多用户的环境下共享相同的系统或程序,并且仍可确保各用户间数据的隔离性。随着云计算时代的到来,多租户对于云上服务显得更加重要。所以HBase也有许多多租户相关的功能,其为多个用户共享同一个HBase集群,提供了资源隔离的能力。本文将从Namespace&ACL,Quota,RSGroup三个方面来进行介绍。Namespace&ACL在HBa

2020-11-10 17:49:13 91

转载 hbase架构原理

本篇文章主要从接方面介绍下hbase建构原理相关的内容;一. 什么是hbase?HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建大规模结构化存储集群。HBase是Google BigTable的开源实现,与Google BigTable利用GFS作为其文件存储系统类似,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理BigTable中的海量数据,HBase同样利用Hadoop.

2020-10-10 16:51:09 48

转载 HBase compact 总结 及 调优配置

Compaction介绍在HBase中,每当memstore的数据flush到磁盘后,就形成一个storefile,当storefile的数量越来越大时,会严重影响HBase的读性能,所以必须将过多的storefile文件进行合并操作。Compaction是Buffer-flush-merge的LSM-Tree模型的关键操作,主要起到如下几个作用:(1)合并文件(2)清除删除、过期、多余版本的数据(3)提高读写数据的效率HBase中实现了两种compaction的方式:minoran..

2020-10-09 20:13:44 323

转载 Class.forName 和 ClassLoader 到底有啥区别?

在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。Class.forName()方法实际上也是调用的CLassLoader来实现的。Class.forName(String className);这个方法的源码是@CallerSensitive public static Class<

2020-09-17 15:01:02 32

转载 Gremlin:图遍历语言

Gremlin简介Gremlin是Apache TinkerPop框架下的图遍历语言。Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。每个Gremlin遍历由一系列步骤(可能存在嵌套)组成,每一步都在数据流(data stream)上执行一个原子操作。Gremlin包括三个基本的操作:map-step 对数据流中的对象进行转换; filter-step 对数据流中的对象就行过滤; sideEffect-ste.

2020-09-02 16:59:15 137

转载 JanusGraph Server的配置和使用

JanusGraph是一款图数据库,关于它的简单安装,大家可以看菌子的linux学习系列中的centos7下安装janusGraph单机版。 JanusGraph Server有两种连接方式,一种是socket,另一种是http。两种方式的配置方式差别不大,也可以配置同时支持socket和http的模式。本文将直接配置同时支持socket和http的模式。首先我们进入JanusGraph目录的conf目录中。我们需要的文件是janusgraph-hbase-es.properties和...

2020-09-02 15:17:27 207

转载 centos7下安装janusGraph单机版

janusGraph是一款图数据库,继承自titan,支持分布式,可以集成了多种数据库,大数据平台,如hbase,hadoop,spark,Elasticsearch等。详细介绍大家可参考官方文档janusgraph官方文档。下面我们介绍如何在centos7上安装配置单机版本的janusGraph。安装运行janusGraph需要一个数据库如hbase,一个索引数据库如:elasticsearch。所以先要装好这两个软件。当然也可以用别的库,具体支持哪些库请查阅官方文档janusgraph官方文档。1.

2020-09-02 15:08:06 120

转载 hbase balance命令相关

balance主要有四个命令balance_switchbalancerbalancer_enabledbalance_rsgroup(如果开启了rsgroup)1.balance_switchhbase帮助信息:hbase(main):001:0>help 'balance_switch'Enable/Disable balancer. Returns previous balancer state.Examples: hbase> balance...

2020-09-01 15:26:49 154

转载 hbase中balance机制

HBase是一种支持自动负载均衡的分布式KV数据库,在开启balance的开关(balance_switch)后,HBase的HMaster进程会自动根据指定策略挑选出一些Region,并将这些Region分配给负载比较低的RegionServer上。官方目前支持两种挑选Region的策略,一种叫做DefaultLoadBalancer,另一种叫做StochasticLoadBalancer,这两种策略后面会具体讲到。由于HBase的所有数据(包括HLog/Meta/HStoreFile等)都是写入到H..

2020-09-01 15:14:27 246

转载 Hbase用户权限

Hbase用户权限管理HBase提供五个权限标识符:(RWXCA)R - represents read privilege.W - represents write privilege.X - represents execute privilege.C - represents create privilege.A - represents admin privilege.HBase提供的安全管控级别包括:Superuser:拥有所有权限的超级管理员用户,通过hbase.su

2020-08-30 00:29:25 601

转载 Hbase BulkLoad机制

Hbase 是一种基于Hadoop的Nosql的数据库,有高吞吐量的特点,由于近几年国内大数据的概念的快速兴起,Hbase也因为它的高吞吐量和快速的检索能力,得到了越来越多人的青睐,虽说Hbase的吞吐量很高,但是在全量数据的Load的时候不能避免的碰到compact-split风暴,由于Hbase底层region的存储是基于HDFS实现的,所以官方推荐了一种快速进行数据Load的方式。先附上两个链接:http://www.cloudera.com/documentation/enterprise/

2020-08-26 12:45:16 97

转载 sparksql使用总结

前言Spark是专为大规模数据处理而设计的快速通用的计算引擎,在计算能力上优于MapReduce,被誉为第二代大数据计算框架引擎。Spark采用的是内存计算方式。Spark的四大核心是Spark RDD(Sparkcore),SparkSQL,Spark Streaming,Spark ML。而SparkSQL在基于Hive数仓数据的分布式计算上尤为广泛。本编博客主要介绍基于Java API的SparkSQL的一些用法建议和利用Spark处理各种大数据计算的性能优化建议。SparkSQL的一些.

2020-08-16 00:39:03 104

hdfs编译流程

hadoop hdfs编译文档,详细编译流程,环境安装步骤~~

2018-09-26

空空如也

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

TA关注的人 TA的粉丝

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