hdfs重新梳理

1.hdfs中的块为什么这么大?

  电脑磁盘都有默认的数据块大小,这是磁盘进行读写的最小单位。

  hdfs同样也有块的概念,默认是128MB。

  hdfs存储的数据是密集型的,例如一个块里面的数据只有1M不会占用一个块的大小。hdfs块比磁盘块大是为了最小化的寻址时间开销,如果块足够大,磁盘的寻址时间明显小于磁盘的传输时间。因而传输一个由多个块组成的大文件取决于磁盘的传输时间。

  例如:磁盘的寻址时间是10ms,传输速率为100MB/S,为了使寻址时间占用传输时间的1%,那么一个块的大小是100MB.

  块大小的设置可以根据情况适当调试。因为mapReduce中的map任务通常一次只处理一个块的大小。如果块太大会导致map的任务数太少(少于集群中节点的数量)作业运行速度就会很慢。

2.HDFS块缓存

通常datanode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显式地缓存在datanode的内存中,以堆外块缓存(off-heap block cache)的形式存在。默认情况下,一个块缓存在一个datanode的内存中,当然可以调整每个文件配置的数量。

作业调度器(用于MapReduce、Spark和其他框架)通过在缓存块的datanode上运行任务,可以利用块缓存的优势提高读操作的性能。例如,连接操作中使用的一个小的查询表就是块缓存的一个很好的候选。

  参考:http://www.cnblogs.com/zhangningbo/p/4146398.html

  设置hdfs块缓存的配置项:

<property>
  <name>dfs.datanode.max.locked.memory</name>
  <value>0</value>
  <description>
    The amount of memory in bytes to use for caching of block replicas in
    memory on the datanode. The datanode's maximum locked memory soft ulimit
    (RLIMIT_MEMLOCK) must be set to at least this value, else the datanode
    will abort on startup.

    By default, this parameter is set to 0, which disables in-memory caching.

    If the native libraries are not available to the DataNode, this
    configuration has no effect.


    用于在datanode上的内存中缓存块副本的内存量(以字节为单位)。datanode的最大锁定内存软ulimit 
   (RLIMIT_MEMLOCK)必须至少设置为此值,否则datanode将在启动时中止。


    默认情况下,此参数设置为0,这将禁用内存中的缓存。

    如果本机库对DataNode不可用,则配置不起作用。
  </description>
</property>

3.联邦HDFS

namenode在内存中保存着文件系统中每个文件和每个数据块的引用关系,这对于一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈。在2.X发行版本系列中引入的联邦HDFS允许通过添加namenode实现扩展,其中每个namenode管理文件系统命名空间中的一部分。例如,一个namenode可能管理/user目录下的所有文件,而另一个namenode可能管理/share目录下的文件。

在联邦环境下,每个namenode维护一个命名空间卷(namespace volume),由命名空间的元数据和一个数据块池(block pool),数据块池包含该命名空间下文件的所有数据块。命名空间卷之间是相互独立的,它们之间不互相通信,甚至其中一个namenode的失效也不会影响由其他namenode维护的命名空间的可用性。数据块池不再进行切分,因此集群中的datanode需要注册到每个namenode,并且存储着来自多个数据块池中的数据块。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值