一. hdfs设计的动机

为大规模分布式计算准备的分布式文件系统,并非实时性要求很高的文件系统。

二. 设计的取舍

1. 因为要求有高吞吐量,所以牺牲读取文件的实时性,实时性要求高的分布式文件系统可以选择hbase

2. 使用廉价的机器,所以任意一个存储节点可能会挂掉,将之视为hadoop的常态

3. 流式存储,一次写入,多次读取进行数据迭代,写入也尽量采取在文件的末尾进行追加的方式,在任意一处写入数据的操作代价很高,尽量不要做

4. 不鼓励使用大量的小文件处理,每个小文件都需要都有一个元数据来存储这些小文件的信息,并且这些信息都存储在namenode上,一条元数据大概是150K左右的大小,而namenode的容量是有限的

三. hdfs中的块

hdfs中的块与普通文件系统中的块(这里是逻辑块,不同于磁盘中的块)的概念类似,都是文件系统可操作的最小单位,但是大小差别很大,常见的文件系统的块通常为磁盘块大小(512字节)的整数倍,而hdfs中的块默认大小为64M

hdfs的块之所以那么大,是为了尽快寻址,并且hadoop中的不鼓励处理小文件,而大小小于64M的文件会被单独占一个块,只是这个块的大小等于文件的大小,并不是64M

hdfs中的块很适合做备份,通常每个块都会有三个备份,然后存储在不同的节点上,即使其中一个节点挂掉,仍然可以找到备份的数据块(如何将块尽量的比较均匀分布在不同的节点上?)

四.namenode和datanode

namenode是管理者,datanode是执行者

namenode存储着文件块的位置、索引信息、namespace,这些信息在系统重启时重建,还存储操作日志

datanode上存储着具体的文件块,并且在一个固定的时间段内(心跳),会向namenode报告自己的状态和块列表信息

如果namenode上的信息丢失,将是整个文件系统的灾难,所以要有一定的机制来保证文件存储的可靠性

hdfs一般通过两个机制来保证可靠性:

a. 写时copy:在namenode进行写操作(原子操作)的同时,在向本地磁盘写的同时,也会向网络上的某个机器上写同样的内容,通常通过NFS完成

b. 镜像备份:定期将namenode上的数据在另一个机器上创建镜像,进行备份,如果namenode出现问题,则通过镜像进行恢复,缺点是仍然会损失一些数据

从上述这张图中,可以看出,用户写文件并不是经过namenode进行转发,而是直接往datanode上写,然后由datanode将自己节点上块信息传给namenode,这样就避免了namenode成为系统IO的瓶颈。

五. 常见hdfs命令

1. 见$hadoop fs -help  http://hadoop.apache.org/docs/r1.2.1/file_system_shell.html    阅读帮助和文档是最好的学习命令的方式

2. 修改~/.bashrc 映射常用命令

hdfs: 一个分布式文件系统(一)的更多相关文章

  1. 【整理学习Hadoop】H D F S 一个分布式文件系统

    Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统的区别 ...

  2. 在这个应用中,我使用了 MQ 来处理异步流程、Redis 缓存热点数据、MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ、MySQL 持久化的数据也会存在于一个分布式文件系统中,他们之间的调用也是需要用 RPC 来完成数据交互的。

    在这个应用中,我使用了 MQ 来处理异步流程.Redis 缓存热点数据.MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ.MySQ ...

  3. HDFS:分布式文件系统

    HDFS是GFS的简化版,它同一时刻只允许一个用户对同一文件进行追加写操作(GFS允许并发写).它适合存储大文件,并提供高吞吐量的顺序读/写访问. 它的早期版本两大问题,例如:单点失效和水平扩展不佳. ...

  4. configure HDFS(hadoop 分布式文件系统) high available

    注:来自尚学堂小陈老师上课笔记 1.安装启动zookeeper a)上传解压zookeeper包 b)cp zoo_sample.cfg zoo.cfg修改zoo.cfg文件 c)dataDir=/o ...

  5. Hadoop分布式文件系统(HDFS)详解

    HDFS简介: 当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区 (partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统 (D ...

  6. Hadoop分布式文件系统HDFS详解

    Hadoop分布式文件系统即Hadoop Distributed FileSystem.        当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并 ...

  7. 大数据 --> 分布式文件系统HDFS的工作原理

    分布式文件系统HDFS的工作原理 Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数 ...

  8. Hadoop分布式文件系统HDFS的工作原理

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  9. 1)HDFS分布式文件系统 2)HDFS核心设计 3 )HDFS体系结构

    一.HDFS简介 1.HDFS:Hadoop distributed file system 一个分布式文件系统 基于流数据模式访问和处理超大文件的需要而开发 适合应用在大规模数据集上 2. 优点 处 ...

随机推荐

  1. 最短路径算法(Dijkstra算法、Floyd-Warshall算法)

    最短路径算法具体的形式包括: 确定起点的最短路径问题:即已知起始结点,求最短路径的问题.适合使用Dijkstra算法. 确定终点的最短路径问题:即已知终结结点,求最短路径的问题.在无向图中,该问题与确 ...

  2. DWZ使用笔记

    DWZ使用笔记 一.前言     在最近的一个项目中,引入了DWZ这个富客户端框架,算是一次尝试吧.期间也遇到不少问题,总算一一解决了.特以此文记之.     本人用的是dwz-ria-1.4.5+A ...

  3. 【移动开发】安卓Lab2(02)

    Design UI 总共有三个activity 1. MainActitivty: search bar:先用edittext来代替 map:用imageview装图片 2. DetailActiti ...

  4. 在RHEL5.4 设置KVM(虚拟机)通过桥接器上网

    以root身份登录系统,创建桥接器配置文件 #cd /etc/sysconfig/network-scripts/ #cp ifcfg-eth0 ifcfg-br0 #vi ifcfg-br0 桥接器 ...

  5. asp.net mvc 实体类成员变量标识示例

    检查不能为空 [Required] public string ID { get; set; } 检查最大长度 [StringLength(36, ErrorMessage = "长度不可超 ...

  6. Linux下的scp拷贝命令详解

    相同Linux系统中对文件复制拷贝可以用CP命令: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案, ...

  7. 织梦dedecms后台添加图片style全部都变成st<x>yle的解决办法

    可乐站长在建站的时候,上传缩略图喜欢输入图片路径,不喜欢上传图片,有几次我上传图片路径为:/style/image/**.jpg,然后返回修改后,图片为路径却为:/st<x>yle/ima ...

  8. LVM 创建分区扩展分区记录

    LVM 原理   图片来自百度百科   测试环境centOS 7                 LVM version:     2.02.115(2)-RHEL7 (2015-01-28)     ...

  9. Smarty模板中调用PHP函数

    因为应用需要,要在Smarty中调用PHP函数,实现办法如下:模板 数据条数:{$data|count} 活动页面文件后缀:{$page|substr:'-3'} 特殊情况:{$page|str_re ...

  10. iterm2相关配置

    使用 iterm2 登陆 公司堡垒机 进行 上传 下载文件 等维护操作.. 1.需要安装iterm2 软件 http://iterm2.com/  下载安装 2.安装brew ruby -e &quo ...