hadoop
文章平均质量分 73
hadoop
风筝Lee
儿时,你是父母手中的风筝;上学了,你是老师手中的风筝;工作了,你是领导手中的风筝;成家了,你是妻子手中的风筝;老时,你是子女手中的风筝。人生就像风筝,总有一根线牵着你,或长、或短,或紧、或松;你在这头,爱你的人就在那头。
展开
-
【Hadoop学习】HDFS 短路本地读
Hadoop版本:2.6.0背景在HDFS中,通常是通过DataNode来读取数据的。但是,当客户端向DataNode请求读取文件时,DataNode就会从磁盘读取该文件并通过TCP socket将数据发送到客户端。所谓“短路”是指旁路DataNode来读取文件,也就是说,允许客户端直接读取文件。很明显,这种情况只在客户端与数据放在同一地点(译者注:同一主机)时才有可能发生。短路读对于许多应用程序会带来重大的性能提升。创建要配置短路本地读,你需要使能libhadoop.so。详见..转载 2021-02-01 23:10:39 · 772 阅读 · 0 评论 -
HDFS 本地短路读取 Short-Circuit Local Reads
背景在 HDFS 中,读操作通常要经过 DataNode。因此,当客户端请求 DataNode 读取文件时,DataNode 从磁盘读取该文件并通过 TCP 套接字将数据发送给客户端。所谓的“短路”读取就是绕过 DataNode,允许客户端直接读取文件。当然,这只有在客户端与数据共存的情况下才可能实现。短路读取为许多应用程序提供了实质性的性能提升。设置要配置短路本地读操作,您需要启用libhadoop.so,有关启用此库的详细信息,请参阅https://hadoop.apache.org/doc转载 2021-02-01 22:43:09 · 617 阅读 · 0 评论 -
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 · 539 阅读 · 0 评论 -
hdfs数据误删后恢复方式
背景我们知道hdfs是hadoop体系上的文件系统,负责具体的数据文件存储,且如果一旦hdfs文件被误删除后,尤其是重要数据,对公司来说影响非常大。所以需要提前做一些安全预防措施,例如使用Hdfs Trash机制,或者重要目录应用Hdfs SnapShot功能,然后针对于删除的文件或者目录可以通过trash或者SnapShot机制来进行恢复,如果数据确实已经删除了(例如直接通过hadoopapi进行delete,未配置SnapShot),如果想恢复数据,就需要快速采取一定的措施了。下面我们来分别介绍下.原创 2020-07-25 10:57:41 · 3166 阅读 · 0 评论 -
HDFS块分配策略
HDFS块分配策略注:上图提到的远程机架与本地机架是相对于找到的第一个副本的目标节点来说。一个客户端a机器发起请求分配块请求,NN接收到请求后,执行如下块分配流程:1)如果a不是一个DataNode,则在集群范围内随机选择一个节点作为目标节点,否则执行下面的2,3步骤;2)判断a机器是否符合存储数据块的目标节点,如果符合,第一个块副本分配完毕;3)如果a机器不符合作为目标节点,则在于与a机器同机架范围内寻找,如果找到目标节点,第一个块副本分配完毕;4)如果在同一个机架内...转载 2020-07-24 21:04:47 · 1154 阅读 · 0 评论 -
HDFS之Qurom Journal Manager(QJM)实现机制分析
1.前言1.1背景自从hadoop2版本开始,社区引入了NameNode高可用方案。NameNode主从节点间需要同步操作日志来达到主从节点元数据一致。最初业界均通过NFS来实现日志同步,大家之所以选择NFS,一方面因为可以很方便地实现数据共享,另外一方面因为NFS已经发展20多年,已经相对稳定成熟。虽然如此,NFS也有缺点不能满足HDFS的在线存储业务:网络单点及其存储节点单点。业界提供了数据共享的一些高可用解决方案,但均不能很好地满足目前HDFS的应用场景。 方案 ...转载 2020-07-24 15:16:51 · 703 阅读 · 0 评论 -
实现从SBN上进行一致性读取
背景在HA模式下的HDFS通常有两个namenode,一个处于活动状态,另一个处于待机状态。备用节点(SBN)是热的,这意味着一旦发生故障,从活动的NameNode (ANN)到SBN的故障转移可以在相当短的时间内发生,因此对客户端是透明的。SBN通过日志保持热度。ANN将称为事务的所有名称空间更新发布到Quorum Journal Manager (QJM),而SBN从QJM使用它们。因此日志记录是协调ANN和SBN之间状态的一种手段。这也意味着SBN上的名称空间状态与ANN上的相同,除了最近修改的对原创 2020-07-24 13:28:29 · 297 阅读 · 0 评论 -
HDFS QJM的架构设计
前言HDFS作为一套成熟的分布式存储系统,它的HA机制很多人可能都比较清楚,但是与之相关联的HDFS QJM机制可能了解它的人就不是那么多了.HDFS-3077(Quorum-based protocol for reading and writing edit logs)对此进行了实现.QJM全称Qurom Journal Manager,它的一个核心原理是基于Quorum((最低)法定人数)的原理,这里默认的数值是一半以上,什么意思呢?通俗的解释就是说,我任何的操作,只需要保证quorum数量的操作转载 2020-07-24 09:55:50 · 319 阅读 · 0 评论 -
mr shuffle和spark shuffle的区别
前言对比mr和spark,Shuffle 过程有着诸多类似,例如,Shuffle 过程中,提供数据的一端被称作 Map 端,Map 端每个生成数据的任务称为 Mapper,对应的,接收数据的一端被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer。Shuffle 过程本质上都是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程。mr shuffle和spark shuffle的区别1. 从逻辑角度来讲,Shuffle 过程..转载 2020-07-22 00:47:27 · 2835 阅读 · 1 评论 -
hdfs pipeline recovery流程解析
PipelineRecovery流水线是由DataNode串联而成的,就像一条水管,数据(Packets)从一端流进去,依次经过流水线上的各个DataNode,当最后一个DataNode收到数据,将会发出ACK(Acknowledge)给前一个DataNode,前一个DataNode收到ACK后又会向前一个DataNode发送ACK。回复(ACK)相反地从尾端流回执行写操作的客户端。那么,只要是流水线上一个DataNode宕机了,都会导致整个PipeLine的DataStream无法正常运转。就像.转载 2020-07-22 00:06:55 · 625 阅读 · 0 评论 -
Hadoop NameNode高并发(修改元数据)解决方案
本文我们来看看,如果大量客户端对NameNode发起高并发(比如每秒上千次)访问来修改元数据,此时NameNode该如何抗住?问题源起我们先来分析一下,高并发请求NameNode会遇到什么样的问题。大家现在都知道了,每次请求NameNode修改一条元数据(比如说申请上传一个文件,那么就需要在内存目录树中加入一个文件),都要写一条edits log,包括两个步骤:写入本地磁盘。通过网络传输给JournalNodes集群。但是如果对Java有一定了解的同学都该知道多线程并发安全问题吧?转载 2020-07-21 22:00:25 · 1045 阅读 · 0 评论 -
聊聊RPC的拥塞控制
前言这个话题的背景源自于Hadoop内部的底层RPC处理过程,但是笔者认为针对所有其它RPC处理场景中也会碰到类似的拥塞问题,所以可以拿出来简单讲讲。首先来解释一下这里的名词,这里的RPC拥塞指的是系统被大量的用户特定的请求堵住了,导致没办法有资源来处理其它用户的正常请求,这里我们假设请求是被扔到一个请求队列中的。这里我们姑且不讨论发起大量请求的用户操作行为是否合理,但是在这种情况下,确实使得其它RPC被堵住了。本文,我们就来讨论这个在分布式系统中经常会遇到的问题,以及对应的解决思路。拥塞控制的.转载 2020-07-07 18:06:42 · 734 阅读 · 0 评论 -
facebook hdfs-raid原理详解
前言最近集群存储资源压力比较大,很多业务长期运行下来产生了大量的历史数据,占用了大量的存储空间,目前采用的hadoop版本为hadoop2.7,为了数据安全性,hdfs默认是使用的多副本策略进行容错,,但是这样会占用过多的存储空间,导致不断地增加硬件的成本。为了节省存储成本,近期研究了下facebook针对hdfs做的EC方案:hdfs-raid。HDFS-RAID是Facebook基于ha...原创 2019-10-29 18:43:31 · 779 阅读 · 0 评论 -
hdfs数据一致性研究
前言在hadoop老版本中只提供了sync() 和 hflush()方法,只能保证数据都传输到了datanode端,不能确保都进行了落盘操作,所以在写入数据过程中发生大面积down机的情况下会产生数据丢失问题。本篇文章主要对hdfs数据一致性模型进行一些研究。HDFS 中 sync(),hflush() 和 hsync()hadoop在2.0.2-alpha版本上添加...转载 2019-10-12 15:18:25 · 1409 阅读 · 0 评论 -
hdfs--lease recovery和block recovery源码分析
append操作在namenode这端主要逻辑在FSNameSystem的appendFileInternal函数中处理,内部会调用前言在DFSClient写文件的时候,对于文件的每一个block,生成一个pipeline,然后按照这个pipeline进行数据传输,但是可能在数据传输过程中,DFSClient发生中断,例如断网等,此时该block在NameNode中处于Under...原创 2019-09-27 10:19:01 · 1962 阅读 · 0 评论 -
HDFS租约机制
前言HDFS文件是write-once-read-many,并且不支持客户端的并行写操作,那么hdfs是使用什么机制来保证对文件的互斥操作的呢?租约-----namenode给予租约持有者(LeaseHolder)在规定时间内拥有文件权限(写文件)的许可凭证。HDFS提供Lease机制来保证写入数据的一致性。下面主要介绍HDFS租约机制的实现原理。HDFS租约介绍*每个客户端用户...原创 2019-09-24 16:05:37 · 858 阅读 · 0 评论 -
Mapreduce过程中对hdfs文件压缩的使用
本文主要介绍mapreduce过程中对hdfs文件压缩的使用。mapreduce过程中的hdfs文件压缩:A.第一次传入压缩文件,应选用可以切片的压缩方式,否则整个文件将只有一个Map执行。Use Compressd Map Input:从HDFS中读取文件进行Mapreuce作业,如果数据很大,可以使用压缩并且选择支持分片的压缩方式(Bzip2,LZO),可以实现并行处理,提高...原创 2019-09-23 17:02:27 · 371 阅读 · 0 评论 -
hdfs存储压缩方式对比
前言:随着数据规模的增大,集群存储的成本也随着增加,数十 PB 到百 PB 级别大集群存储空间治理成为公司基础设施部门的重中之重。另一方面,在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些操作的速度。目前hdfs集群有多种存储压缩方式:gzip、bzip2、lzo、lz4、snappy等,下面介绍具体的压缩方式的对比压缩方式对比整体对...原创 2019-09-23 12:40:07 · 4258 阅读 · 0 评论 -
hdfs流式接口中数据块的传输格式
前言本文主要介绍hdfs流式接口中数据块的传输格式。BlockSender类主要负责从数据节点的磁盘目录读取数据块文件,然后发送给数据接收方。发送的数据是有一定结构格式的。数据传输格式如图所示,packetlength大小一般为CHECKSUMS校验数据大小 +DATA真实数据大小。传输格式解析下面详细解析这个数据格式,BlockSender发送数据的格式包...原创 2019-09-16 16:15:41 · 403 阅读 · 0 评论 -
携程Hadoop跨机房架构实践
陈昱康,携程架构师,对分布式计算和存储、调度、查询引擎、在线离线混部、高并发等方面有浓厚兴趣。本文将分享携程Hadoop跨机房架构实践,包含Hadoop在携程的发展情况,整个跨机房项目的背景,我们跨机房的架构选型思路和落地实践,相关的改造和对未来的展望,希望给大家一些启迪。一、Hadoop在携程的落地及发展情况携程Hadoop是从2014年引进的,基本上每年较前一年以两倍的速度在增长,我们对Hadoop集群做了大量性能方面的改造和优化。1)目前,HDFS存储层面拥有数百PB的数据,数千的节点转载 2020-07-18 15:33:24 · 339 阅读 · 0 评论