云计算学习笔记Hadoop+HDFS和MapReduce+架构浅析 34 IT168文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云计算学习笔记Hadoop+HDFS和MapReduce+架构浅析 34
IT168文
云计算学习笔记hadoop+hdfs和mapreduce+架构浅析-34-it168文
hadoophdfs和mapreduce架构浅析
前言
hadoop是一个基于java的分布式密集数据处理和数据分析的软件框架。

hadoop在很
大程度上是受google在2021年白皮书中阐述的mapreduce技术的启发。

mapreduce工作
原理是将任务分解为成百上千个小任务,然后发送到计算机集群中。

每台计算机再传送自
己那部分信息,mapreduce则迅速整合这些反馈并形成答案。

简单来说,就是任务的分解
和结果的合成。

hadoop的扩展性非常杰出,hadoop可以处置原产在数以千计的低成本x86服务器排
序节点中的大型数据。

这种高容量低成本的女团引人注目,但hadoop最迎合人的就是其
处置混合数据类型的能力。

hadoop可以管理结构化数据,以及诸如服务器日志文件和web
页面上涌的数据。

同时还可以管理以非结构化文本为中心的数据,如facebook和twitter。

1hadoop基本架构
hadoop并不仅仅是一个用于存储的分布式文件系统,而是在由通用计算设备组成的大型集群上执行分布式应用的框架。

apachehadoop项目中包含了下列产品(见图1)。

图1hadoop基本共同组成
pig和hive是hadoop的两个解决方案,使得在hadoop上的编程更加容易,编程人员不再需要直接使用javaapis。

pig可加载数据、转换数据格式以及存储最终结果等一系列
过程,从而优化mapreduce运算。

hive在hadoop中饰演数据仓库的角色。

hive需向hdfs嵌入数据,并容许采用相似
sql的语言展开数据查阅。

chukwa就是基于hadoop集群的监控系统,直观来说就是一个watchdog。

hbase就是一个面向列于的分布式存储系统,用作在hadoop中积极支持大型稠密表的列存储数据环境。

mapreduce用作超大型数据集的循序运算。

hdfs可以积极支持千
万级的大型分布式文件系统。

zookeeper提供更多分布式应用程序的协同服务,积极支持
的功能包含布局保护、名字服务、分布式同步、组服务等。

avro就是一个数据序列化系统,用作积极支持大批量数据交换的应用领域。

hadoop主要由hdfs和mapreduce引擎两部分组成。

最底层是hdfs,它存储hadoop
集群中所有存储节点上的文件,hdfs的上一层是mapreduce引擎,该引擎由jobtracker
和tasktrackers组成。

2hdfs浅析
管理网络中横跨多台计算机存储的文件系统称作分布式文件系统。

hdfs以流式数据出访模式去存储多功能文件,运转于商用硬件集群上。

hdfs的构建思路是这样的:一次写入、多次读取是最高效的访问模式。

数据集通常由数据源生成或从数据源复制而来,接着长时间在此数据集上进行各类分析。

每次分析会涉
及该数据集的大部分数据甚至全部,因此读取整个数据集的时间延迟比读取第一条记录的
时间延迟更重要。

所谓商用硬件,hadoop并不需要运转在高昂且低可信的硬件上。

对于巨大的集群来说,节点故障的几率还是非常低的。

hdfs被设计变成在碰到故障时能稳步运转且不想用户察觉到显著的中断。

同时,商用硬件并非低端硬件。

低端机器故障率远高于更高昂的机器。


用户管理几十台、上百台,甚至几千台机器时,昂贵的零部件故障率更高,引致保护成本
更高。

hdfs是为高数据吞吐量应用优化的,这可能会以高时间延迟为代价。

目前,对于低延迟的数据访问需求,hbase是更好的选择。

2.1数据块
每个磁盘都存有预设的数据块大小,这就是磁盘展开数据念/写下的最轻单位。

hdfs
同样也存有块的概念,预设为64mb(很多情况下采用128mb)。

hdfs上文件也被分割为多个分块做为单一制的存储单元。

hdfs的块比磁盘块(通常为512字节)小很多,其目的就是为了最小化串行开支。

但是该参数也不能设置得过小,mapreduce中的map任务通常一
次处置一个块中的数据,因此如果tasks太少(多于集群中的节点数量),job的运转速
度就可以比较慢。

2.2namenode和datanode
hdfs集群有两类节点,并分别以管理者(nameno?de)、工作者(datanode)模式运行。

namenode管理文件系统的命名空间,它保护着文件系统樟叶整棵树内所有的文件和目录。

这些信息以2个文件(命名空间镜像文件和编辑日志文件)的形式永久留存在本地磁
盘上。

namenode也记录着每个文件中各个块所在的datanode信息,但它并不永久留存块
的边线信息,因为这些信息可以在系统启动时由datanode扩建。

同时,namenode也负责
管理掌控外部client的出访。

datanode是文件系统的工作节点。

它们根据需要存储并检索数据块(受客户端或namenode调度),响应创建、删除和复制数据块的命令,并且定期向nameno?de发送所存储数据块列表的“心跳”信息。

hdfs内部的所有通信都基于标准的tcp/ip协议。

namenode获取每个datanode的心跳信息,namenode据此验证块映射和文件系统元数据。

图2示出的是namenode和datanode。

图2namenode和datanode
文件写入时的步骤为:
a)client向namenode发动文件载入的命令。

b)namenode根据文件大小和文件块配置情况,将它管理的datanode节点的信息返回给client。

c)client将文件划分为多个块,根据datanode的地址信息,按顺序写入到
每一个datanode块中。

文件读取时的步骤为:
a)client向namenode发动文件加载的命令。

b)namenode回到存储文件的datanode 的信息。

c)client加载文件信息。

作为文件系统的管理员,没有namenode,文件系统将无法使用。

如果运行namenode
服务的机器毁坏,文件系统上所有的文件将会丢失,且不知道如何根据datanode的数据
块来重建文件。

hadoop为此提供了2种机制对namenode实现冗余备份。

图3约氏的就是缓存namenode。

图3冗余namenode
一种机制就是备份留存文件系统元数据的文件。

通常布局就是:将文件系统元数据载
入本地磁盘的同时,载入一个远程装载的网络文件系统(nfs)。

另一种机制是运行一个辅助的namenode,但它不能被用作namenode。

辅助的namenode通过编辑日志定期合并命名空间镜像。

辅助namenode一般在另一台单独的物理
计算机上运行,因为它需要占用大量cpu时间和与namenode相同容量的内存来执行合并
操作。

它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。

但是,辅助namenode留存的状态总是落后于主节点,通常情况融合2种机制。

主namenode故障时,把存储在nfs上的namenode元数据导入到辅助namenode上,并将其做为代莱主namenode运转。

2.3命令行USB
hdfs的文件和目录有与posix相似的权限模式,通常是三类权限模式(rwx)。

集群
管理员可以通过命令行接口与hdfs交互,执行所有常见的文件系统操作,如创建目录、
移动文件、删除数据、列出目录等等。

hdfs并不是一个unix文件系统,不支持像ls和
cp这种标准的unix文件命令。

hadoop提供了一套与linux文件命令类似的命令行工具,
通过shell命令操作文件和目录。

hadoop也提供更多操作方式hdfs文件和目录的java库,用作以编程方式出访hdfs。

一般情况下,由mapreduce框架读取hdfs文件和处理数据单元。

除非需要定制数据
的导入和导出,否则几乎不必编程来读写hdfs文件。

3hadoopmapreduce浅析
最简单的mapreduce应用程序至少涵盖3个部分:一个map函数、一个reduce函数
和一个main函数。

main函数将作业控制和文件输出/输入融合出来。

在这点上,hadoop
提供更多了大量的USB和抽象类,从而为hadoop应用程序开发人员提供更多许多工具,
可以用作调试和性能度量等。

mapreduce本身就是用于并行处理大数据的软件框架。

mapreduce的根源是函数性编程中的map函数和reduce函数。

它由2个可能包含许多事例(许多map和reduce)的操作组成。

map函数接受一组数据并将其转换为一个键/值对列表,输
入域中的每个元素对应一个键/值对。

reduce函数拒绝接受map函数分解成的列表,然后根据它们的键(为每个键分解成一个键/值对)增大键/值对列表。

可以在每个域上继续执行map函数和reduce函数,然后将输入的键/值对列表输出至另一个reduce函数,就可以获得与前面一样的结果。

换句话说,可以在输出域循序采用相同的操作方式,获得的结果就是一样的,但速度更慢。

mapreduce的循序功能可以在任一数量的系统上采用。

图4约氏的就是mapreduce思想。

3.1jobtracker和tasktracker
hadoopmapreduce引擎由jobtracker和task?tracker组成。

图5示出的是hadoop的结构。

jobtracker负责管理调度所有作业,它就是整个系统分配任务的核心。

与hdfs的namenode相似,job?tracker也就是唯一的。

它就是hadoop集群中唯一负责管理掌控mapreduce应用程序的系统,在应用程序递交之后,将提供更多涵盖在hdfs中的输出和输入目录,jobtracker采用文件块信息(物理量和边线)确认如何建立其他tasktracker依附于任务,mapreduce应用程序被导入到每个发生文件块的节点,为特定节点上的每个文件块建立一个唯一的依附于任务。

图4mapreduce思想。

相关文档
最新文档