千家信息网

Hadoop分布式文件系统中的HDFS是什么

发表于:2025-02-14 作者:千家信息网编辑
千家信息网最后更新 2025年02月14日,这期内容当中小编将会给大家带来有关Hadoop分布式文件系统中的HDFS是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HDFS设计超大文件 PB 级流式数据访
千家信息网最后更新 2025年02月14日Hadoop分布式文件系统中的HDFS是什么

这期内容当中小编将会给大家带来有关Hadoop分布式文件系统中的HDFS是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

HDFS设计
  • 超大文件 PB 级

  • 流式数据访问

    • 一次写入,多次读取是最高效的访问模式

  • 商用硬件 (不需要高昂且高可用的硬件)

    • 节点故障率较高,某些应用不适合

  • 低时间延迟的数据访问

    • 要求低时间延迟的数据访问,例如几十毫秒范围不适合在HDFS上运行

  • 大量的小文件

    • namenode 将文件系统的元数据存储在内容中,因此该文件系统所能存储的文件总数受限于 namenode 的内存容量

    • 根据经验 每个文件、目录和数据块的存储信息大约占150字节

  • 多用户写入,任意 修改文件

    • HDFS中的文件只支持单个写入者,而且写操作总是以"只添加"方式在文件末尾写数据,它不支持多个写入者的操作,也不支持在文件的任意位置进行修改。

HDFS概念
  • 数据块 默认128mb

  • HDFS 小于一个块大小的文件不会占据整个块的空间

hdfs fsck / -files -blocks

  • namenode 和datanode

    • 1.备份那些组成文件系统元数据持久状态的文件,一般的配置是,将持久状态写入本地磁盘的同时,写入NFS

    • 运行辅助namenode 一般在单独的物理机运行。主节点挂了之后,启用辅助节点不能保证数据完整性

    • namenode 管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode 也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时根据数据节点信息重建。

    • datanode 根据需要存储并检索数据块,并且定期向namenode发送它们所存储的块的列表

    • namenode 容错机制

  • 块缓存

    • 默认 一个块缓存在一个datanode的内存中

    • 提高读 的性能

    • 缓存池

  • 联邦HDFS

    • 联邦HDFS 允许系统通过添加namenode 实现扩展

    • 每个namenode 管理文件系统命名空间的一部分

    • 两两之间互不通信

  • HDFS 的高可用

    • namenode 之间需要通过高可用共享存储实现编辑日志的共享

    • datanode 需要同时向两个namenode 发送数据块处理报告,因为数据块的映射信息存储在namenode 内存中,而非磁盘

    • 客户端需要使用特定的机制来处理namenode 的失效问题,这一机制对用户是透明的

    • 辅助namenode的角色被备用namenode所包含

    • 共享存储的选择 NFS或群体日志管理器(QJM)

    • 故障切换与规避

    • 撤销namenode 访问共享存储目录的权限

    • 屏蔽网络端口

    • 断电等等...

    • 备份namenode 的方式无法实现高可用

    • HA 的架构支持

命令行接口
  • namenode 运行端口8020

  • 从本地copy 文件到 hdfs /user/hadoop/ 目录下

hadoop fs -copyFromLocal max_temperature.sh a.sh

  • 把文件复制回本地文件系统

hadoop fs -copyToLocal a.sh my.sh

md5sum max_temperature.sh my.sh

  • 新建目录

hadoop fs -mkdir books

hadoop fs -ls .

  • 默认情况下 安全措施处于停用状态,生产环境应该启用 dfs.premissions.enabled

  • 对文件而言 执行权限没有意义

hadoop 文件系统
  • HDFS 只是其中一种实现

  • Hadoop 文件系统 Local,HDFS,WebHDFS,Secure WebHDFS, HAR, View, FTP, S3, Azure, Swift

  • 列出本地文件系统根目录下的文件 hadoop fs -ls file:///

  • 尽管运行的MapReduce 程序可以访问任何文件系统,但在处理大数据集的时候,建议还是选择一个有数据本地化优势的分布式文件系统,如HDFS

  • 接口

    • 用户控件文件系统, 允许将用户空寂那实现的文件系统作为Unix 文件系统进行集成。

    • 通过使用Fuse-DFS 模块,HDFS均可以作为一个标准的本地文件系统进行挂载。

    • NFS 网关是更好的方案,应该选择

    • 使用hadoop 的NFSv3 网关将HDFS挂载为本地客户端的文件系统是可行的。

    • 可以使用Unix程序与该文件系统交互

    • HDFS仅能以追加模式写文件,因此可以往文件末尾添加数据,但不能随机修改文件

    • HTTP接口比原生的Java客户端要慢,不要用它来传出特大数据

    • 访问方式 直接访问(namenode 和 datanode 内嵌的 web服务器作为 WebHDFS 的端节点运行 dfs.webhdfs.enabled 设置为true)

    • 通过代理访问

    • HttpFS代理提供和 WebHDFS 相同的HTTp接口 使用httpfs.sh 脚本

    • HTTP

    • c 语言(libhdfs,libwebhdfs)底层代码都是java

    • NFS

    • FUSE

  • java接口

    hadoop jar hadoopdemo-1.0-SNAPSHOT.jar URLCat hdfs:///user/hadoop/output/part-r-00000

    public class FileSystemCat {   public static void main(String[] args) throws Exception {      String uri = args[0];      Configuration conf = new Configuration();      FileSystem fs = FileSystem.get(URI.create(uri), conf);      InputStream in = null;      try {            in = fs.open(new Path(uri));            IOUtils.copyBytes(in, System.out, 4096, false);      } finally {            IOUtils.closeStream(in);      }   }}


    hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemCat hdfs:///user/hadoop/output/part-r-00000

    hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemDoubleCat hdfs:///user/hadoop/output/part-r-00000

    • 新建文件

    • FSDataOutputStream

    • 目录 public boolean mkdirs(Path f) throws IOException

    • 查询文件系统

    • FileStatus 类封装了文件系统中文件和目录的元数据

    • public boolean exists(Path f) throws IOException

    • 写入数据

         FSDataOutputStream create(FileSystem fs,Path file, FsPermission permission) throws IOException   FSDataOutputStream append(Path f) throws IOException   //代码    String localSrc = args[0];  String dst = args[1];  InputStream in = new BufferedInputStream(new FileInputStream(localSrc));  Configuration conf = new Configuration();  FileSystem fs = FileSystem.get(URI.create(dst), conf);  OutputStream out = fs.create(new Path(dst), new Progressable() {      public void progress() {          System.out.println(".");      }  });  IOUtils.copyBytes(in, out, 4096, false);


    • FSDataInputStream seek()是一个相对高开销的操作,需要谨慎使用,建议用流数据来构建应用的访问模式,而非执行大量的seek()方法 hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemDoubleCat hdfs:///user/hadoop/output/part-r-00000

    • 通过 FileSystem

    • 通过URL读取数据 FsUrlStreamHandlerFactory IOUtils

上述就是小编为大家分享的Hadoop分布式文件系统中的HDFS是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

文件 系统 数据 存储 信息 目录 节点 运行 接口 用户 空间 支持 分布式 内存 内容 客户 方式 日志 机制 模式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器和大型交换机区别 小学生网络安全警示教育视频 苏州服务器选型 视频服务器有哪些 网络安全现场核查通知书怎么搞 华为安卓应用软件开发工程师 苹果手机的网络安全管理 软件开发各个阶段及文档 达梦数据库登录主机名端口 广州聚源互联网科技有限公司 专科生计算机网络技术就业率 漯河市网络安全感满意度 网络安全宣传教育活动小结 数据库即服务 dbaas 中职计算机网络技术专业课本 上海无线网络技术收费标准 网络安全通报平台 杭州萌芽网络技术靠谱吗 计算机网络技术考试B卷答案 个人信息安全法网络安全法 finebi网络安全 到哪学网络技术 安卓数据库添加多个表 一二图是数据库设计的工具之一 浙江混合现实5g软件开发 监控服务器启动时间慢 看门狗2线上无法连接服务器 湖南省疫情防控专题档案数据库 学游戏软件开发需要多久 企业的网络安全
0