Hadoop整理二(Hadoop分布式存储系统HDFS)
一.背景
当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区(partition) 并存储到若干台单独的计算机上。管理网络中跨多台计算机存储的文件系统称为分布式文件系统 (distributed filesystem ) 。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。例如,使文件系统能够容忍节点故障且不丢失任何数据,就是一个极大的挑战。Hadoop 为有一个称为 HDFS 为 的分布式系统,全称为Hadoop Distributed Filesystem,在非正式文档或旧文档以及配置文件中,有时也简称为 DFS。
二.概念
HDFS 集群有两类节点,并以管理者-工作者模式运行,即一个namenode( 管理者)和多个datanode( 工作者 )。
NameNode是HDFS架构中的主节点。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件(fs-image)和编辑日志(edit-logs)文件。也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。
功能
管理各个从节点的状态(DataNode)。
记录存储在HDFS上的所有数据的元数据信息。例如:block存储的位置,文件大小,文件权限,文件层级等等。这些信息以两个文件形式永久保存在本地磁盘上。
命名空间镜像文件(FsImage): fsimage是HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息
编辑日志(edit-logs) 文件:保存了自最后一次检查点之后所有针对HDFS文件系统的操作,比如:增加文件、重命名文件、删除目录等等。
记录了存储在HDFS上文件的所有变化,例如文件被删除,namenode会记录到editlog中。
接受DataNode的心跳和各个datanode上的block报告信息,确保DataNode是否存活。
负责处理所有块的复制因子。 如果DataNode节点宕机,NameNode会选择另外一个DataNode均衡复制因子,并做负载均衡。
DataNode是HDFS架构的从节点,管理各自节点的Block信息。datanode是文件系统的工作节点。它们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向namenode 发送它们所存储的块的列表。
功能
多个DataNode分别运行在独立的节点上。
数据实际是存储到DataNode上面。
DataNode执行客户端级别的读写请求。
向NameNode发送心跳(默认是3s),报告各自节点的健康状况。
Sencondary NameNode是NameNode的助手,不要将其理解成是NameNode的备份。 Secondary NameNode的整个目的在HDFS中提供一个Checkpoint Node,所以也被叫做checkpoint node。、
功能
定时的从NameNode获取EditLogs,并更新到FsImage上。
一旦它有新的fsimage文件,它将其拷贝回NameNode上,NameNode在下次重启时回使用这个新的fsimage文件,从而减少重启的时间。
客户端(Client)
Client代表用户通过namenode和datanode访问整个文件系统。客户端提供一个类似于POSIX(可移植操作系统界面)的文件系统接口,因此用户在编程时无需知道namenode和datanode也可实现其功能。
复制因子
HDFS为我们提供了可靠的存储,就是因为这个复制因子。默认复制因子是3。DataNode会定时发送心跳给NameNode,汇报各自节点的Block信息。NameNode收集到这些信息后,会对超出复制因子的Block删除,复制因子不足的Block做添加。
Hadoop整理二(Hadoop分布式存储系统HDFS)的更多相关文章
- hadoop系列(二)分布式文件系统HDFS
根据core-site.xml的配置,接下来就可以通过:hdfs://localhost:9000来对hdfs进行操作了. 1.创建输入目录 C:\WINDOWS\system32>hadoop ...
- Hadoop第三天---分布式文件系统HDFS(大数据存储实战)
1.开机启动Hadoop,输入命令: 检查相关进程的启动情况: 2.对Hadoop集群做一个测试: 可以看到新建的test1.txt和test2.txt已经成功地拷贝到节点上(伪分布式只有一个节 ...
- 分布式存储系统-HDFS
1 HDFS 架构 HDFS作为分布式文件管理系统,Hadoop的基础.HDFS整体架构包括:NameNode.DataNode.Secondary NameNode,如图: HDFS采用主从式的分布 ...
- Hadoop 3、Hadoop 分布式存储系统 HDFS
HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统. 一.HDFS的优缺点 1.HDFS优点: a.高容错性 .数据保存多个副本 .数 ...
- Hadoop 3、Hadoop 分布式存储系统 HDFS(好多彩色图)
HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统. 一.HDFS的优缺点 1.HDFS优点: a.高容错性 .数据保存多个副本 .数 ...
- Hadoop分布式存储系统HDFS
1.hadoop fs 指令 -ls -ls <路径> 查看指定路径的当前目录结构 -lsr -lsr <路径> 递归查看指定路径的目录结构 -du -du <路径> ...
- Hadoop整理一(初识Hadoop)
一.要点 1.Hadoop目的是让多台计算机同时解决一个问题 2.HDFS(Hadoop Distributed File System 分布式存储系统)是一个分布式文件系统,有目录,目录下可以存储文 ...
- 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)
大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四): ...
- 一图看懂hadoop分布式文件存储系统HDFS工作原理
一图看懂hadoop分布式文件存储系统HDFS工作原理
随机推荐
- Composer 自动加载(autoload)机制
自动加载的类型 总体来说 composer 提供了几种自动加载类型 classmap psr-0 psr-4 files 这几种自动加载都会用到,理论上来说,项目代码用 psr-4 自动加载, hel ...
- #import 指令
[#import 指令] #import指令用于从一个类型库中结合信息.该类型库的内容被转换为C++类,主要用于描述COM界面. 语法 #import "文件名" [属性] #im ...
- [转载]ECMA-262 6th Edition / Draft August 24, 2014 Draft ECMAScript Language Specification
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-23.4 Draft Report Errors and Issues at: htt ...
- Druid.io SQL乱码问题
1.场景 1.1.依赖版本 avatica-core 1.11.0 druid 0.12.0 1.2.问题重现: 使用Avatica JDBC查询语句:SELECT score FROM studen ...
- 介绍一个强大的画图类 CImage(转)
我们知道,Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标.位图.光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件( ...
- POJ 2485 Highways( 最小生成树)
题目链接 Description The islandnation of Flatopia is perfectly flat. Unfortunately, Flatopia has no publ ...
- hive笔记之row_number、rank、dense_rank
hive中有三个与分组排序相关的分析函数(我起初也认为是窗口函数,后来看到手册里是把他们划到了Analytics functions下),row_number.rank.dense_rank,我一直傻 ...
- 【转换】Bean、List、Map、Array、String与JSON字符串的相互转换
import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.math.BigDecimal; i ...
- php中各种hash算法的执行速度比较
更多内容推荐微信公众号,欢迎关注: PHP中的Hash函数很多,像MD4.MD5.SHA-1.SHA-256.SHA-384.SHA-512等我们比较常见,那么各个哈希的执行速度呢? $algos = ...
- spring-boog-测试打桩-Mockito
Mockito用于测试时进行打桩处理:通过它可以指定某个类的某个方法在什么情况下返回什么样的值. 例如:测试 controller时,依赖 service,这个时候就可以假设当调用 service 某 ...