hadoop权威指南 之 HDFS

一:HDFS  hadoop distributed filesystem的设计目标
   Very large files  单个文件和 文件总和
   Steaming data access  write-once,read mary times  流式数据读取。
   commodity hardware 普通的硬件
   
  HDFS 不适合的场景:
  low latency  data access 低延迟的数据读取。对与低延迟的要求 用hbase来解决。
  lots of small files 小文件
 multiple writers, arbitrary file modifications 多用户写入,任意文件修改。
二:HDFS 的概念。
1.数据块 block
a.block是磁盘读写的最小单元。hdfs的block 默认大小是64M。设置这么大是为了减少seeking,发挥流式读取的优势。
b.hdfs 文件会被划分为块大小的chuck 分块,作为独立的存储单元。
c.使用块而不是文件作为存储单元的好处:
    第一:文件可以大于任何一个磁盘的大小,文件并不需要存储在一个磁盘上。
第二:以block作为存储单元,简化了子系统的设计,每个block大小是一定的,便于计算单个磁盘能存储多少个块;块非常适用于做数据备份。进而提高容错性和可用性。
2.namenode 管理者  datanode 工作者


namenode:管理文件系统的命名空间,维护文件系统所以的目录和文件,这些信息以命名空间镜像文件和编辑日志文件两种文件形式永久存储在硬盘上。 
namenode 也记录着所有datanode的信息,但是它不永久保存block的位置信息,因为这些信息在系统启动时由数据节点重建。
所以namenode的容错机制比datanode更加重要


datanode 是工作节点,它根据需要存储并检索数据块,并且定期想namenode发送他们所存储块的列表。


 
 
3.namenode的容错机制
第一:备份文件系统元数据的文件,当将持久状态写入磁盘的同时,写入一个远程挂载的网络文件系统 NFS
第二:运行辅助namenode,它的作用是定期编辑日志合并命名空间镜像文件。它一般运行在一个单独的物理机器上,与主节点分开,当主节点失效时,它也会随之失效,所以会丢失部分数据。这时可以从NFS上把元数据恢复到辅助namenode上。并讲辅助namenode作为新的namenode运行。
4。命令行接口
fs.default.name  :hdfs:localhost     默认8020端口上运行namenode
dfs.replication 文件系统块副本数。
5.基本文件系统操作。
创建目录:hadoop fs -mkdir xxxx
列出列表:hadoop fs -ls
从本地复制到hdfs:hadoop fs -copyFromLocal xxxx  hdfs://localhost/xxx     (hdfs://localhost可省略,在core-site。xml文件中已指定。)
从hdfs 到本地:copyToLocal


名称解释:POSIX 表示可移植操作系统接口(Portable Operating System Interface 
POSIX是可移植操作系统接口(Portable Operating System Interface)的首字母缩写。POSIX是基于UNIX的,这一标准意在期望获得源代码级的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。POSIX标准定义了操作系统应该为应用程序提供的接口:系统调用集。
一:HDFS 结构图。




 
由图可知,名称结点(NameNode)上保存着控制数据结点(DataNode)信息的元数据(Metadata)。客户端Client可以通过NameNode对元数据进行操作,也可以直接对DataNode进行读和写操作。
集群中一台机器上只运行一个NameNode实例,而集群中其它机器分别运行一个DataNode实例。NameNode是一个中心服务器,负责管理文件系统的名字空间以及客户端对文件的访问,用户能够以文件的形式在上面进行名字空间操作,比如打开、关闭、重命名文件或目录,同时NameNode还决定了数据块到数据节点的映射关系。NameNode也可以称为管理文件系统的元数据。集群中每一个节点配置一个DataNode,每个DataNode负责管理它所在节点上的数据存储。从内部看,一个文件被分成一个或多个数据块,这些块存储在一组DataNode上。同时,DataNode负责处理文件系统客户端的读写请求,在NameNode的统一调度下进行数据块的创建,删除和复制。
二:namenode的功能
1.NameNode的功能由如下几点组成:
(1)管理元数据和文件块
管理元数据指管理元数据信息。元数据信息包括名字空间、文件到文件块的映射、文件块到数据节点的映射三部分。管理文件块包括创建新文件块、文件复制、移除无效文件块以及回收孤立文件块等内容。
(2)管理命名空间
NameNode管理文件系统的命名空间。任何对文件系统元数据产生修改的操作,NameNode都会使用事务日志记录(下称EditLog)来表示;同样地,修改文件的副本系数也将往Editlog中插入一条记录,NameNode将Editlog存储在本地操作系统的文件系统中。同时,文件系统的命名空间被存储在一个称之为Fslmage(映像文件)的文件中,包括文件的属性、文件块到文件的映射以及文件块到数据节点的映射等内容,FsImage文件也是存放在NameNode所在的本地文件系统中。
(3)监听请求和处理请求
监听请求指监听客户端事件和DataNode事件。客户端事件包含名字空间的创建和删除,文件的创建、读写、重命名和删除,文件列表信息获取等信息。DataNode事件主要包括文件块信息、心跳响应、出错信息等。
处理请求指处理上面的监听请求事件并返回结果。
(4)心跳检测
DataNode会定期将自己的负载情况通过心跳信息向NameNode汇报。Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。 
NameNode 决定是否将文件映射到 DataNode 的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。
实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求,要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。
NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。


DataNode的功能主要包括以下几个方面:
首先,是数据块的读写。一般是文件系统客户端需要请求对指定DataNode进行读写操作,DataNode通过DataNode的服务进程与文件系统客户端打交道。同时,DataNode进程与NameNode统一结合,对是否需要对文件块的创建、删除、复制等操作进行指挥与调度,当与NameNode交互过程中收到了可以执行文件块的创建、删除或复制操作的命令后,才开始让文件系统客户端执行指定的操作。具体文件的操作并不是DataNode来实际完成的,而是经过DataNode许可后,文件系统客户端进程来执行实际操作。
其次,是向NameNode报告状态。每个DataNode节点会周期性地向Name
Node发送心跳信号和文件块状态报告,以便NameNode获取到工作集群中DataNode节点状态的全局视图,从而掌握它们的状态。如果存在DataNode节点失效的情况时,NameNode会调度其它DataNode执行失效结点上文件块的复制处理,保证文件块的副本数达到规定数量。
最后,是执行数据的流水线复制。当文件系统客户端从NameNode服务器进程中获取到要进行复制的数据块列表(列表中包含指定副本的存放位置,亦即某个DataNode结点)后,会首先将客户端缓存的文件块复制到第一个Data
Node节点上,此时并非整个块都复制到第一个DataNode完成以后才复制到第二个DataNode节点上,而是由第一个DataNode向第二个DataNode节点复制,如此反复进行下去,直到完成文件块及其块副本的流水线复制。



































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统;hadoop的i/o、mapreduce应用程序开发;mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。   本书是hadoop权威参考,程序员可从探索如何分析海量数据集,管理员可以从了解如何安装与运行hadoop集群。   什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是应对海量数据的理想工具。项目负责人tomwhite透过本书详细阐述了如何使用hadoop构建可靠、可伸缩的分布式系统,程序员可从探索如何分析海量数据集,管理员可以从了解如何安装和运行hadoop集群。   本书结合丰富的案例来展示如何用hadoop解决特殊问题,它将帮助您:    ·使用hadoop分布式文件系统(hdfs)来存储海量数据集,   通过mapreduce对这些数据集运行分布式计算    ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理    ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性    ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop    ·使用高级查询语言pig来处理大规模数据    ·利用hadoop数据库hbase来保存和处理结构化/半结构化数据    ·学会使用zookeeper来构建分布式系统   如果您拥有海量数据,无论是gb级还是pb级,hadoop都将是您的完美解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值