HDFS块大小默认为什么是64MB(或者是128MB)

news/2024/11/7 14:41:40/

块的大小设置原则:最小化寻址开

块越大寻址时间越短。如果块设置的足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间,因而,传输一个由多个块组成的文件的时间取决于磁盘的传输速率。但是这个数也不会设置的过大,mapreduce中的map任务通常一次只处理一个块中的数据,因此如果任务数太少(少于集群中节点的数量),运行速度会很慢

主要由以下考虑:

  • 减少硬盘寻道时间(disk seek time)

          HDFS设计前提是支持大容量的流式数据操作,所以即使是一般的数据读写操作,涉及到的数据量都是比较大的。假如数据块设置过少,那需要读取的数据块就比较多,由于数据块在硬盘上非连续存储,普通硬盘因为需要移动磁头,所以随机寻址较慢,读越多的数据块就增大了总的硬盘寻道时间。当硬盘寻道时间比io时间还要长的多时,那么硬盘寻道时间就成了系统的一个瓶颈。合适的块大小有助于减少硬盘寻道时间,提高系统吞吐量。传输一个由多个块的组成的文件取决于磁盘传输速率。如寻址时间约为10ms,传输速率为100MB/S,为了使寻址时间仅占传输时间的1%,块的大小设置约为100MB,默认大小是64MB,现在在实际生产中都是128MB了,随着新一代磁盘驱动器传输速率的提升,块的大小将会被设置的更大。

  • 减少Namenode内存消耗

          对于HDFS,他只有一个Namenode节点,他的内存相对于Datanode来说,是极其有限的。然而,namenode需要在其内存FSImage文件中中记录在Datanode中的数据块信息,假如数据块大小设置过少,而需要维护的数据块信息就会过多,那Namenode的内存可能就会伤不起了。
 

  • Map崩溃问题:

系统需要重新启动,启动过程需要重新加载数据,数据块越大,数据加载时间越长,系统恢复过程越长。
 

  • 监管时间问题:

         主节点监管其他节点的情况,每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。对于这个“预设的时间间隔”,这是从数据块的角度大概估算的。假如是对于64MB的数据块,我可以假设你10分钟之内无论如何也能解决了吧,超过10分钟也没反应,那就是死了。可对于640MB或是1G以上的数据,我应该要估算个多长的时间内?估算的时间短了,那就误判死亡了,分分钟更坏的情况是所有节点都会被判死亡。估算的时间长了,那等待的时间就过长了。所以对于过大的数据块,这个“预设的时间间隔”不好估算。
 

  • 问题分解问题:

数据量大小是问题解决的复杂度是成线性关系的。对于同个算法,处理的数据量越大,它的时间复杂度也就越大。块的大小太大的话,一个map任务处理一个块,那任务数就变少了,作业运行速度也就变慢了。

  • 约束Map输出:

         在Map Reduce框架里,Map之后的数据是要经过排序才执行Reduce操作的。想想归并排序算法的思想,对小文件进行排序,然后将小文件归并成大文件的思想

参考:http://f.dataguru.cn/hadoop-174723-1-1.html


http://www.ppmy.cn/news/172172.html

相关文章

STM32入门开发: 介绍SPI总线、读写W25Q64(FLASH)(硬件+模拟时序)

一、环境介绍 编程软件: keil5 操作系统: win10 MCU型号: STM32F103ZET6 STM32编程方式: 寄存器开发 (方便程序移植到其他单片机) SPI总线: STM32本身支持SPI硬件时序,本文示例代码里同时采用模拟时序和硬件时序两种方式读写W25Q64。 模拟时序更加方便移植到…

MinGW和 MinGW-W64的区别

部分参照备忘录原文: bitbucket.org/FrankHB/yslib/src/50c3e6344a5a24b2382ce3398065f2197c2bd57e/doc/Workflow.Annual2014.txt?atmaster 452行。 试试问答体。首先得绕个远路,从Win32开始说起,否则之后容易乱…… Q:什么是…

计算机怎么弄64位,64位系统怎么装?安装64位系统教程

电脑怎么安装64位系统?一些用户由于内存比较小,是安装了32位windows系统,现在内存增加到4G甚至更大,此时需要安装64位系统,才能更好的识别使用大内存。不过有用户不清楚如何安装64位系统,64位系统安装方法有…

aida64使用方法_AIDA64中的详细功能使用步骤介绍

你们知道AIDA64吗?很多的新用户不熟悉AIDA64是怎么使用的?在这里就为你们呈现了AIDA64的详细使用步骤介绍。 1、【使用AIDA64查看电脑简单信息】 打开计算机——系统概述,即可查看计算机的一些基本参数包括CPU ,主板,显卡,内存等(本次示例使用 雷神科技提供的高端游戏本—…

Matlab 会话(sessions)多开,运行多个程序

matlab R2012a 之后提供了会话多开功能,可以开多个会话,但是每个会话的占用内存都和原来一样多,运行前请先预留内存空间。 可以用这个功能建立服务机和客户机通信,调试程序等等。 本文中给出TCP 服务器和客户机通信示例。 1.找到…

Windows下64位驱动调试方法

尴尬的境地 囧 很多时候,我们写的驱动是64位的,而这种64位驱动是不可以在代码中加入_asm int 3 中断来实现在合适的地方进入中断。因为vs此时会报:error C4235: 使用了非标准扩展: 不支持在此结构上使用“_asm”关键字 。 而目标平台又要求一…

安装 arm nginx aarch64

网上搜了一大堆通过编译方式安装nginx的方法 其实nginx提供了 aarch64 版本的nginx http://nginx.org/en/linux_packages.html 2种系统安装方式yum、apt yum安装软件的选择 centos的方法 apt安装软件的选择 debain或者ubuntu的方法 有网络的机器,添加软件源地…

32位python和64位python区别_python32位和64位版本的区别是什么

python32位和64位版本的区别是什么 发布时间:2020-08-05 09:38:41 来源:亿速云 阅读:83 作者:清晨 小编给大家分享一下python32位和64位版本的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大…