`
younglibin
  • 浏览: 1214083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop在文件分片blocksize

 
阅读更多

hadoop在文件的split中使用到了一个 变量 是   blocksize,这个值  默认配置 是 64M  ,1.0的代码 给的默认值是32M ,这个值我们先不要纠缠 他 到底是多少,因为这个值是可配置的,而且已经给了默认配置64M ,只有我们不配置的时候才会使用32M ,且在官方文档上2.0已经是64M。

那么为什么这个大小是64M ,记得在jvm的一片论文中提到这个大小是64M ,

 

我们在使用linux的时候,linux系统也有块的大小,我们一般是哟功能的4096   也就是4K ,

 

[root@cluster-19 workspace]# du -sk
272032  .
[root@cluster-19 workspace]# vi 1
[root@cluster-19 workspace]# du -sk
272036  .
[root@cluster-19 workspace]# ls -la 1
-rw-r--r--. 1 root root 2 8月  27 14:56 1

 以上代码可以看到,我们 使用du命令  时    看到 1 这个文件占用了一个 块  的空间,由于一个块的空间是 4096 (4K) 所有我们创建1这个文件之后  我们看到磁盘空间 增加了 4K  , 但是我们在使用ls 查看 1 这个文件的时候,我么看到 这里 文件的大小是 2 个字节。

其实我们使用ls 看到的只是文件的meta信息。

 

那么在hdfs中呢,前边已经说过块的大小是64M ,

我们做个假设  如果  1T 的盘 ,我们上传 小文件到 hdfs   ,那么我们是不是只能上传1632个小文件,这个和我们预期远远不相符,hadoop确实是处理大文件有优势,但是也有处理小文件的能力,那就是在shuffle阶段会有合并的,且map的个数和块的数量有关系,如果块很小,那其不是有很多块 也就是很多map了

所以 hdfs中的块,会被充分利用,如果一个文件的大小小于这个块的话那么这个文件 不会占据整个块空间:

 

hdfs 的块 如此之大 主要还是为 减小寻址开销的 :

 

一用hadoop权威指南一句话:

HDFS的块比磁盘块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间可以明显大于定位这个块开始位置所需的时间。这样,传输一个由多个块组成的文件的时间取决于磁盘传输速率。


我们来做一个速算,如果寻址时间为10ms左右,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们需要设置块大小为100MB左右。而默认的块大小实际为64MB,但是很多情况下HDFS使用128MB的块设置。以后随着新一代磁盘驱动器传输速率的提升,块的大小将被设置得更大。


但是该参数也不会设置得过大。MapReduce中的map任务通常一次处理一个块中的数据,因此如果任务数太少(少于集群中的节点数量),作业的运行速度就会比较慢。

 

我们都知道 ,hdfs 的文件是不允许修改的,目前的hadoop2.0 持支 对一个文件做append操作,那么就遇到另一个问题,

假如现在有一个两个文件  放在同一个block中的话:



 

 

如上图,如果原始文件是这样字存在的话 ,那么我如果对File1 做 append操作的花,那么hdfs会怎么处理呢?

我们知道在文件的namenode信息中记录了文件的信息,我们对hadoop做了appdend之后,一个文件只会记录一个文件信息,不可能一个文件记录在多个文件块中,那么 hdfs是会将File1 原来的文件取出来,和我们将要appdend的内容放在一起重新存储文件呢?还是在文件的meta信息中维护了这个文件的两个地址呢?

 

待查询?

 

希望高手指教...........................

  • 大小: 26.8 KB
分享到:
评论

相关推荐

    Hadoop的block Size和split Size究竟是什么关系-safari1

    在Hadoop生态系统中,Block Size和Split Size是两个关键的概念,它们在数据处理流程中扮演着重要的角色。这里我们将详细探讨这两个概念之间的关系及其在MapReduce框架中的应用。 首先,Block Size是Hadoop分布式...

    大数据(hadoop)竞赛练习题

    MapReduce 会根据文件大小自动调整输入分片。 14. 对于 LZO(带索引)压缩的文件,即使文件大小为 75MB,客户端设置 Block 大小为 64MB,MapReduce 任务的 input split 大小可能仍会拆分为两个部分,即一个 map ...

    hadoop-2.0.4官方源代码

    2. **HDFS(Hadoop Distributed File System)增强**:HDFS在这一版本中进行了优化,如支持大块(Block Size)配置,提升了存储效率;增加了HDFS Federation,允许多个NameNode并行运行,提高了系统的可伸缩性和可用...

    hadoop2.7 官方文档(英文)

    4. **Block Size调整**:Hadoop 2.7允许用户自定义Block大小,以适应不同大小的数据集和应用需求。 5. **Container化执行**:MapReduce作业现在在YARN的容器中运行,这使得Hadoop能与其他大数据处理框架(如Spark)...

    hadoop经典系列(十一)性能分析实验初步

    - **InputSplit大小**:调整输入分片大小,以适应数据和硬件配置。 5. **HDFS优化**: - **Block Size**:根据数据大小和网络条件调整HDFS的块大小。 - **Replication Factor**:复制因子影响容错性和存储利用率...

    hadoop-2.0.5-alpha

    Map阶段将原始数据分片并进行局部处理,生成中间键值对;Reduce阶段则负责聚合Map阶段的结果,进一步处理数据并输出最终结果。这种模型使得数据处理任务能够并行化执行,极大地提高了处理效率。 在Hadoop 2.0.5-...

    基于Hadoop的产品大数据分布式存储优化.zip

    1. **数据分片策略**:根据数据的访问模式和业务需求,可以采用不同的分片策略,如热点数据集中存放,冷数据分散存储,以提高访问效率。 2. **副本策略**:通过调整数据块的副本数量,可以在容错性和存储成本之间...

    行业分类-设备装置-基于Hadoop平台的网络数据并行处理系统设计与实现.zip

    8. 性能优化:通过调整Hadoop参数,如Block Size、Replication Factor等,以及使用更高效的编程模型(如YARN、Tez),可以进一步提升系统的处理性能。 9. 安全与隐私:在处理敏感的网络数据时,需要考虑数据的安全...

    大数据技术Hadoop面试题,看看你能答对多少?(3).docx

    13. InputSplit并不等同于Block,InputSplit是逻辑上的分片,可能由一个或多个Block组成。 14. NameNode的WebUI默认端口是50070,而不是50030。 15. `HADOOP_HEAPSIZE`环境变量用于设置所有Hadoop守护进程的总内存...

    Hadoop分布式系统基础架构 v3.3.0-源码.zip

    1. **Mapper和Reducer**:这两个核心组件的实现细节,包括输入输出格式、分片逻辑以及 Shuffle 阶段的数据排序。 2. **DataNode 和 NameNode**:HDFS中的这两个角色如何协同工作,确保数据的存储和检索。 3. **...

    大数据核心技术A卷.doc

    - Region是HBase的基本存储和分片单元,包含StoreFile和MemStore等组件,BlockCache用于缓存数据以提高访问效率,但普通的数据块并不一定都能放入BlockCache中提高效率。 以上内容涵盖了大数据核心技术中的Hadoop ...

    大数据平台构建与开发考核.pdf

    2. **HDFS Block Size**:默认的HDFS块大小是128MB,这影响数据的分片和存储效率。 3. **集群性能瓶颈**:在大数据集群中,最常见的性能瓶颈通常是磁盘I/O,而非CPU、网络或内存。 4. **SecondaryNameNode**:它并...

    3-7+快手EB级HDFS挑战与实践.pdf

    6. **架构创新**:为了应对EB级挑战,可能涉及到HDFS的架构改进,如引入新的数据分片策略、优化NameNode内存管理,甚至开发新的文件系统层来提高效率。 7. **数据分析与处理**:在HDFS上进行大数据分析,需要考虑...

    大数据各类性能调优

    分片策略应考虑到查询负载分布、数据更新频率等因素。 ##### 12.8.2 Solr公共读写调优建议 - 优化Solr的读写性能可以通过调整以下配置来实现: - 增加缓存大小。 - 优化索引更新策略。 ##### 12.8.3 Solr over ...

Global site tag (gtag.js) - Google Analytics