`

大数据的储存:百度HDFS集群的数据压缩

 
阅读更多

2012年4月13日,由IT168(ITPUB、IXPUB、ChinaUnix)主办的2012中国数据库技术大会(DTCC)在北京隆重召开。大会第三天,百度基础架构部高级工程师孙桂林发表了主题为“百度HDFS集群的数据压缩”的演讲。

  当前,数字信息急剧膨胀。根据IDC的研究结果,2011年创造的信息数量达到1800EB,每年产生的数字信息量还在以60%的速度高速增长,到2020年,全球每年产生的数字信息将达到35ZB。面对海量数据处理的需求,“大数据”这一新的概念应运而生。关于大数据的定义,目前还没有标准的说法。

  Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。HDFS开始是为开源的apache项目nutch的基础结构而创建,HDFS是hadoop项目的一部分,而hadoop又是lucene的一部分。

  HDFS设计的针对对象主要适合流式访问的超大文件、在使用便宜的硬件搭建的集群上运行。HDFS中Block的大小默认是64M,小于块大小的的文件并不占据整个块的全部空间(一个块可能存有多个文件)。

  在谈到为什么使用百度HDFS集群的数据压缩时,孙桂林表示,在存储上带来了灵活的可扩展性、高可用性、充分提高了存储空间利用率。

  使用Blocks的好处

  1) 可以存储大文件,一个文件的大小可以大于任何一个单块硬盘的容量

  2) 把存储单元抽象成块而不是文件,简化了存储子系统:简化了数据管理、取消元数据关注

  3) 能很好适应数据复制,数据复制保证系统的容错和可用性。

  HDFS提供了两种namenode的容错机制:

  1) 备份存储持久化状态的文件系统元数据的文件

  2) 提供secondary namenode。Secondary的主要角色是合并namespace image和edit log,防止edit log过大。但是secondary namenode的数据较master namenode的数据有所延迟,所有数据恢复以后肯定会有数据丢失。

  一般来讲,冷数据和老数据经常会被压缩,块压缩相对于文件压缩的优势在于三方面。第一,透明性,客户端不需要知道压缩的存在,也不需要知道升级。第二,灵活性,对实际压缩的算法没有限制。第三,本地性,不需要在跨数据节点的压缩操作。

  百度HDFS集群的数据压缩

  提到异步压缩时,孙桂林表示,一个集群能从未压缩的状态变成压缩状态最多花费十天,如果压缩的数据很繁琐,我们可以通过处理器来减轻CPU的负载。

 

  存储压缩的机制

  DataNode数据已经压缩了,Client可能不知道,DataNode 在响应Client的时候回将数据解压。

  Client 和DataNode之间可以通过压缩的机制。整个通信协议需要一些扩展,需要告诉写方,我们所需要压缩的文件格式以及什么样的编码。在写的操作上,存储编码和传输编码不一样,我们可以选择是否压缩储存和传输编码。在读的操作上,支持一些协议来进行转换。


 

  为了节省带宽,我们尽量避免DataNode 和DataNode之间重复压缩的问题。在Append之前我们需要解压最后的块,还是解压最后一兆数据。一旦文件被Append之后,表示这个文件的最后一个块不被压缩。在压缩的时候,首先我们需要选择压缩速率,相对而言解压的速度更为关键。我们的目标是要实现节省存储空间、避免压缩影响计算作业,实时压缩透明。

  如何处理小文件

  1、 把小文件变成大文件(归档操作)

  2、 把相同目录下的小文件合成一个大文件。数据块的大小可以达到一个数量级,可以做压缩处理。

  不同的集群,压缩比部太一样,压缩比介于10%到50%之间,大部分的集群我们都可以获取50%以上的空间收益。

  未来,我们主推的是后台异步压缩,等待CPU空闲的时候,我们才会开始压缩。压缩过程和压缩编码完全透明,我们可以采用分级压缩方法。对于冷数据,我们可以使用一些极致的压缩算法,尽量来节省空间。通过一些归档操作,我们可以节省大量的磁盘空间。

  很多时候,我们A模块的输出数据刚好是B模块的输入,我们可以提供一个块共享的Quota Calculating ,我们可以通过块共享的机制使用快速拷贝。

  一个文件如果存在的时候,对于一些重复的块文件该怎么处理,这将是我们未来的发展方向。

分享到:
评论

相关推荐

    35套选择题目:大数据架构、高性能、数据治理题目.docx

    - **交付范围**:数据团队在对外交付数据时,通常需要提供元数据含义、数据生成逻辑以及数据产生周期等信息。而大数据性能调优参数并不是数据交付的基本组成部分。 #### 分布式系统ID生成 - **ID生成要求**:分布式...

    HDFS的透明压缩存储.pdf

    当前,百度正在推进一项名为“透明压缩”的项目,其核心目标是实现数据的高效压缩与存储,同时确保对用户而言完全透明,即不影响数据的读写性能和作业计算效率。为达成这一目标,透明压缩技术需解决多个关键技术难题...

    大数据面试一:hadoop

    在大数据领域,Hadoop是一...HDFS集群架构包括NameNode和DataNode,NameNode管理文件系统的元数据,而DataNodes负责存储数据并执行数据读写操作。整个架构设计旨在提供高可用性和容错性,确保大数据处理的高效和可靠。

    大数据开发的技巧总结以及入门教程知识点总结.docx

    数据压缩:熟悉Snappy、Gzip等数据压缩算法,在存储和传输中节省空间。 数据安全:实施数据加密、访问控制、隐私保护等安全措施。 数据分析:具备基本的数据挖掘和统计学知识,会使用Mahout、MLlib等机器学习库。 ...

    大数据项目集群

    【大数据项目集群】是当前IT领域中的热点话题,尤其在数据驱动决策的现代商业环境中,大数据处理能力成为了企业的核心竞争力之一。在这个项目集群中,我们关注的是如何有效地管理和分析海量数据,以挖掘其中的价值。...

    2021年超全超详细的最新大数据开发面试题及答案解析.pdf

    10. Shuffle阶段的数据压缩机制:Shuffle阶段使用数据压缩机制来减少数据传输量,常用的压缩算法包括Gzip、Snappy等。 YARN 11. YARN集群架构和工作原理:YARN集群包括ResourceManager、ApplicationMaster、...

    大数据HDFS文档

    - **定义**: HDFS(Hadoop Distributed File System)是一种分布式文件系统,旨在提供高效、可靠的数据存储解决方案,尤其适用于处理大规模数据集。 - **背景**: 基于Google发表的GFS(Google File System)论文,...

    大数据课程-Hadoop集群程序设计与开发-10.Sqoop数据迁移_lk_edit.pptx

    【大数据课程-Hadoop集群程序设计与开发-10.Sqoop数据迁移】是针对大数据领域的一门课程,主要讲解如何使用Sqoop工具进行数据在Hadoop集群与关系型数据库之间的迁移。Sqoop是一款由Apache开发的开源软件,专门用于...

    基于HDFS存储的FTP服务器.zip

    在大数据领域,分布式文件系统Hadoop Distributed File System(HDFS)是至关重要的组成部分,它为大规模数据处理提供了高效、可靠的存储解决方案。而将FTP(File Transfer Protocol)服务器与HDFS相结合,可以实现...

    通用大数据存储与分析处理平台_Hadoop.docx

    - **序列化**:数据转换成字节流的过程,便于在网络间传输或持久化存储。 - **序列化框架**:如Avro和Protocol Buffers,简化序列化操作。 - **MapReduce过程中的序列化与反序列化**:在MapReduce任务中数据的转换...

    《大数据平台搭建与配置管理》期中试卷及答案.docx

    "大数据平台搭建与配置管理知识点" 大数据平台搭建与配置管理是大数据处理的核心组件,涉及到大数据平台的搭建、配置管理、数据存储、...20. 大数据平台的优化技术:大数据平台的优化技术包括索引、缓存、数据压缩等。

    基于Hadoop的风力发电监测大数据存储优化及并行查询方法.docx

    - **数据压缩**:采用高效的压缩算法减少存储空间占用,同时保证压缩/解压的速度不影响系统的整体性能。 - **数据冗余**:通过对关键数据进行冗余存储,提高数据的可靠性和安全性。 **3.3 数据压缩与索引技术** - ...

    flume所需要的hdfs包.zip

    总的来说,"flume所需要的hdfs包.zip" 提供了将 Flume 与 HDFS 集成所需的关键组件,使得用户能够高效地将实时数据流存入 Hadoop 集群,从而充分利用 Hadoop 的大数据处理能力。在使用这个压缩包时,用户需要按照...

    清华大学精品大数据课程PPT课件(39页) 第4章 大数据的存储.rar

    HDFS将大数据文件分割成多个块,并在集群的不同节点上进行冗余存储,以确保高可用性和容错性。这种设计使得大数据能够快速并行处理,提高整体处理速度。 2. NoSQL数据库:面对非结构化和半结构化数据,关系型数据库...

    HDFS scalability:the limits to growth

    本文通过分析大规模HDFS集群的实际部署经验,探讨了单节点命名服务器所占用的RAM与其能支持的存储容量之间的关系,并概述了这种架构下HDFS扩展性的实际限制。 #### 存储容量与RAM的关系 - **RAM需求与存储容量**:...

    大数据高频面试题.docx

    - LZO压缩:一种高效的压缩算法,常用于Hadoop数据压缩,提高存储效率。 - Hadoop参数调优:通过对配置参数的调整,改善系统性能和稳定性。 - 基准测试:通过模拟真实负载进行性能测试,找出瓶颈并优化。 - 宕机处理...

    HDFS用户指南中文版

    - **数据压缩**:对于文本文件等可压缩的数据,可以采用Gzip、Snappy等压缩算法,在不影响数据读取效率的前提下减小存储空间占用。 - **动态调整复制因子**:根据数据的重要程度和访问频率动态调整数据块的复制...

    hadoop大数据技术原理与应用ppt

    【Hadoop大数据技术原理与应用】是现代大数据处理的核心框架之一,它由Apache软件基金会开发,主要用于处理和存储海量数据。Hadoop的出现解决了传统单机系统无法应对的大量非结构化和半结构化数据的问题,它以分布式...

    hdfs的jar包.zip

    1. 分布式存储:HDFS将大文件分割成块(默认为128MB或256MB),并将这些块复制到集群的不同节点上,以提高数据的容错性和可用性。通常,每个数据块会有三个副本。 2. NameNode与DataNode:NameNode是HDFS的元数据...

    龙白滔:金融投资大数据实践分享

    此外,还介绍了大数据存储技术如HDFS的历史数据存储、Cassandra分布式集群的水平扩展性和查询性能等。 金融大数据分析和挖掘部分,龙博士展示了金融大数据在实践中的应用,包括新闻/报告、社交媒体、公司数据、宏观...

Global site tag (gtag.js) - Google Analytics