HDFS的设计理念是源于非常朴素的思想:

当数据集大小超过单台计算机的存储能力时,就有必要将其进行分区,并且存储到若干台单独的计算机上,而管理网络中跨多台计算机存储的文件系统称为分布式文件系统(distribute filesystem).

hadoop 具有一个抽象的文件系统的概念,HDFS只是其中的一个实现。

hadoop文件系统接口由Java 抽象类 org.apache.hadoop.fs.FileSystem类定义,该类同时还继承了org.apache.hadoop.conf并且实现了JAVA 的java.io.Closeable接口。

HDFS特点以及短板:

特点:

  • 适合存储超大文件:存储在HDFS 的文件大多在GB甚至是TB 级别。
  • 运行于廉价的硬件之上:HDFS 在设计的时候,就已经认为在汲取规模足够大的时候,节点故障并不是小概率事件,而可以认为是一种常态,例如,一个节点故障的概率如果是千分之一,那么当集群规模是1000台的时候,正常情况每天都会有节点故障。当节点发生故障是,能够继续运行并且不让用户察觉到明显的终端,所以,HDFS并不需要运行在高可靠且昂贵的服务器上,普通的PC server即可。
  • 流式数据访问:HDFS认为,一次写入,多次读取是最搞笑的访问模式。HDFS 的数据集作为Hadoop的分析对象,在数据集生成以后,会长时间在吃数据集上 进行各种分析。每次分析都将涉及该数据集的大部分数据甚至全部数据,因此,读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要~。

短板:

  • 实时数据访问弱:如果应用要求数据访问的时间在秒或者毫秒级别,那么,HDFS是做不到的,由于HDFS针对高书记吞吐做了优化,因而牺牲了读取数据的速度,队友相应时间是秒或者是毫秒的数据藩王,可以考虑使用HBase.
  • 大量的小文件:当hadoop启动的时候,NameNode会将所有元数据读到内存,以此构建目录树。一般来讲,一个HDFS上的 文件、目录和数据块的存储信息,大约在150字节左右,那么,可以推算出,如果NameNode的内存为16GB的话,大概只能存放480万个文件,对于一个超大规模的集群,这个数字很快就能达到。
  • 多用户写入,任意修改文件:HDFS中的文件只能有一个写入者,并且写数据操作总是在文件末。它不支持多个写入者,也不支持在数据写入之后,在文件的任意位置进行修改。事实上,如果不讲hdfs-site.xml中的dfs.support.append设置为true,HDFS也不支持对文件进行追加操作。
HDFS-架构:
  • 块:

每个磁盘都有默认的数据块大小,这是磁盘进行数据读写的最小单位,而文件系统也有文件块的概念。HDFS的块比一般的文件系统块大得多,默认为64M,并且可以随着实际的需要而变化,配置项目为hdfs.sitte.xml文件中的dfs.block.size项。与单一文件系统相似,HDFS上的文件也被划分为块大小的多个分块,它是HDFS存储处理的最小单元。

使用块的好处就:
(1)可以保存比存储节点单一磁盘大的文件。
(2)简化存储子系统:实现了元数据和数据的分块管理与存储。
(3)容错性高:将dfs.relication 设置为2,即配置每个HDFS的块在hadoop中保存的份数,值越高,冗余性越好,默认为3.

  • NameNode和SecondaryNameNode :

NameNode名字节点,是HDFS的主从架构的主角,是HDFS的大脑,他维护着整个文件系统的目录树,以及所以的文件目录,这些信息以2种文件存储在本地文件中,一种是命名空间镜像(file system image ,FSImage,文件系统镜像),即HDFS元数据的完整快照,每次NameNode启动时,默认会加载最新的命名空间镜像,另一种是命名空间镜像的编辑日志(edit log)

SecondaryNameNode,也被称之为第二名字节点,是用于定期合并命名空间镜像和命名空间镜像的编辑日志的辅助守护进程。每个HDFS集群都有一个SecondaryNameNode,在生产环境下,一般SecondaryNameNode也会单独运行在一台服务器上。
  • DataNode

DataNode被称为数据节点,它是HDFS的主从架构的从角色的扮演者,它在NameNode的指导下完成I/O 任务。如前文所述,放在HDFS的文件都是有HDFS的尽快组成, 所以的块都存放于DataNode 节点。实际上,对于DataNode所在的几点来说,快就是一个普通的文件,我们可以去DataNode存放块的目录下观察(默认是$(dfs.data.dir)/c urrent),块的文件名为blk_blkID。

DataNode会不断地向NameNode报告。初始化时,每个DateNode将当前存储的块告知NameNode,在集群正常工作时,DateNode任然会不断的更新NameNode,为止提供本地修改的相关信息,同时接受来自NameNode的指令,创建,移动或者删除本地磁盘上的数据。
  • HDFS客户端

HDFS可混短时指用户和HDFS交互的手段,HDFS提供了非常多的客户端,包括命令行接口、Java API、thrift接口、c语言库、用户文件系统。

转载于:https://www.cnblogs.com/DeepRunning/p/9205996.html

hadoop基石HDFS相关推荐

  1. 大数据知识梳理(Hadoop、HDFS)(整理中。。。)

    大数据知识梳理(Hadoop.HDFS)(更新中...) 第1讲 大数据概述 1.1 大数据时代 1.2 大数据概念和影响 1.3 大数据的应用 1.4 大数据的关键技术 1.5 大数据与云计算.物联 ...

  2. 安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法

    安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 参考文章: (1)安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 (2)https:// ...

  3. Hadoop基础-HDFS集群中大数据开发常用的命令总结

    Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...

  4. Hadoop之HDFS面试知识复习

    Hadoop之HDFS面试知识复习 目录 HDFS的存储机制 secondary namenode工作机制 NameNode与SecondaryNameNode 的区别与联系? hdfs整体架构介绍 ...

  5. Hadoop之HDFS读写数据流程

    Hadoop之HDFS读写数据流程 目录 HDFS写数据流程 HDFS读数据流程 网络拓扑概念 机架感知 1. HDFS写数据流程 HDFS写数据流程,如下图 客户端通过Distributed Fil ...

  6. Hadoop之HDFS常用Shell命令

    Hadoop之HDFS常用Shell命令 启动Hadoop集群 sbin/start-dfs.shsbin/start-yarn.sh -help:输出这个命令参数 hadoop fs -help r ...

  7. Hadoop之HDFS概述

    Hadoop之HDFS概述 目录 HDFS产生背景 HDFS概念 HDFS优缺点 HDFS组成架构 1. HDFS产生背景 随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操 ...

  8. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  9. Spring boot项目整合Hadoop的HDFS

    由于最近需要使用Spring boot整合Hadoop的HDFS,但是在整合的过程遇到了很多问题,网上也没有现成教程,都是自己摸索出来的,配置了很久都没能把项目搭建出来,希望对大家有帮助. 使用Spr ...

最新文章

  1. python多线程爬虫实例-python支持多线程的爬虫实例
  2. beatsx白灯闪三下开不了机_beats X耳机不开机维修,beatsx耳机闪白灯是什么问题...
  3. 前端学习(1268):axios的响应结果
  4. littlevgl 透明按钮_张家港3-10吨叉车日租价格透明2020
  5. Pytorch+MINST 全连接神经网路训练学习
  6. ASP.NET开发经验积累(转发)以后会陆续放上新的
  7. Android中Activity出现与退出的自定义动画
  8. 《I'm a Mac:雄狮训练手册》——2.3 账户类型
  9. 系统安装-000 基础二:UEFI+GPT和BIOS+MBR互换(免重装系统,无损数据)
  10. TCP粘包分析与处理
  11. macOS访达中如何显示隐藏文件
  12. Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.and
  13. 游客 计算机英语,游客的英文,游客怎么都用英语!
  14. 计算机操作系统——(第四章) 存储器管理/内存管理
  15. 汇编程序设计-11-AX、BX、CX、DX寄存器
  16. 系统集成项目管理工程师05《项目进度管理》
  17. 性能分析-云盘-sysbench IO测速脚本
  18. 记录一些最近用过的编码转换
  19. matlab图像识别一
  20. 超级表格超好用的4个功能,你知道其中几个?

热门文章

  1. 在notebook中如何能完整的显示长文本内容
  2. 最大似然函数对数求解的便利
  3. docker容器的标准使用过程_跟我一起学docker(四)--容器的基本操作
  4. linux登出系统,讲解Linux操作系统进入与退出系统方法
  5. 将c语言转换成汇编语言的软件,如何把汇编语言转换成C语言
  6. c语言的转义字符要求,C语言…转义字符的使用
  7. 中国移动系统集成公司2020春招技术综合在线编程题第一题
  8. 【项目管理】你理解的项目管理是什么样的?
  9. 第10章:项目沟通管理和干系人管理(2)-章节重点
  10. 《系统集成项目管理工程师》必背100个知识点-57沟通管理