• 等级
  • 1774321 访问
  • 319 原创
  • 0 转发
  • 1073 排名
  • 387 评论
  • 291 获赞

聊聊Flame Graph(火焰图)的那些事

文章目录前言前言当我们很多时候在分析定位一个比较隐秘的问题时,我们马上能脱口而出好几种方法,查日志找异常,再细致一点的,jmap,jstack分析stacktrace。但是一般如果到了分析stacktrance的阶段时,说明这个很可能已经是performance的问题了。但其实很多时候,jstack这种默认的命令工具对于开发者来说还不够直观与好理解。...

2019-03-17 16:58:08

Dynamometer:HDFS性能扩展测试工具

文章目录前言前言现在稍微具有一定规模的涉及到大数据存储的公司,或多或少都会使用到HDFS作为其数据的存储系统。在不同的公司企业内,不同的应用需求对应会构建出不同级别规模的集群,小则几十台,大则成千上万个节点。当然很多时候,我们的集群规模一般不是一蹴而就就达到一个相当大的规模,在前期的时候往往都是由小集群开始的。随后,再不断不断地进行扩容,扩张。随着集群规模的扩展,运维人员会碰到各种针对那时规...

2019-03-13 23:11:53

论分布式系统中单一锁控制的优化

文章目录前言单一锁控制的弊端单一锁的优化:锁粒度的细化锁的管理锁的容量控制锁的资源优先级问题锁管理的demo样例前言在分布式系统中,为了保持数据操作的一致性,我们会看到锁在里面会有广泛的应用。简单一点的,我们可能就用一个简单的对象锁来做线程安全的同步。再细粒度一些的,我们会用到读写锁,然后对具体操作的属性(ReadOrWrite)在进行读写锁的分离控制。但今天笔者想对此话题再展开细致的探...

2019-03-09 16:28:19

聊聊磁盘数据的损坏

文章目录前言数据的损坏的起因前言在数据存储领域,对于管理员以及用户来说,最怕的无非就一个事情:数据损坏了(这里我们暂不考虑数据被恶意篡改写入的情况)。可能很多人也会假设正常情况下,数据自己损坏的概率应该可以低到忽略不计吧…今天笔者来简单聊聊这个被很少提及的话题,以及相关针对数据损坏,我们现有的一些修复手段和策略。数据的损坏的起因当磁盘中存储的数据有一天突然坏了,我们大部分时刻第一时间联...

2019-03-06 22:33:15

分级副本存储:一种更具效益成本的数据容错策略

文章目录前言传统三副本模式是否从根本上解决数据丢失问题Copyset数据分布策略分级存储引用前言众所周知,在存储系统中,为了保障数据的高可用性,我们会通过保存多个副本来防止因为机器物理故障导致数据丢失的现象。在一个集群(数据中心)内,我们会设定多个副本。甚至我们做的时候做的更完善一些,还做到异地数据的同步,这可能是完全集群的数据同步了。当然企业将数据做到异地多活本身初衷没用问题,但是成本开销...

2019-03-03 12:15:26

分布式存储系统中的Data Scrubbing机理

文章目录前言DataScrubbingVsDataCleaningDataScrubbing的缘起前言在大型的分布式存储系统内,当系统运行超过一段时间,个别存储节点出现数据块的损坏是再常见不过的事情了。这时候从系统层面,它最好能够自动发现并从其它节点同步副本数据。我们称这个过程为DataScrubbing(数据清理)过程。对于一套成熟的分布式系统而言,DataScrubbing...

2019-02-24 11:35:19

论一个成熟分布式系统的工具类设计

文章目录前言分布式系统工具类设计要点性能跟踪,测试工具漏斗排查分析类通用型类前言当作为开发者的我们在设计一套复杂分布式系统之前,很多时候,我们会忘记开发配套的一些工具程序。这个工具程序可以是常见的压力测试工具。按照惯常的压力工具的使用手法,用户能够通过命令行输入执行参数来控制压测程序的执行。在后续系统代码快速开发,更新迭代的过程中,我们可以一直依赖这个压力测试工具来测试系统的稳定性。但是问题来...

2019-02-16 23:43:29

聊聊Raft一致性协议以及Apache Ratis

文章目录前言分布式系统中的经典问题:Consensus问题Raft算法原理前言在分布式系统中,有一类经典的问题经常会被提起:一致性问题。在单机环境中,这看起来根本不是一个问题。但是在多机,多服务,不同网络环境下时,一致性问题就是一个典型的问题了。在分布式系统中,当我们提到一致性问题时,我们立马想到的是Paxos协议。而对此协议的一个开源的实现框架是目前被广泛使用的组件Zookeeper。但是...

2019-02-04 20:08:30

ListenableFuture的状态同步和原子更新

文章目录前言ListenableFuture的监听添加ListenableFuture内的状态同步控制ListenableFuture内的Sync同步其它状态原子更新方法引用前言在Java8里的Future类实现中,引入了一种新的Future类:CompletableFuture。此类相比较于原来的Future类来说,最大的一点不同在于它可以完全异步执行结果回调。而在老Future模式下,用...

2019-01-27 22:03:34

分布式系统中Topology(Rack) Awareness的实现思路

文章目录前言为何要考虑TopologyAwarenessTopologyAwareness的一般实现思路Step1:NodeLocation赋予前言在分布式系统中,尤其是存储系统中,我们经常会看到类似“系统返回一个最近的数据”这样的句子”。当我们谈到一个数据“远近”的问题时,你可以说这是在谈数据locality的问题,但从更宏观的角度来看这个问题,它其实谈的是TopologyAwa...

2019-01-20 20:49:39

Flink的State概述

文章目录前言Flink的State类型基本类型划分组织形式划分前言当我们经常在谈论一个Flink任务是否是有状态的,此时我们谈论的点其实就是Flink内部的State的概念。但是这里的State的概念已经不是单纯指我们平时所说的Event–>State这样的比较固定的概念,更确切地说,它是一种运行间的数据信息。这些状态数据在容错恢复及checkpoint时将起到很关键的作用。本文笔者来...

2019-01-18 23:14:02

Flink JobManager的HA原理分析

文章目录前言前言在中心式管理的系统里,主节点如果只是单独服务部署的话,或多或少都会存在单点瓶颈(SPOF)问题。所以我们说现在的分布式系统都要求具有高可用性(HighAvailability)的实现。同样的,在早期Flinkruntime层面,JobManager也没有完全做到HA的实现,这使得运行时的任务存在失败无法及时恢复的风险。不过在最新的代码里,Flink社区已经完善了这块的实现...

2019-01-12 11:30:20

Flink FileSystem的connector分析

文章目录前言FileSystem的RollingSinkFileSystem连接器的ExactlyOnce恢复语义FileSystemSink的文件状态转换Checkpoint下的ExactlyOnce恢复前言从目前最新的Flink代码来看,现在它能够支持越来越多的connector类型了,不仅仅说包括于前面的Source的连接,还有后面Sink的选择。但是Flink的连接器不是简简单...

2019-01-06 12:15:10

大数据权限授权管理框架:Apache Sentry和Ranger

文章目录前言Sentry和Ranger的概述前言上篇文章后半部分提到了业界流行的大数据权限管理框架ApacheSentry和Ranger。二者在功能上具有很高的相似性,但是在具体细节上上篇文章阐述的还不够细致。本文笔者来深入浅出地聊聊这两个框架,以及它们的少许异同点。熟悉掌握使用外部权限管理框架,并且将它们合理地应用于自身内部大数据组件系统内,无疑将会大大提高内部组件使用的安全性。Sen...

2019-01-05 12:04:14

聊聊HDFS的权限访问控制

文章目录前言典型场景:权限信息不一致情况前言我们都知道HDFS文件系统的访问控制由其内部目录,文件的权限所控制,和Linux文件系统一致。但是当出现HDFS和别的组件进行关联使用时,我们是否还能做到预期的控制效果呢?比如Hive和HDFS的使用,Hive也有它自己独立一套的用户权限体系。本文笔者来简单聊聊HDFS的权限访问控制,我们不聊最简单的情况,只聊那些在生产中实际可能会遇到的场景。典...

2019-01-01 17:52:21

Flink在大规模状态数据集下的checkpoint调优

文章目录前言Checkpoint快慢的性能指标相邻Checkpoint的间隔时间设置外部State的存储选择前言众所周知,Flink内部为了实现它的高可用性,实现了一套强大的checkpoint机制,还能保证作用的ExactlyOnce的快速恢复。对此,围绕checkpoint过程本身做了很多的工作。在官方文档中,也为用户解释了checkpoint的部分原理以及checkpoint在实际生...

2018-12-26 20:06:22

Flink流计算中SQL表的概念和原理

文章目录前言动态表和动态查询的概念动态表的时间属性引用前言Fink在新发布的1.7版本中,不断完善和加强了SQL&TableAPI方面的功能支持。这使得在流计算过程中,用户同样能够运用熟悉的SQL语句来做数据处理,查询。但是相比于窗体的RDBMS而言,流计算过程中的SQL处理难免让人觉得不是很好理解,毕竟数据不是fixed-sized的,而是连续不断的。所以本文,笔者来聊聊这个略显...

2018-12-22 15:02:57

Flink流处理过程的部分原理分析

文章目录前言前言在分布式领域,计算和存储一直是两大子领域。很多分布式理念在计算和存储的实现中会有着完全不同的逻辑,比如我们快照,计算框架中的快照和我们平常说的存储快照实现不同点在于哪里呢?笔者做为一个研究存储模块出身的人,最近在研读Flink流处理的部分原理,小小作番总结。很多时候,以存储的眼光来看待计算过程中的处理过程,还是有很多不一样的地方的。...

2018-12-19 23:20:07

流计算过程中对于窗口的处理方式

前言与传统批处理作业方式不同,实时流的计算处理过程是连续的。所以当我们在流式作业中要做传统的阶段统计工作(求和,取均值计算)的时候,需要在逻辑上对这些数据进行分片,然后再处理。本文我们来聊聊流计算过程中按照时间的处理方式。Window的概念在传统批处理的作业执行方式里,我们可以一次性读取入所有的输入数据,然后经过计算,再输出结果。对于原始数据,我们可以做任意我们想做的预处理工作,包括数据...

2018-12-12 10:52:50

当我们在谈论Flink的时候,我们到底在谈论些什么

前言目前每当我们聊到当下热门的计算引擎的时候,无一例外地会聊到ApacheFlink:当下非常火热的流处理计算框架。更是有人拿它和Spark做对比,到底哪个才是现今最好的计算引擎。当然这个已经不是本文所要阐述的主题啦。老实话,笔者本人做的比较多的还是存储领域,对计算领域的知识不敢说是内行。最近也是抽空学习了下Flink的一些概念体系,来分享分享笔者的一个学习心得吧。#ApacheFli...

2018-12-08 15:43:12

博客专家

Android路上的人

开源社区爱好者,Apache Hadoop Com mitter & PMC,专注于分布式系统,大数据,算法方面的研究 ...展开 收起
关注
  • 互联网·电子商务/大数据工程师
  • 中国 上海 静安区
奖章
  • 博客专家
  • 专栏达人
  • 持之以恒