千家信息网

好程序员大数据学习路线分享HDFS学习总结

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,好程序员大数据学习路线分享HDFS学习总结,HDFS介绍HDFS(Hadoop Distributed File System)是分布式文件系统,是Hadoop项目的核心子项目.设计思想:将大文件、大
千家信息网最后更新 2025年12月02日好程序员大数据学习路线分享HDFS学习总结

好程序员大数据学习路线分享HDFS学习总结HDFS介绍

HDFS(Hadoop Distributed File System)是分布式文件系统,Hadoop项目的核心子项目.

设计思想:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析。

HDFS的重要特性

1. HDFS中的文件在物理上是**分块存储**(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M

2. HDFS文件系统会给客户端提供一个**统一的抽象目录树**,客户端通过路径来访问文件

3. **目录结构及文件分块信息(元数据)**的管理由namenode节点承担

4. 文件的各个block的存储管理由datanode节点承担

5. HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

HDFS的优点

1. 高可靠性

Hadoop按位存储和处理数据的能力强

2. 高扩展性

Hadoop是在可用的计算机集群中分配数据完成计算计算任务

3. 高效性

Hadoop能够在节点之间动态的移动数据,并保证每个节点的动态平衡

4. 高容错性

Hadoop能够自动保存的多个副本,并且能够自动将失败的任务重新分配

HDFS的缺点

1. 不适合低延迟访问,不能快速访问

HDFS是单Master的,所有的对文件的请求都要经过它,当请求多时,肯定会有延时。它适合高吞吐率的场景,就是在某一时间内写入大量的数据

2. 无法高效存储大量小文件

存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息(元数据)

3. 不支持多用户写入即任意修改文件

仅支持数据append(追加),不支持文件随意修改

针对HDFS缺点可能的改进措施

1. Master设计,正在研发中的GFS II也要改为分布式多Master设计,还支持MasterFailover,而且Block大小改为1M,有意要调优处理小文件。(Alibaba DFS的设计,也是多Master设计,它把Metadata的映射存储和管理分开了,由多个Metadata存储节点和一个查询Master节点组成。)

2. 使用缓存或多master设计可以降低client的数据请求压力,以减少延时。

3. 横向扩展,一个Hadoop集群能管理的小文件有限,那就把几个Hadoop集群拖在一个虚拟服务器后面,形成一个大的Hadoop集群。google也是这么干过的。

HDFSShell命令

| **-help** 输出命令的手册 |

| :----------------------------------------------------------- |

| **-ls** 显示目录信息 `hadoop fs -ls hdfs://hadoop-server01:9000/` ps:这些参数中,所有的hdfs**路径都可以简写 -->`hadoop fs -ls /` 等同于上一条命令的效果 |

| **-put** HDSF上传文件 `hdfs dfs -put 本地文件路径 HDFS文件系统路径` *<易错:记 源路径→目的路径>* |

| **-get** HDFS文件系统中的文件下载回来 `hdfs dfs -get HDFS文件系统路径 本地文件系统路径` *<易错>* psHDFS有一个和putget类似的而方法 copyFromlocal 相当于put copyTolocal 相当于 get |

| **-cat** 查看HDFS文件系统中的文件内容 `hdfs dfs -cat HDFS文件系统中文件的路径` ps:不要查看非文件 |

| **-cp** HDFS文件系统中进行复制操作 `hdfs dfs -cp HDFS文件系统中的文件路径 目标HDFS文件系统中的路径` |

| **-mv** HDFS文件系统中的文件进行移动操作 `hdfs dfs -mv HDFS文件系统中的文件路径 目标HDFS文件系统中的路径` ps: 将源文件移动目标路径,这个命令可允许有多个源路径,此时目标路径必须是一个文件夹(目录)不允许不同的文件系统互相移动文件 |

| **-du** 查看HDFS文件系统中文件的大小 `hdfs dfs -du HDFS文件系统中路径中的一个文件` |

| **-mkdir** HDSF系统中创建文件夹 mkdir 创建文件夹 ps:递归创建+`-p` |

| **-rm** 删除HDFS文件系统中的目录或文件 `hdfs dfs -rm HDFS文件系统路径` `hdfs dfs -rm -r HDFS文件系统路径` ps: 只能是单个文件 或 空目录,若参数文件夹中有多个文件 加 -r |

| **-chmod** 更改文件的权限 `hdfs dfs -chmod -R 权限值 HDFS文件系统路径下的文件夹` ps: 所有每三位可以作为一个八进制处理 777是满权限 rwx +R之后, 文件夹下的所有子文件和文件夹都会被修改 |

| **-appendTofile** 追加一个文件到已经存在文件的末尾 `hadoop fs -appendTofile ./hello.txt /hello.txt` |

| **-getmerge** 合并下载多个文件 `hadoop fs -getmerge /aaa/log.* ./log.sum` |

| **-df** 统计文件系统的可用空间信息 `hadoop fs -df -h /` |

| |

HDFS的工作机制

在了解工作机制之前,我们先来看看几个重要角色:

NameNode

1. master,它是一个管理者,维护着整个文件系统的文件目录树

2. 储存数据库(Block)映射信息,保存元数据信息包括:文件的所属权,文件的权限,文件大小,时间(Block列表,Block偏移量),位置信息

3. 主要职责:处理客户端读写请求,收集DateNode汇报的Block列表信息<*不会保存到本地系统中*>

**DateNode**

1. Slave,它是一个从节点,简单理解就是NameNode的奴隶

2. 存储用户的文件块数据

3. 主要职责:定期向NameNode汇报自身所持有的block信息(心跳机制),执行数据块的读/写操作

Secondary NameNode

1. 检查点节点,表面上看SecondaryNameNodeNameNode的备份,实际上SecondaryNameNode的主要作用并不是备份

2. 主要职责:定期合并fsimageedit log ,并推送给NameNode

问题引入:一个已经 运行十年的集群,最近的fsimage(镜像)是NameNode十年前格式化产生,这么多年的操作日志被edit log(日志)记录已达几百T。那么问题来了,如果我要重启这个集群,这么大日志文件,必定要重启很久,我们的时间并不充裕该 如何解决这个问题?

*<问题提取:只要NameNode不格式化或重新启动,fsimage将保持原始状态,edits会不断的增加 >*

此时我们引入Secondary NameNode, 把PN中的edit log fsimageSNmerge,此时PN还会继续产生新的日志,记录合并和合并期间的操作,合并之后新fsimage会拷贝回PN,循环上面的操作.以此能保持edit log文件处于比较小的状态,fsimage的时间点也不会太久远

**fsimage是如何产生的呢?**

HDFS系统要开始运行的时候需要先对NameNode进行一次格式化,那么第一次格式化就会产生一个fsimage文件,但是这个文件是个空文件,NameNode启动的时候会加载fsimage 然后执行edit log加载到内存中,然后立刻向磁盘中写一个新的fsimage文件,这个fsimage就是一个最新的储存信息

**紧急情况时,可以辅助恢复NameNode**

namenodesecondary namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时,可以从secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数据

HDFS读写数据流程

HDFS读数据流程

简单版本

客户端将要读取的文件路径发送给namenodenamenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件


文件 系统 路径 数据 信息 目录 存储 节点 客户 客户端 文件夹 设计 集群 多个 大小 工作 支持 命令 日志 权限 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东家腾信息软件开发 万方数据库期刊论文能在线阅读吗 西安靠谱医疗健康软件开发 oralc数据库课程的心得体会 河南科技大学直播互联网 数据库服务器代理怎么打开 郑州哪里有学软件开发的学校 数据库人才招聘 软件开发公司接单怎么接 甲基化位点与基因表达数据库 上海网络技术咨询机构 金准数据库技术 如何导出一个数据库的表结构 获奖的网络安全手抄报 通用网络技术咨询售后服务 计算机网络安全专科排名 2核4g 10m服务器什么水平 三级网络技术怎么学习 学软件开发学什么软件 南京正规软件开发销售电话 宝塔服务器怎么设置安全 科奥互联网科技有限公司怎么样 数据库安全的一般方法 中石油新员工网络安全 备份专用服务器 数据库面试基础试题及答案 华为网络技术学院 校企合作 网络安全科学研究院 广电网络安全机房 陕西省中小学网络安全课程
0