![](https://img-blog.csdnimg.cn/20191014205809240.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
HDFS
文章平均质量分 50
HDFS底层原理解析
王小禾
武汉理工大学
展开
-
[DN优化] [锁优化][HDFS-15160] ReplicaMap, Disk Balancer and others use datanode readlock
背景现在我们已经引入了HDFS-15150,我们可以开始改进一些DN操作来使用读锁而不是写入锁来提高并发。第一步是对Replicamap进行更改ReplicaMap:一些方法会调用replicmap .replicas()(例如getBlockReports, getFinalizedBlocks, deepCopyReplica),并且只以只读方式使用,所以它们也可以切换到使用readLock。接下来是目录扫描仪和磁盘均衡器,只需要读锁。Disk Balancer, Directory S原创 2022-03-24 19:40:15 · 787 阅读 · 0 评论 -
[DN优化] [锁优化] [HDFS-15150] Introduce read write lock to Datanode
分析背景:DN性能优化的一部分目标:AutoCloseableLock 改为 ReadWriteLock知识回顾:假设在程序中定义一个共享的数据结构,它大部分时间提供读服务,而写操作占有的时间很少,但是写操作完成之后的更新需要对后续的读服务可见。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(也就是说:读-读能共存,读-写不能共存,写-写不能共存)。这就需要一个读/写锁来解决原创 2022-03-24 16:41:36 · 1830 阅读 · 0 评论 -
HDFS副本和块状态
在NameNode看来,块(Block)主要有以下4种状态:// HdfsServerConstants enum BlockUCState { COMPLETE, UNDER_CONSTRUCTION, UNDER_RECOVERY, COMMITTED }在DataNode看来,块(Block)应该称为“副本 (Replica)”比较合适,在DataNode种,副本主要有以下5种状态: enum ReplicaState { /** Replic原创 2021-05-14 16:49:07 · 222 阅读 · 0 评论 -
HDFS中的优秀的设计模式
1.[HDFS-14854]的代码改造:从一个单工作类,改造成可备选的工作类的方式。原创 2021-02-22 14:57:57 · 266 阅读 · 0 评论 -
HDFS中的优秀的多线程设计
关于ThreadPoolExecutor、ExecutorCompletionService等多线程设计在HDFS中得到了淋漓尽致的应用。本文总结HDFS中的优秀的多线程的设计,学习其设计思想。1.HDFS Hedged Read :两个线程多数据,谁先读到用谁的,其他线程取消。...原创 2021-01-25 20:22:08 · 366 阅读 · 0 评论 -
ZKFC原理解析
本文参考自:HDFS高可用(HA)之ZKFC详解Zookeeper 只需要用3台机器启动zookeeper集群即可。无特殊之处。见:zookeeper服务配置及启动 ,ZK本文不阐述。ZKFC(ZKFailoverController)用于对NameNode状态进行控制 。FC是要和NN一一对应的,两个NN就要部署两个FC。它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为.原创 2021-02-03 11:44:30 · 1198 阅读 · 0 评论 -
HDFS EC Reconstruction
hdfs ec重构块的代码设计巧妙,本文总结其设计思想。原创 2021-01-25 20:33:06 · 589 阅读 · 2 评论 -
租约
租约更新当客户端打开一个文件用于写或者追加写操作时,LeaseManager会保护这个客户端在该文件上的租约。客户端会启动一个LeaseRenewer定期更新租约,以防租约过期。注意:是由客户端发起的。租约恢复客户端发生故障,不能完成租约更新,则进行租约恢复。写文件期间,租约限制60s(不可配置)故障时,租约限制60min(不可配置),进行删除过期租约。原创 2019-12-26 15:48:54 · 425 阅读 · 0 评论 -
记一次HDFS死锁问题的排查
背景离线HDFS集群在执行hdfs dfsadmin -refreshNamenodes hostname:50020向新的NameSpace注册的过程中,出现>10个DataNode节点发生死锁的情况,发生概率约1‰。本文用于记录该问题的排除过程及解决办法。基础回顾java中,无论是使用synchronized关键字隐式地获取锁再释放锁,还是使用Lock接口(以及相关实现类)显示地调用lock()/unlock()方法,都能达到锁功能的目的。而死锁是两个甚至多个线程被永久阻塞时的一种运行局面,原创 2020-10-26 16:28:01 · 26832 阅读 · 2 评论 -
HDFS Hedged Read
Hedged reads是HDFS的一个功能,在Hadoop 2.4.0之后引入。一般来说,每个读请求都会由生成的一个线程处理。在Hedged reads 启用后,客户端可以等待一个预配置的时间,如果read没有返回,则客户端会生成第二个读请求,访问同一份数据的另一个block replica之后,其中任意一个read 先返回的话,则另一个read请求则被丢弃。Hedged reads使用的场景是:解决少概率的slow read(可能由瞬时错误导致,例如磁盘错误或是网络抖动等)。客户端hedged读两个原创 2020-07-29 16:14:45 · 1843 阅读 · 0 评论 -
proto类型与java类型的转化
proto协议ECpublic final class ECSchema implements Serializable { private static final long serialVersionUID = 0x10953aa0; public static final String NUM_DATA_UNITS_KEY = "numDataUnits"; public static final String NUM_PARITY_UNITS_KEY = "numParityUn原创 2020-06-01 11:31:13 · 1627 阅读 · 0 评论 -
HDFS await()和interrupt()引起的死循环问题分析
1.背景hdfs短路读利用UNIX域套接字,可以让客户端和DataNode通信(客户端与dn是同一台机器)。需要在datanode和客户端的配置中都配置一个套接字路径,并且开启短路读特性。官方链接hdfs在短路读时, 2.7版本的代码中DomainSocketWatcher(linux机器进程的socket通信的监听)类中有个bug需要修复。分析如下://DomainSocketWatcher#add相关代码public void add(DomainSocket sock, Handler han原创 2020-05-28 16:01:01 · 366 阅读 · 0 评论 -
hdfs quota物理空间转逻辑空间
1.现有quota的设置与使用 1.setQuota客户端到NN的主要流程 2.count -q / -u 查看quota 2.quota在hadoop中的限制作用 2.SpaceQuota改逻辑空间 1.改动 2.测试 put mv setrep du rm 重启后查看 cp 子目录测试 EC测试 进一步测试 4.可能的问题1.现有quota的设置与使用1.setQuota客户端到NN的主要流程s...原创 2020-05-22 17:09:41 · 721 阅读 · 0 评论 -
HDFS块恢复流程初级版
1.先看几个线程栈1.没有修改代码时走localRack -> nextRack -> Random时的流程"RedundancyMonitor" #48 daemon prio=5 os_prio=0 tid=0x00007f925ec14800 nid=0x10544 runnable [0x00007f5a2491d000] java.lang.Thread.State...原创 2020-04-26 10:32:16 · 295 阅读 · 0 评论 -
DataNode生命线消息
转载链接:DataNode生命线消息转载 2020-04-05 16:09:23 · 128 阅读 · 0 评论 -
dn心跳-临时
https://blog.csdn.net/Androidlushangderen/article/details/47945597心跳逻辑BPServiceActor时间太长如:2020-03-26 18:07:55,372 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Took 5675ms to process 1 com...原创 2020-03-30 22:31:33 · 553 阅读 · 0 评论 -
XAttr设置调试版
[hadoop@hadoop1 ~]$ hadoop fs -setfattr -n name -v value /xattr2020-03-10 10:52:16,636 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classe...原创 2020-03-10 11:30:33 · 293 阅读 · 0 评论 -
hdfs oiv分析调试篇
public class FsimageOIV { @Test public void oiv() throws Exception{ String[] args = {"-p","Delimited", "-i", "/Users/didi/Work/test/fsimage_0000000000000029436", "-o","/Users/didi/Work/test/fs...原创 2020-03-09 15:16:00 · 853 阅读 · 0 评论 -
FSShell-EC-du
client端du的调用:public static class Du extends FsUsagepublic ContentSummary getContentSummary(Path f) throws IOException { FileStatus status = getFileStatus(f); if (status.isFile()) { //...原创 2020-03-06 18:17:48 · 385 阅读 · 0 评论 -
SET EC调试版
断点调试[hadoop@hadoop1 hadoop]$ hdfs ec -setPolicy -path /ec1 -policy RS-3-2-1024k通过path获得INodeInPath:iipINodesInPath: path = /ec1 inodes = [, ec1], length=2 isSnapshot = false snapshot...原创 2020-03-04 22:20:43 · 341 阅读 · 0 评论 -
dn临时1
BlockPool原创 2020-02-27 09:54:27 · 393 阅读 · 0 评论 -
NameNode概述
参考: HDFS NameNode内存全景1.概述从NameNode涉及到的主要操作来讲,主要概念如下:目录树:命名空间namespace数据块管理租约管理FSNamesystem:NameNode逻辑门面类NameNode HA下的启动与停止从内存的角度来讲,分类如下:元数据:namespaceblockManagerNetWorkTopologyOther: 租...原创 2020-02-23 17:11:30 · 2360 阅读 · 0 评论 -
AppendEC报错
测试报告1.场景还原使用appendEC操作(参考HDFS-14581 test):public static void appendTest() throws IOException{ Path file = new Path(dir, "appendTest-1"); // Create file FSDataOutputStream out = dfs.create...原创 2020-01-17 20:10:49 · 416 阅读 · 0 评论 -
hdfs quota(SapceQuota是物理空间)
关于hdfs quota,参见3篇博客的讲解。https://blog.csdn.net/qq_28069577/article/details/90262992https://blog.csdn.net/liuxiao723846/article/details/71078658https://blog.csdn.net/picway/article/details/80373078...原创 2019-12-03 19:51:27 · 1202 阅读 · 0 评论 -
hadoop3 EC测试
1.查看当前支持的纠删码策略命令如下[user@nn1 ~]$ hdfs ec -listPolicies原创 2019-06-28 20:15:40 · 2312 阅读 · 0 评论 -
DistributedFileSystem大量使用到的FileSystemLinkResolver抽象类解析
背景在DistributedFileSystem类中,大量使用doCall()、next()方法,本文一探究竟。解析FileSystemLinkResolver源码主要包含两个抽象方法和一个实现方法。@InterfaceAudience.Private@InterfaceStability.Evolvingpublic abstract class FileSystemLinkReso...原创 2019-11-05 20:52:54 · 573 阅读 · 0 评论 -
HDFS namenode(1)
HDFS NameNode内存全景(美团技术团队)1.概述NameNode管理着整个HDFS文件系统的元数据。从架构设计上看,元数据大致分成两个层次:Namespace管理层: 负责管理文件系统中的树状目录结构以及文件与数据块的映射关系;块管理层: 负责管理文件系统中文件的物理块与实际存储位置的映射关系BlocksMap。Namespace管理的元数据除内存常驻外,也会周期Fl...转载 2019-08-13 19:41:33 · 458 阅读 · 0 评论 -
HDFS客户端源码
文章目录DFSClient构造器文件和目录-text会最终进入Display类的getInputStream方法:protected InputStream getInputStream(PathData item) throws IOException { FSDataInputStream i = (FSDataInputStream)super.getInputStream(...原创 2019-08-09 16:33:29 · 367 阅读 · 0 评论 -
hdfs回收站
参考:https://blog.csdn.net/silentwolfyh/article/details/53907118转载 2019-06-23 00:41:58 · 235 阅读 · 0 评论 -
HDFS 块测试(转载)
https://blog.csdn.net/qq_26442553/article/details/78529256转载 2019-06-17 23:51:17 · 199 阅读 · 0 评论 -
hdfs接口操作笔记
1. hdfs shellhadoop fs -ls /三种形式。(1)hadoop fs -ls hdfs://xxx:9000/ (指定集群)(2)hadoop fs -ls / (默认集群)(3)hadoop fs -ls a(特殊用法)FileSystem的使用...原创 2019-06-13 23:35:46 · 277 阅读 · 0 评论 -
HDFS源码-5 FairCallQueue
文章目录原创 2019-06-12 17:05:37 · 446 阅读 · 0 评论 -
HDFS源码-4 ls命令解析
hadoop fs -ls /命令解析原创 2019-06-11 10:49:00 · 573 阅读 · 0 评论 -
深入hadoop1-1 hadoop-hdfs-2
文章目录原创 2019-05-17 17:37:47 · 139 阅读 · 0 评论 -
深入hadoop1-1 hadoop-hdfs-1
文章目录1. hadoop2.x核心模块2. 安装3. HDFS服务功能1. hadoop2.x核心模块Hadoop项目主要包括以下四个模块◆ Hadoop Common:为其他Hadoop模块提供基础设施◆ Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统◆ Hadoop MapReduce:一个分布式的离线并行计算框架◆ Hadoop YARN:一个...原创 2019-05-03 22:33:54 · 296 阅读 · 0 评论 -
distcp参数分析及api调用
distcp参数分析及api调用原创 2019-10-25 10:08:13 · 6522 阅读 · 3 评论 -
distcp流程分析
背景distcp可用于跨集群或集群内目录的复制,distcp参数不同复制的结果差别较大。本文结合官网及源码,对distcp流程进行分析,并结合测试给出验证。使用1. shell目标目录父目录不存在时,可以自动建立多层目标目录。1. 文件复制文件复制时,相当于cp,因为hdfs无法并行写。将a.txt复制并重命令为a_bak.txt$ hadoop distcp \hdfs://c...原创 2019-10-23 21:09:49 · 2755 阅读 · 0 评论 -
hadoop fs -ls过程分析
1.准备hadoop源码编译后的客户端,便于改动追踪代码上传文件,ec目录和普通目录均上传测试:hadoop fs -put hadoop-hadoop-datanode-cluster-host1.log hdfs://hadoop1:9000/userhadoop fs -put hadoop-hadoop-datanode-cluster-host1.log hdfs://had...原创 2019-08-08 11:42:05 · 1991 阅读 · 0 评论