【文档说明】Hadoop大数据开发实战-第03章-访问HDFS课件.pptx,共(31)页,1.858 MB,由我爱分享上传
转载请保留链接:https://www.ichengzhen.cn/view-10455.html
以下为本文档部分文字说明:
访问HDFS目录HDFS核心设计0102HDFS分布式文件系统03HDFS体系结构HDFS简介▪HDFS:HadoopDistributedFileSystem一个分布式文件系统基于流数据模式访问和
处理超大文件的需求而开发的适合应用在大规模数据集上HDFS简介▪优点处理超大文件能用来存储管理PB级的数据1PB=1024TB处理非结构化数据流式的访问数据一次写入、多次读取运行于廉价的商用机器集
群上可运行在低廉的商用硬件集群上故障时能继续运行且不让用户察觉到明显的中断HDFS简介▪局限性不适合处理低延迟数据访问HDFS是为了处理大型数据集分析任务的,主要是为了达到高的数据吞吐量而设计的对于低延时的访问需求,HBase是
更好的选择无法高效存储大量的小文件小文件会给Hadoop的扩展性和性能带来严重问题利用SequenceFile、MapFile等方式归档小文件不支持多用户写入及任意修改文件只有一个写入者,只能执行追加操作不支持多个用
户对同一文件的写操作,以及在文件任意位置进行修改HDFS特性▪高容错,可扩展性及可配置性强▪跨平台▪shell命令接口▪机架感知功能▪负载均衡▪Web界面HDFS目标▪检测和快速恢复硬件故障故障的检测和快速自动恢复是HDFS的一个核心目标▪流式数据访问设计成适合进行批量处理重视数据吞吐
量,而不是数据访问的反应速度▪大规模数据集支持大文件存储一个单一的HDFS实例能支撑数以千万计的文件▪简化一致性模型对文件实行一次性写入,多次读取的访问模式HDFS目标▪移动计算代价比移动数据代价低一个应用请求的计算,离它操作
的数据越近就越高效,这在数据达到海量级别的时候更是如此▪可移植性HDFS在设计时就考虑到平台的可移植性,这种特性方便了HDFS作为大规模数据应用平台的推广▪通信协议所有的通信协议都是在TCP/IP协议之上的HDFS核心设计▪数据块(Block)数据块是HDFS上最基本的存储单位HDFS
块默认大小为128M小于一个块大小的文件不会占据整个块的空间hadoopfsck/sogou.500w.utf8-files-locations-blocks对块进行抽象会带来的好处一个文件的大小可以大于网络中任意一个磁盘的容量
使用块抽象而不是文件可以简化存储子系统块非常适合用于数据备份进而提供数据容错能力和可用性HDFS核心设计▪数据块复制HDFS为了做到可靠性(reliability)创建了多份数据块(计算节点中(computedatablocks)的复
制(replicas),并将它们放置在服务器群的nodes),MapReduce就可以在它们所在的节点上处理这些数据了。HDFS将每个文件存储成块(Block)序列每个文件的Block大小和复制(Replication)因子都是可配置的hdfs-site.xm
lHDFS核心设计▪数据副本的存放策略数据分块存储和副本的存放,是保证可靠性和高性能的关键将每个文件的数据进行分块存储每一个数据块又保存有多个副本这些数据块副本分布在不同的机器节点上HDFS核心设计▪数据副本的
存放策略在多数情况下,HDFS默认的副本系数是3Hadoop默认对3个副本的存放策略第一块:在本机器的HDFS目录下存储一个Block第二块:不同Rack(机架)的某个DataNode上存储一个Block第三块:在该机器的同一个Rack下的某台
机器上存储最后一个Block更能多副本:随机节点副本存放策略Rack1Rack2NNmeta->f.oobarblk1,blk2,blk3,blk4,blk5DN1blk1,blk2,blk3,blk5DN2blk1,blk4,blk5DN3DN4DN5blk2,b
lk3,blk5blk1,blk3,blk4blk2,blk4HDFS核心设计▪设置集群Block的备份数方法一:配置文件hdfs-site.xml方法二:通过命令修改备份数bin/hadoopfs-setrep-R1/<property
><name>dfs.replication</name><value>1</value></property>注意:方法二可以改变整个HDFS里面的备份数,不需要重启HDFS系统,而方法一需要重启H
DFS系统才能生效。HDFS核心设计▪安全模式(SafeMode)安全模式是Hadoop集群的一种保护模式NameNode在启动时会自动进入安全模式,也可以手动进入。当系统处于安全模式时,会检查数据块的完整性。用命令来操作安全模式hadoopdfsadmi
n-safemodeleave//强制NameNode退出安全模式hadoopdfsadmin-safemodeenter//进入安全模式hadoopdfsadmin-safemodeget//查看安全
模式状态hadoopdfsadmin-safemodewait//等待,一直到安全模式结束HDFS核心设计▪负载均衡机器与机器之间磁盘利用率不平衡是HDFS集群非常容易出现的情况尤其是在DataNode节点出现故障或在现有的集群上增添新的DataNode的时候分析数据块分
布和重新均衡DataNode上的数据分布的工具$HADOOP_HOME/bin/start-balancer.sh-t10%HDFS核心设计▪负载均衡负载均衡程序作为一个与独立的进程NameNode进程分开执行▪心跳机制HD
FS核心设计▪机架感知大型Hadoop集群是以机架的形式来组织的同一个机架上不同节点间的网络状况比不同机架之间的更为理想默认情况下,Hadoop的机架感知是没有被启用的启用机架感知功能,在NameNode所在机器的core-site.xml中
配置一个选项:<property><name>topology.script.file.name</name><value>/path/to/script</value><!—value的值是一个脚本--></property>HDFS体系结
构▪Master/Slave架构HDFS体系结构▪文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)▪NameNode是主节点,存储文件的元数据如文件名,文件目录结构
,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等▪DataNode在本地文件系统存储文件块数据,以及块数据的校验主要组件的功能NameNodeDataNode•存储元数据•存储文件内容•元数
据保存在内存中•文件内容保存在磁盘•保存文件,block,datanode之间的映射关系•维护了blockid到datanode本地文件的映射关系主要组件的功能▪NameNodeNamenode是一个中心服务器,单一节点,负责管理文件系统的
名字空间(namespace)以及客户端对文件的访问文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,数据流不经过NameNode,只会询问它跟那个DataNode联系主要组件的功能▪NameNode副本存
放在那些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带宽消耗和读取时延NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收
心跳信号和块状态报告(BlockReport)。接收到心跳信号意味着该DataNode节点工作正常。块状态报告包含了一个该DataNode上所有数据块的列表。主要组件的功能块存储结构metadate物理主要组件的功能▪DataNode一个数据块在DataNode上以文件存储在磁盘上
,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如复制块
数据到另一台机器,或删除某个数据块。如果超过10分钟NameNode没有收到某个DataNode的心跳信息,则NameNode认为该DataNode节点已死亡不可用。主要组件功能▪SecondaryNameNode辅助的NameNode周期性将E
ditsLog文件合并工作原理,如右图所示主要组件功能▪工作流程secondarynamenode通知namenode切换edits文件secondarynamenode从namenode获得fsimage和edit
s(通过http)secondarynamenode将fsimage载入内存,然后开始合并editssecondarynamenode将新的fsimage发回给namenodenamenode用新的fsimage替换旧的fsimage主要组件功能▪什么时候checkpiontfs.c
heckpoint.period指定两次checkpoint的最大时间间隔,默认3600秒。fs.checkpoint.size规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大
时间间隔。默认大小是64M数据损坏处理▪当DN读取block的时候,它会计算checksum;▪如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。▪client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数;▪DN在
其文件创建后三周验证其checksum。HDFS文件权限▪与Linux文件权限类似▪r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容▪如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个
文件在HDFS中owner是zhangsan▪HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁▪Root用户只能查看,不能写入▪hadoopdfs-chmod777/谢谢!