Hadoop文件系统在模型和架构上的性能分析

2019-03-28 14:03|来源: 网络

通过对分布式文件系统和 Hadoop文件系统在模型和体系架构方面的分析,可以发现,HDFS在设计和实现时都充分考虑了海量数据在存储和管理等方面的需求,并最终获得了系统的高可扩展性、高可靠性和高性能,满足了云计算领域相关用户的需求。

随着网络技术的飞速发展,许多企业和团体通过数据存储服务提供商进行数据的存储、计算和交互。Hadoop是Apache基金会资助的开源项目,其文件系统HDFS具有的海量、高可扩展性、高可靠性、高性能等面向云计算领域应用的重要特征。文章通过在PC上安装HDFS,构建了分布式环境,通过实验证明了Hadoop文件系统在大数据量情况下的性能优势。

Hadoop文件系统(HDFS)是一个运行在普通的硬件之上的分布式文件系统,它和现有的分布式文件系统有着很多的相似性,然而和其他分布式文件系统的区别也是很明显的,HDFS是高容错性的,可以部署在低成本的硬件之上,HDFS提供高吞吐量应对应用程序数据访问,它适合大数据集的应用程序,HDFS放开一些POSIX的需求去实现流式地访问文件数据,HDFS开始是为开源的apache项目nutch的基础结构而创建,HDFS是Hadoop项目的一部分,而Hadoop又是lucene的一部分。HDFS在设计的时候就考虑到平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。本文对Hadoop文件系统进行深入的研究,分析其在不同数据量下的性能。

1、分布式文件系统模型

分布式文件系统是分布式系统的关键技术之一,能够以文件的方式实现信息资源的共享。在云计算环境中,分布式文件系统承担着为用户提供文件服务的重任,它要保证用户在访问、保存在云中的文件时能够获得接近甚至在某些方面超出其在使用本地磁盘时的服务质量(包括性能、可靠性等)。

分布式文件系统通过网络为用户提供远程文件服务,它的设计目标是要使得用户感知不到其访问的是存储在远程服务器中的文件。因此,分布式文件系统的设计特别强调系统对用户的透明性。满足用户的透明性需求对于分布式文件系统设计非常关键,直接影响了用户对远程文件的访问体验。除此以外,还有其他一些设计需求,包括分布式文件系统需要具有高可用性,能够支持异构客户端的并发访问,能够提供文件数据的多个拷贝并保证文件数据的一致性和安全性等。

针对这些需求,已经有数量众多的分布式文件系统被提出,它们在设计和实现上各具特点。为能够对这些文件系统进行分析和比较,提出了分布式文件系统的远程文件服务模型。该文件服务模型得到了学术界和产业界的广泛认同,主要由扁平文件(FlatFile)服务、目录服务和客户端模块3部分组成。其中,扁平文件服务实现对服务器磁盘上保存的文件内容的操作,负责创建、删除文件以及读写文件的内容和属性,为每个文件创建惟一的文件标识符供后续操作时引用;目录服务实现的是文件的文本名字与其对应标识符之间的映射,负责目录的创建、删除以及目录中文件的增删和查找,生成的目录也是以文件方式保存并由扁平文件服务负责管理;客户端模块则是运行在客户端上,负责封装对扁平文件服务和目录服务的访问,提供了从客户端本地文件系统的文件操作接口到远程服务器的相关功能调用的映射。扁平文件服务和目录服务向客户端模块提供高效、基于网络通信的调用接口,这些接口的功ttli够组成完备的文件操作集合。客户端模块将这些操作接口进一步封装,再以与常规的本地文件操作接口接近的方式提供给应用程序,尽量减少远程文件存放对用户应用程序执行造成的影响,实现透明化。

2、Hadoop文件系统分析

2.1 Hadoop文件系统架构

HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成,如图1所示。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block至l具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。Namenode矛lDatanode都是设计成可以跑在普通的、廉价的、运行Linux的机器上。HDFS采用java语言开发,因此可以部署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode节点,集群中的其他机器各跑一个Datanode实例。这个架构并不排除一台机器上跑多个Datanode,不过这比较少见。

\

HDFS支持传统的层次型文件组织,与大多数其他文件系统类似,用户可以创建目录,并在其问创建、删除、移动和重命名文件。HDFS不支持userquotas和访问权限,也不支持链接(link),不过当前的架构并不排除实现这些特性。Namenode维护文件系统的namespace,任何对文件系统namespace和文件属性的修改都将被NamenodeiE,录下来。应用可以设置HDFS保存的文件的副本数目,文件副本的数目称为文件的replication因子,这个信息也是由Namenode保存。

相关问答

更多
  • mkdir Usage: hadoop fs -mkdir [-p] Takes path uri’s as argument and creates directories. Options: The -p option behavior is much like Unix mkdir -p, creating parent directories along the path. Example: hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2 h ...
  • 您可能想要添加: 安全 如何管理对系统的访问? 使用什么过程? 它是如何在技术上实施的? 审计 您有什么审核要求? 是否记录了系统的所有更改? 报告 需要哪些报告? 如何控制对这些报告的访问? When it comes to reviewing banking systems and similar piece of software systems I have found it a valuable resource to have some kind of research institute to ...
  • 不,您无法动态更改每个节点的每个作业的MapReduce参数。 配置节点集 相反,您可以做的是在配置文件(通常位于/etc/hadoop/conf )中静态更改每个节点的配置参数,以便您可以使用不同的h / w配置充分利用群集。 示例:假设您有20个具有不同硬件配置的工作节点,例如: 10配置128GB RAM,24个核心 10配置64GB RAM,12个核心 在这种情况下,您可能希望配置每个相同的服务器以充分利用硬件,例如,您希望在具有更多RAM和内核的工作节点上运行更多子任务(映射器和缩减器),例如: ...
  • Hadoop有asm 3.2而我使用的是ASM 5.在ASM5中,ClassVisitor是一个超类,而在3.2中它是一个接口。 出于某种原因,错误是Throwable(信任Shevek),catch块只捕获异常。 任何hadoop日志都没有捕获throwable错误。 因此,调试非常困难。 使用jar jar链接修复asm版本问题,现在一切正常。 如果你正在使用Hadoop并且某些东西不起作用并且没有日志显示任何错误,那么请尝试抓住Throwable。 阿伦 Hadoop had asm 3.2 and ...
  • man time告诉,用户时间是你的程序在CPU和系统时间上花费的时间是内核执行权限操作所花费的时间,例如I / O调用read ,代表程序write 。 因此,与其他机器相比,机器A User + System时间较小,从而在所有三台机器中获得最佳性能。 经过的时间是由挂钟测量的时间,即从产生的过程测量的时间,它终止。 虽然它与CPU使用无关。 man time tells, user time is how long your program spent on CPU and System time i ...
  • 您可以从mapred-site.xml文件中删除fs.default.name值 - 这应该只在core-site.xml文件中。 如果要在本地文件系统上以伪模式运行,通常通过在所谓的本地模式下运行来实现 - 通过将core-site.xml中的fs.default.name值设置为file:///(您目前已将其配置为hdfs:// localhost:54310)。 您看到的堆栈跟踪是辅助名称节点启动时 - 在“本地模式”下运行时不需要这样,因为没有用于2NN的fsimage或编辑文件。 修复core-s ...
  • 如果您编写如上所述的命令,该文件将被复制到用户的HDFS主目录,即/ home / username 。 另请参见: HDFS主目录 。 如果要将文件写入其他位置,则可以像在Linux文件系统中一样使用绝对路径名(以“/”开头)。 If you write the command like above, the file gets copied to your user's HDFS home directory, which is /home/username. See also here: HDFS H ...
  • 如果找不到有效的hadoop配置,则会发生这种情况。 例如,如果你这样做: hadoop fs -ls 并且在默认位置没有找到配置,那么你将看到linux文件系统。 您可以通过在“hadoop”命令之后添加-conf选项来测试它,例如 hadoop -conf= fs -ls This will happen if a valid hadoop configuration is not found. e.g. if you do: hadoop fs -ls a ...