HDFS
文章平均质量分 65
请叫我算术嘉
快手HDFS
展开
-
Hadoop 客户端 FileSystem加载过程
hadoop-hdfs-project/hadoop-hdfs/src/main/resources/META-INF/services,可以看到,这个目录下有一个org.apache.hadoop.fs.FileSystem文件。一般我们会这么使用,那么问题来了,FileSystem是个抽象类,我们到底用哪一个呢?通过 loadFileSystems这个方法会加载文件中的所有类,并且根据scheme生成一个map,key是scheme,value是fs。2、如果配置里没有,这个时候用加载的。原创 2024-05-23 20:10:52 · 639 阅读 · 1 评论 -
HDFS源码解析---NetworkTopology
NetwordTopology原创 2022-08-03 19:59:16 · 1114 阅读 · 1 评论 -
HDFS源码解析---HA
HDFS 2.X HA 模式下的数据同步机制原创 2022-07-07 21:44:04 · 605 阅读 · 0 评论 -
HDFS源码解析---checksum数据校验
客户端获取文件的checksum整体流程如下:1、获取文件的所有block2、遍历每个block3、获取block的所有副本以及所在的datanode,去datanode上获取这个block的checksum4、获取每个block的checksum的byte-per-checksum,crc-per-block(block的crc)以及MD55、根据所有block的MD5计算文件的MD56、文件的MD5 + bytesPerCRC + crcPerBlock 计算MD5FileC原创 2022-03-28 11:51:10 · 1740 阅读 · 1 评论 -
HDFS源码解析---读数据流程
打开文件1、DistributedFileSystem.open返回FSDataInputStream输入流 public FSDataInputStream open(Path f) throws IOException { return open(f, getConf().getInt("io.file.buffer.size", 4096)); }2、调用DFSClient.open,返回DFSInputStream @Override public F..原创 2022-03-22 21:04:37 · 749 阅读 · 0 评论 -
HDFS源码解析---replaceBlock
前言replaceBlock 这个rpc 在社区版是只有在Balancer中才用到/** * It is used in Balancer and Mover, and it always internal operation. */ @Override public void replaceBlock(final ExtendedBlock block, final StorageType storageType, final Token<Block原创 2022-02-18 19:05:37 · 542 阅读 · 0 评论 -
HDFS源码解析---TestDFSIO
这个工具怎么用没啥好说的,里面的原理简单说一下。MapReduce 这个工具会起mapreduce 任务在yarn的各个节点(客户端)发起读写请求。TestDFSIO.java的run方法会调用mapreduce作业任务。@Override // Tool public int run(String[] args) throws IOException { TestType testType = null; int buff...原创 2021-12-09 12:12:57 · 15419 阅读 · 0 评论 -
HDFS源码解析---triggerBlockReport
当前有两种方式出发全量块汇报通过命令行 通过hdfs.site.xml参数控制全量块汇报的代码datanode---BPServiceActor/** * Report the list blocks to the Namenode * @return DatanodeCommands returned by the NN. May be null. * @throws IOException */List<DatanodeCommand> block原创 2021-11-02 17:02:10 · 27167 阅读 · 0 评论 -
HDFS源码解析---DataTransferThrottler(流量控制)
简介DataTransferThrottler类别Datanode读取和写入数据时控制传输数据速率。这个类是线程安全的,它可以由多个线程共享。用途是构建DataTransferThrottler对象,并设置期限period和带宽bandwidthPerSec,际读写前调用DataTransferThrottler.throttle()方法。假设I/O的速率相对给定的带宽太快,则该方法会将当前线程wait。构造函数双參构造函数,能够设置周期period和带宽ba...原创 2021-08-31 14:57:27 · 318 阅读 · 0 评论 -
HDFS源码解析---数据块
Block、Replica、BlocksMapBlock类Block类用来唯一标识Namenode中的数据块,是HDFS数据块最基本的抽象接口。Block类实现了Writable接口,可以进行序列化。Block类还实现了Comparable接口,按照blockid大小排序。 Block类定义了三个字段。blockId(唯一标识了这个block对象) numBytes(数据块大小,单位是字节) generateStamp(数据块的时间戳)private...原创 2021-08-27 15:57:11 · 423 阅读 · 0 评论 -
HDFS源码解析---Balancer
HDFS Balancer概述在输入启动命令的那台机器上会启动一个进程,为了避免给namenode带来过大的负担,整个balance过程由balance server而不是namenode来控制。Balancer的最终结果是namenode上记录的一个block的一个副本从一个datanode转移到另一个datanode上。PS:副本放置策略 第 2 个副本存放于不同于第 1 个副本所在的机架 第 3 个副本存放于第2个副本所在的机架,但 是属于不同的节点 .原创 2021-08-25 15:36:52 · 4526 阅读 · 0 评论