zoukankan      html  css  js  c++  java
  • hdfs的block为什么设置成128M

    1. 如果块设置过大

    • 从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;

    • mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。

    2. 如果块设置过小

    • 存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;

    • 文件块过小,寻址时间增大,导致程序一直在找block的开始位置。

    因而,块适当设置大一些,减少寻址时间,传输一个由多个块组成的文件的时间主要取决于磁盘的传输速率。

    3. 为什么默认是128M

    • HDFS中平均寻址时间大概为10ms;

    • 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;
      所以最佳传输时间为10ms/0.01=1000ms=1s

    • 目前磁盘的传输速率普遍为100MB/s;
      计算出最佳block大小:100MB/s x 1s = 100MB
      所以我们设定block大小为128MB。

    实际在工业生产中,
    磁盘传输速率为200MB/s时,一般设定block大小为256MB
    磁盘传输速率为400MB/s时,一般设定block大小为512MB
    
  • 相关阅读:
    c#中跨线程调用windows窗体控件
    像职业选手样编码:地道Python
    数据挖掘笔记 第一章:引言
    SVN使用教程(基于SAE)
    常用的js函数
    linux服务之tuned
    PHP 开启短标签
    如叶梦想!
    分布式控制系统Git学习
    LabVIEW(十六):多列列表框控件
  • 原文地址:https://www.cnblogs.com/isabellasu/p/11175643.html
Copyright © 2011-2022 走看看