一、HDFS核心设计

  数据块(block)

    数据块是HDFS上最基本的存储单位

    HDFS块默认大小为128M

          对块进行抽象会带来的好处

      一个小文件的大小可以大于网络中任意一个磁盘的容量

      使用块抽象而不是文件可以简化存储子系统

      块非常适合用于数据备份进而提供数据容错能力和可用性

  数据块复制

    HDFS为了做到可靠性创建多分数据块,MapReduce就可以在他们所在节点上处理这些数据了

    HDFS将每个文件存储成块序列

    每个文件的block大小和复制因子都是可配置的 HDFS-site.xml

  数据副本的存放策略

    数据分块存储和副本的存放,是保证可靠性和高性能的关键

    将每个文件的数据进行分块存储

      每一个数据块又保存有多个副本

      这些数据块副本分布在不同的机器节点上

    在多数情况下,HDFS默认的副本系数是3

    Hadoop默认对3个副本的存放策略

      第一块:在本机器的HDFS目录下存储一个block

      第二块:在不同rack(机架)的某个DataNode上存储一个block

      第三块:在该机器的同一个rack下的某台机器上存储最后一个block

      更多副本:随机节点

    设置集群block的备份数

      方法一:配置文件hdfs-site.xml

      方法二:通过命令修改备份数

        bin/hadoop fs -setrep -R 1 /

    安全模式

      安全模式是Hadoop集群的一种保护模式

      用命令来操作安全模式

        Hadoop dfsadmin -safemode leave //强制NameNode退出安全模式

        Hadoop dfsadmin -safemode enter  //进入安全模式

        Hadoop dfsadmin -safemode get      //查看安全模式状态

        Hadoop dfsadmin -safemode wait     //等待,一直到安全模式结束

    负载均衡

      机器和机器之间磁盘利用率不平衡HDFS集群非常容易出现的情况

        尤其是在DataNode节点出现故障或在现有的集群上增添新的DataNode的时候

      分析数据块分布和重新均衡DataNode上的数据分布的工具

        $HADOOP_HOME/bin/start-balancer.sh -t 10%

      负载均衡程序作为一个与独立的进程namenode进程分开执行

      心跳机制

      机架感知

        大型Hadoop集群是以机架的形式来组织的

          同一个机架上不同节点间的网络状况比不同机架之间的更为理想

        默认情况下,Hadoop的机架感知是没有被启用的

          启用机架感知功能,在namenode所在机器的core-site.xml中配置一个选项

HDFS核心设计的更多相关文章

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

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

  2. Hadoop2源码分析-HDFS核心模块分析

    1.概述 这篇博客接着<Hadoop2源码分析-RPC机制初识>来讲述,前面我们对MapReduce.序列化.RPC进行了分析和探索,对Hadoop V2的这些模块都有了大致的了解,通过对 ...

  3. HDFS架构设计

    原文:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html 介绍 HDFS是个分布式 ...

  4. HDFS 核心原理

    HDFS 核心原理 2016-01-11 杜亦舒 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统提供的磁盘空间管理服务,只需要我们指定把文 ...

  5. 大数据技术 - 分布式文件系统 HDFS 的设计

    本章内容介绍下 Hadoop 自带的分布式文件系统,HDFS 即 Hadoop Distributed Filesystem.HDFS 能够存储超大文件,可以部署在廉价的服务器上,适合一次写入多次读取 ...

  6. HDFS的设计

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

  7. HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件

    HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件.它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的.为了容错,文件的所有数据块都会有副本.每个文件的数据块大小和副本 ...

  8. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

    这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出 ...

  9. 大数据:Hadoop(HDFS 的设计思路、设计目标、架构、副本机制、副本存放策略)

    一.HDFS 的设计思路 1)思路 切分数据,并进行多副本存储: 2)如果文件只以多副本进行存储,而不进行切分,会有什么问题 缺点 不管文件多大,都存储在一个节点上,在进行数据处理的时候很难进行并行处 ...

随机推荐

  1. 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)

    目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...

  2. [转]TFS常用的命令行详解

    本文转自:http://blchen.com/tfs-common-commands/ 微软的TFS和Visual Studio整合的非常好,但是在开发过程中,很多时候只用GUI图形界面就会发现一些复 ...

  3. Oracle总结之plsql编程(基础七)

    紧接基础六,对oracle角色和权限的管理之后,在接下来的几次总结中来就最近工作中用过的plsql编程方面的知识进行总结,和大家分享! 原创作品,转自请注明出处:https://www.cnblogs ...

  4. 【 js 算法类】这么全的数组去重,你怕不怕?

    以 var arr = [1,2,3,1]; 作为测试用例 方法一:双循环   (时间复杂度比较高,性能一般.) A.(1) function unique(arr) { var newArr = [ ...

  5. 【代码笔记】iOS-将字符串中特定后的字变成红色

    一,效果图. 二,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup ...

  6. SD从零开始01-02

    SD从零开始1 SD中的组织结构 销售相关的组织结构: 销售组织Sales organization 分销渠道Distribution channel 产品组Division 销售区域Sales ar ...

  7. ArcGIS基于DEM计算水流方向的方法(D8算法)

    ArcGIS采用D8算法计算水流方向(9.3.1后新增),输入数据应首先完成了洼地填充处理: One of the keys to deriving hydrologic characteristic ...

  8. maven一模块字段调用另一个模块数据生成下拉框

    店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接 ...

  9. Android Fragment的用法(二)

    如果你经常使用平板电脑,应该会发现很多的平板应用现在都采用的是双页模式(程序会在左侧的面板上显示一个包含子项的列表,在右侧的面板上显示内容),因为平板电脑的屏幕足够大,完全可以同时显示下两页的内容,但 ...

  10. Python技巧——list与字符串互相转换

    Python技巧——list与字符串互相转换   在Python的编程中,经常会涉及到字符串与list之间的转换问题,下面就将两者之间的转换做一个梳理. 1.字符串转换成list 命令:list() ...