参考:http://www.cnblogs.com/linuxprobe/p/5594431.html

1.初识HDFS

    HDFS作为一个分布式文件系统,具有高容错的特点,它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问(吞吐率:是对一个系统和它的部件处理传输数据请求能力的总体评价),适合那些需要处理海量数据集的应用程序。

1.1 HDFS主要特性

  • 支持超大文件。超大文件在这里指的是几百MB,几百GB甚至几TB大小的文件,一般来说,一个Hadoop文件系统会存储T(1TB = 1024GB)、P(1P = 1024T)级别的数据。Hadoop需要能够支持这种级别的大文件。
  • 检测和快速应对硬件故障。在大量通用硬件平台上构建集群时,故障,特别是硬件故障是常见的问题。一般的HDFS系统是由数百台甚至上千台存储着数据文件的服务器组成,这么的服务器意味着高故障率。因此,故障检测和自动恢复是HDFS的一个设计目标。
  • 流式数据访问。(流式数据:来一点,处理一点)HDFS处理的数据规模都比较大,应用一次需要访问大量的数据。同时,这些应用一般是批量处理,而不是用户交互处理。HDFS使应用程序能够以流的形式访问数据集,注重的是数据的吞吐量,而不是数据访问的速度。
  • 简化的一致性模型。大部分的HDFS程序操作文件时需要一次写入,多次读取。在HDFS中,一个文件一旦经过创建、写入、关闭后,一般就不需要修改了。这样简单的一致性模型,有利于提供高吞吐量的数据访问模型。

不适用:

  • 低延迟访问数据。低延迟数据,如和用户进行交互的应用,需要数据在毫秒或秒的范围内得到响应。由于Hadoop针对高数据吞吐量做了优化,而牺牲了获取数据的延迟,对于低延迟访问,可以考虑使用HBase。
  • 大量的小文件。HDFS支持超大文件,是通过将数据分布在数据节点(DataNode),并将文件的元数据保存在名字节点(NameNode)上。名字节点的内存大小,决定了HDFS文件系统可保存的文件数量,虽然现在的系统内存都比较大,但大量的小文件还是会影响名字节点的性能。
  • 多用户写入文件、修改文件。HDFS中的文件只能有一盒写入者,而且写操作总是在文件末。它不支持多个写入者,也不支持在数据写入后,在文件的任意位置进行修改。

1.2 NameNode

1.2.1 NameNode

NameNode的作用是管理文件目录结构,接受用户操作请求,是管理数据节点的。

文件包括:

  • fsimage(文件系统镜像):元数据镜像文件。存储某一时段NameNode内存元数据信息。
  • edits:操作日志文件。
  • fstime:保存最近一次checkpoint的时间。比如说,在6月1号买的新电脑,在6月5日,做的第一次还原点,在6月18号,由于中病毒。在6月21号是做的第二次还原点。Checkpoint是保存最近的那次做还原点的数据。6月18-21日。

1.2.2 HA原理详解

高可用性(High Availability,简称HA)集群是共同为客户机提供网络资源的一组计算机系统。其中每一台提供服务的计算机称为节点(Node)。当一个节点不可用或者不能处理客户的请求时,该请求会及时转到另外的可用节点来处理,而这些对于客户端是透明的,客户不必关心要使用资源的具体位置,集群系统会自动完成。

参考:http://www.cnblogs.com/sy270321/p/4398815.html

1.3 DataNode

数据库(block):HDFS默认最基本的存储单位是64MB的数据块。和普通文件系统相同的是,HDFS中的文件是被分成大小为64MB一块的数据块存储的。不同于普通文件系统的是,在HDFS中如果一个文件小于一个数据块的大小,那么该文件不占用整个数据块存储空间。

DataNode(数据节点):是文件系统中真正存储数据的地方。客户端或者元数据信息可以向数据节点请求写入或者读出数据块。数据节点周期性地向元数据节点回报其存储的数据块信息。

最新文章

  1. Appium环境搭建
  2. apache结合svn创建svn资源库
  3. Android横竖屏切换重载问题与小结
  4. 《ASP.NET MVC 5 高级编程(第5版)》
  5. 关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题
  6. co + Generator 写的迭代器 类似 async.whilst
  7. Linux环境Weblogic10g服务部署
  8. 灯笼Lantern下载及使用教程
  9. iOS性能优化中的离屏渲染
  10. 淘宝开源任务调度框架tbschedule
  11. stringBuffer的使用及字符串比较的区别
  12. 八数码问题+路径寻找问题+bfs(隐式图的判重操作)
  13. break的标签的用法
  14. find文件查找
  15. cocos2d-x 游戏开发之有限状态机(FSM) (三)
  16. 解决Editor.md通过代码块原样输出Emoji被强制解析问题
  17. Tomcat系列(11)——Tomcat 部署web应用的4种方法
  18. JDK的安装及环境变量配置
  19. pycharm import pygame 出现报错:No module named 'pygame'
  20. 五、regularized线性回归练习(转载)

热门文章

  1. 性能测试专题:Locust工具实战之“蝗虫”降世
  2. 运用python实现冒泡排序算法
  3. Stream系列(三) FlatMap方法使用
  4. /proc/cpuinfo文件解读(超易理解)
  5. python排序算法之一:冒泡排序(及其优化)
  6. python基本文件操作
  7. Java数组与C/C++数组的区别
  8. PAT(甲级)2017年秋季考试
  9. 2019-2020-1 20199304《Linux内核原理与分析》第三周作业
  10. 程序员修神之路--打通Docker镜像发布容器运行流程