自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走在前往架构师的路上

专注于分布式计算,大数据,数据挖掘,机器学习算法等领域的研究

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

原创 YARN Federation的架构设计

文章目录前言前言对于HDFS的扩展性问题来说,很多人或许都了解过HDFS federation的方案,一种通过横向扩展命名空间的做法来延展其扩展性。其实,随着集群规模的扩张,不仅仅存储系统会有性能瓶颈问题,计算系统也会存在这样的问题,比如说YARN的ResourceManager(下面简写为RM)服务。当RM下面管理这上千甚至上万个NodeManager节点时,同样会面临着许多性能问题,大量...

2019-06-20 23:39:35 3584 2

原创 HDFS RBF的资源隔离设计

文章目录前言RBF的资源隔离和FCQ的资源隔离RBF的fairness管控原理引用前言Hadoop社区在HDFS-10467中实现了基于路由的federation功能,此功能比原先传统的HDFS federation+viewfs的方式有了很大的改进,真正做到了基于后端的路由映射,而不是viewfs在客户端做地址解析转发。基于后端来做的话,背后的mount映射管理权就归到了系统管理员身上了。...

2019-06-15 12:25:30 3912 2

原创 Trie Tree和Radix Tree

前言在实际应用场景中,很多时候我们会用到字典集的查找。通过一个键值key,去拿到它对应的值对象。这种方法确实很高效,很快,但是这里有个问题,当字典集储存的键值很多的情况时,毫无疑问,这里会消耗掉大量的内存空间。这个在我们做基数计数的统计应用时,这个空间会膨胀地特别厉害。本节笔者将要谈论的是对于基数统计来说,使用上更为适用的1种数据结构Trie Tree以及它的衍生优化版Radix Tree。...

2019-06-13 22:38:28 5634 1

原创 DataNode Layout升级解决Du操作引发的性能问题

文章目录前言DataNode中Du操作的性能问题Linux directory、inode cache对于du的影响DataNode Layout升级减少现有目录层级前言在HDFS的DN中,为了计算DN的capacity使用量,DN会针对其自身的每块盘路径,进行du操作,然后将此数据汇报到NN中,然后NN就知道了下面所有DN的实际空间使用容量了。然后NN就知道哪些DN有空间能被写数据进去,哪...

2019-06-09 11:01:11 1511 6

原创 Write-Ahead Log(WAL)的工作原理

前言在存储系统的运行过程中,每时每刻都发生着数据的更新,背后意味着诸如创建,删除,修改文件等数据的操作。抛开物理文件数据的改变,对于中心控制节点而言,这些都会涉及到元数据的更新操作。而为了保持系统元数据和物理数据间的状态一致性,系统所有的数据操作对应的元数据变更都需要持久化到元数据db内,但其实这里有一个性能问题,我们的每次变更如果都要实时同步到外部db内,是否意味着高频的io操作?是否有延时...

2019-06-07 10:12:05 15597

原创 YARN的共享存储服务

文章目录前言YARN的共享存储服务的起源YARN的共享存储服务架构共享存储服务的组件构成共享存储服务的流程后续改进工作参考文献前言在YARN上运行的任务,在任务正式开始运行之前,需要有一步资源的localization的过程,然后用户的任务才能顺利地跑起来。这个”资源“可以是用户依赖的库文件等任务运行所需要的文件。这些资源文件被YARN中此任务对应的Container所共享,这些Contai...

2019-05-29 00:25:33 1130

原创 论分布式系统内的节点坏盘感知

文章目录前言磁盘损坏的定义HDFS(存储系统)的磁盘检测YARN(计算系统)的磁盘检测附注:YARN AsyncDispatcher的内部细节流程前言在分布式集群运行环境中,磁盘损坏是极为司空见惯的事情。损坏的一个直接影响是系统少了一个可用空间,同时也意味着上面存储数据的损坏。而对于这样磁盘的损坏,它分别对于存储系统和计算系统的影响并不相同。同样的,对于坏盘和处理逻辑,也未必是相同的。本文,...

2019-05-24 22:42:11 1309

原创 存储系统双缓冲设计模式

文章目录前言单缓冲模式单缓冲模式改进: 双缓冲模式前言在存储系统写数据的过程中,出于性能上的考虑,新写的数据并不是每次都flush到目标存储中的,而是先放入到一个buffer空间里,等到buffer空间满了,再做一次flush出去的动作。这种情况和人们等车的例子极为类似,一辆车等人都上满了再开,才能保证更高的效率。但是这种缓冲设计模式还是存有一个主要弊端的,当缓冲数据满后将会阻塞住后面的数据...

2019-05-19 12:18:27 2788 6

原创 YARN的Log Aggregation原理

文章目录前言Log Aggregation日志的汇聚日志的retain策略Log Aggregation的查询Log Aggregation流程图前言在大数据的时代,我们想从数据中去分析提炼出有价值的东西,背后有时是成百上千个任务的运算结果。在一些比较大的数据平台的规模下,出一份第二天的详尽的数据报表信息,需要前一天跑上数十万级别的任务数。更直接地来说,我们的计算平台单日内需要调度并执行完这...

2019-05-11 21:50:40 3148

原创 Ozone Security:基于证书的Block Access Token认证

文章目录前言Block Access Token的作用Block Acess Token的生成证书的生成Block Access Token流程图前言在HDFS中,我们有Block Access Token的机制来保证DataNode数据块访问的安全性控制。同样地,在Ozone中也有类似地一套安全机制。不过Ozone是基于X.509证书体系下的安全机制,所以在这点上和HDFS的内部实现还是有...

2019-05-06 23:59:14 1366

原创 HDFS块副本的冗余度构建流程

文章目录前言HDFS块状态类型HDFS块副本冗余度的重建重建围绕的核心:NeedReplica待复制副本的优先级划分HDFS的延时副本重建过程前言在分布式存储系统中,数据往往通过以副本的形式来保持其冗余性。因为存储的集群规模大到一定程度,每天有若干节点挂掉是很常见的现象,单副本数据显然会存在高概率丢数据的情况的。那么这里有一个问题,当存储节点挂掉的时候,系统如何再次让数据保持和原先一样的冗余...

2019-05-01 12:45:20 2013

原创 Hadoop Ozone Security模块设计概览

文章目录前言分布式系统的安全设计到的模块ACL/UGO控制Kerberos认证机制+PKI公共密钥设施验证Audit审计日志引用前言任何一个分布式系统,当它的功能实现和设计越趋向于完善的时候,它的安全性就会显得越发的重要。因为一个好用且成熟的系统,依然会存在被恶意者利用安全漏洞攻击的可能性。笔者之前已经聊过些许HDFS安全方面的内容,本文将聊了一个新的系统Hadoop Ozone在这块的设计...

2019-04-27 23:10:28 1140

原创 HDFS数据In-place Upgrade到Ozone的原型方案

文章目录前言HDFS Upgrade到Ozone的目标前言熟悉了解并使用过Hadoop HDFS作为中心数据存储的同学,一定在过去或多或少地遇到过HDFS的扩展性问题,准确来说应该是HDFS NN的扩展性问题。尽管说HDFS在后面引入了诸如HDFS federation之类的方案,但这只是指标不治本。在上层进行了横向扩展。于是乎,后来Hadoop社区设计实现了Ozone系统,从根本上解决HD...

2019-04-16 23:38:40 1497

原创 Hadoop公平调度队列FairCallQueue的优化设想

文章目录前言优化点一: FairCallQueue对于不同RPC Cost的度量优化优化点二: FairCallQueue下的资源预留支持引用前言Hadoop在早期实现了一种公平调度队列取代统一大队列的模式,以此解决Hadoop RPC的拥塞控制问题。简单来理解就是防止个别“不良”用户发起的大量的RPC请求堵住正常用户的请求处理(这部分细节内容可查阅笔者之前写的相关文章)。但是从后面用户对新的...

2019-04-07 23:52:16 2554 10

原创 存储系统“数据之眼”的设计--数据探查服务

文章目录前言数据探查服务的初始点:元数据的同步数据探查服务的分析:索引结构的重新构建数据探查服务的结果:汇聚表DB的存储数据探查服务的额外功能:节点级别的统计数据探查服务的外部展现:用户控制台引用前言在大规模量级的分布式存储系统中,很多时候管理员以及用户都有特定条件的查询需求:比如用户哪个目录文件数据量是最多的?还有对于管理员的需求:哪个节点上存储的文件数量最多,又或者是否存在损坏数据块文件...

2019-03-24 22:13:43 29089

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

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

2019-03-17 16:58:08 4811

原创 Dynamometer:HDFS性能扩展测试工具

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

2019-03-13 23:11:53 20818

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

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

2019-03-09 16:28:19 904

原创 聊聊磁盘数据的损坏

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

2019-03-06 22:33:15 1453

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

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

2019-03-03 12:15:26 1371

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

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

2019-02-24 11:35:19 3686

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

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

2019-02-16 23:43:29 1360

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

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

2019-02-04 20:08:30 4992

原创 ListenableFuture的状态同步和原子更新

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

2019-01-27 22:03:34 1134

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

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

2019-01-20 20:49:39 1258 3

原创 Flink的State概述

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

2019-01-18 23:14:02 7720 1

原创 Flink JobManager的HA原理分析

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

2019-01-12 11:30:20 2286

原创 Flink FileSystem的connector分析

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

2019-01-06 12:15:10 2799

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

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

2019-01-05 12:04:14 9450

原创 聊聊HDFS的权限访问控制

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

2019-01-01 17:52:21 2791

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

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

2018-12-26 20:06:22 5340 1

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

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

2018-12-22 15:02:57 2951

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

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

2018-12-19 23:20:07 12229 1

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

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

2018-12-12 10:52:50 2131

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

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

2018-12-08 15:43:12 1403

原创 循环冗余校验(CRC)的简单应用实践

前言一般来说,数据信息在传输过程中有时会受到外界有意或无意的干扰行为,出现数据的篡改和破坏现象,造成数据接收端的不一致行为。于是乎,在信息领域有了数据校验的概念,今天本文主要来简单聊聊其中的经典使用算法CRC(循环冗余校验)以及其在Ozone中的应用实践。CRC和Checksum的关系往往我们在谈论CRC的时候,马上会联想到Checksum这个词,二者是等同的意思吗?实则还是有区别的。...

2018-12-03 23:10:02 4775

原创 聊聊Hadoop安全认证体系:Delegation Token和Block Access Token

前言本文继续上一篇Hadoop安全认证方面的内容主题,来简单聊聊Hadoop内部的其它认证体系:Delegation Token(授权令牌认证)和Block Access Token(块访问认证)。主要来聊聊这两者间的差异,顺带也会提及一些Kerberos认证的一点内容。这里不深挖其中的技术细节,整体阐述会比较简单,明了。Kerberos认证Kerberos认证是业界较为成熟的一种认证体...

2018-11-29 23:15:59 3453 1

原创 Hadoop基于Service级别的认证机制

前言最近在学习Hadoop Security方面的内容,但注意了,本文今天不是介绍Kerberos认证机制的。今天分享一个Service Level的认证机制,可以说它是一种预先认证行为,比我们常说的HDFS权限验证等等都要更早一些。一句话简单地来讲,它是Service/Service,Service/Client之间建立连接时候的认证。OK,下面笔者来简单聊聊这套认证体系。什么是Servi...

2018-11-24 23:23:05 1296

原创 审计日志在分布式系统中的应用

前言分布式系统的执行环境往往是异常复杂的,很多情况涉及到多节点间的消息通信。相比较于单节点系统而言,分布式系统在问题追踪,排查方面显然也复杂很多。那么这个时候,在分布式系统中,增加哪些类型的日志数据,来帮助我们发现和定位问题呢?答案就是我们今天将要阐述的审计日志(Audit log)。审计日志的概念很多人可能在想这样一个问题:同样是日志,审计日志和普通的日志,区别在于哪里呢?审计日志,...

2018-11-18 11:44:40 5745

原创 Hadoop Rolling Upgrade经验总结

前言从去年下半年开始,组内就开始着手准备升级公司内部的Hadoop集群,由于老版本实在已经落后社区很多了,也陆续碰到很多社区上已经被fix的bug。所以决定做一个大胆的举动:升级公司内部大集群版本。像这种比较aggressive的做法,很多人不是一开始能够接受,它存在不可控的风险。但所幸,在今年暑假,我们成功将内部版本升到了最近比较新的Hadoop版本。本文是对此过程的经验教训,相信会给很多想...

2018-10-28 11:48:00 1401 19

空空如也

空空如也

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

TA关注的人

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