浅谈Hadoop下HDFS文件系统

Hadoop下HDFS文件系统

在这里我们对Hadoop的基本概念,历史功能就不做过多的阐述,重点在对于他的文件系统做一些了解和阐述。

HDFS(Hadoop distributed file system)是一个分布式文件系统。具有高容错性(fault-tolerant),使得他能够部署在低廉的硬件上。他可以提供高吞吐率来访问应用程序的数据。HDFS放宽了可移植操作系统接口的要求。这样就可以实现以流式的形式来访问文件系统的数据。

HDFS的设计目标:

  1. 检测和快速回复硬件故障
  2. 流式的数据访问
  3. 简化一致性模型
  4. 通信协议

HDFS体系结构

HDFS的体系结构采用主从(Master/Slave)模型,一个HDFS集群是由一个NameNode和若干个DataNode组成,其中NameNode是主服务器,管理文件体统的命名空间和文件操作;DataNode管理存储的数据。HDFS允许用户以文件的形式来存储数据。从内部来看文件被分成了若干个数据块,而这若干个数据块存储在一组DataNode中。在NameNode的统一调度下课以对文件进行创建、删除和复制。(用户数据永远不会经过NameNode)

Hadoop与分布式开发

我们通常所说的分布式系统其实是分布式软件系统,即分布式处理的软件系统,包括

分布式操作系统

分布式程序设计语言及其编译(解释)系统

分布式文件系统

分布式数据库系统

Hadoop属于分布式软件系统中的文件系统中这一层它实现了分布式文件系统和部分分布式数据库的功能

而区中HDFS能够实现数据在据算计集群组成的云上高效的存储和管理。

HDFS分布式系统和其他系统的类似特质:

  1. 对于整个集群有的那一的命名空间
  2. 具有数据的一致性、适合一次写入多次读写的模型,客户端在文件没有被成功创建之前,是无法看到文件的存在
  3. 文件会被分成多个问价块,每个文件被分配存储到数据节点上,而且会根据配置有复制文件块来保证数据的安全性。

接下来请根据上图参考学习

通过具体的操作来看HDFS对数据的管理

(1)文件写入

  • Client向NameNode发起文件写入的请求
  • NameNode根据文件大小和文件块的配置情况,返回给client他所管理的DataNode的信息
  • client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入每一个DataNode块中

(2)文件读取

  • client向NameNode发起读取文件的请求
  • NameNode返回文件存储的DataNode信息
  • client读取文件信息

(3)文件块(Block)复制

  • NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效
  • 通知DataNode相互复制Block
  • DataNode开始直接相互复制

HDFS在系统管理值得借鉴的功能

  1. 心跳检测
  2. 数据复制
  3. 数据校验
  4. 单个NameNode如果失败任务处理信息将会记录在本地文件系统和远端的文件系统中
  5. 数据的管道性写入
  6. 安全模式

HDFS就简单介绍到这  如果有不足的地方请多多包涵,该文档仅作学习参考。

时间: 2024-12-25 06:15:09

浅谈Hadoop下HDFS文件系统的相关文章

浅谈hadoop中mapreduce的文件分发

最近在做数据分析的时候,需要在mapreduce中调用c语言写的接口,此时就需要把动态链接库so文件分发到hadoop的各个节点上,原来想自己来做这个分发,大概过程就是把so文件放在hdfs上面,然后做mapreduce的时候把so文件从hdfs下载到本地,但查询资料后发现hadoop有相应的组件来帮助我们完成这个操作,这个组件就是DistributedCache,分布式缓存,运用这个东西可以做到第三方文件的分发和缓存功能,下面详解: 如果我们需要在map之间共享一些数据,如果信息量不大,我们可

浅谈Linux下Makefile编写

浅谈Linux下Makefile的编写 前言:本文简要介绍Makefile文件的编写规范,结合具体项目中的应用进行讲解. 具体代码地址: https://github.com/AnSwErYWJ/DogFood/blob/master/Makefile 简介 Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作.而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关

浅谈 js 下 with 对性能的影响

这几天多次看到有博主们在写 with 的文章,这货确实非常方便,但是却是个性能杀手,所以一直都是上不得台面的.那么他究竟会让效率低下到什么程度呢?先来看下 with 是如何的便捷吧.. // 正常调用 console.log(location.host); console.log(location.pathname); // 在 with 下 with (location) { console.log(host); console.log(pathname); } 如果不影响性能,确实是非常霸气

浅谈 IE下innerHTML导致的问题

原文:浅谈 IE下innerHTML导致的问题 先来看个demo吧: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落</title> <script type=&

[]转帖] 浅谈Linux下的五种I/O模型

浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer.如下图所示: 整个请求过程为: 用户进程发起请求,内核接受到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数

Hadoop学习—浅谈hadoop

大数据这个词越来越热,本人一直想学习一下,正巧最近有时间了解一下.先从hadoop入手,在此记录学习中的点滴. 什么是hadoop? What Is Apache Hadoop? The Apache? Hadoop? project develops open-source software for reliable, scalable, distributed computing 作者:Doug Cutting 受Google三篇论文的启发(GFS.MapReduce.BigTable) 解

浅谈虚拟环境下虚拟磁盘的扩容

搭建一个虚拟化平台实现资源复用乃至建设私有云,是一个组织 IT 部门今天几乎必须要做的事情之一.老话说的好,罗马不是一天建成的,今天创建的虚机,分配的虚拟磁盘空间,也许明天就会捉襟见肘.是每次增加一个虚拟磁盘,还是想办法增加虚拟磁盘的大小,这是个考虑的问题. 个人角度,强烈不建议增加虚拟磁盘的数量.原因后文说明.那就选择扩展虚拟磁盘容量吧,如何去做虚拟磁盘的扩容,其实在今天的虚拟化产品都能得到很好的支持.例如: Hyper-V 早期Hyper-V 2.0 (Windows Server 2008

浅谈MYSQL之日志文件系统

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等 MySQL日志文件系统的组成 a.错误日志:记录启动.运行或停止mysqld时出现的问题. b.通用日志:记录建立的客户端连接和执行的语句. c.更新日志:记录更改数据的语句.该日志在MySQL 5.1中已不再使用. d.二进制日

浅谈terminal下快速开启sublime text3

如何在命令行中快速开启sublime text3打开当前文件夹呢? mac下配置如下:1.open .zshrc 2. alias subl="'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'" alias nano="subl"                             export EDITOR="subl" 附:rvm与zsh问题: This so