分布式文件系统hdfs基础与应用_第1页
分布式文件系统hdfs基础与应用_第2页
分布式文件系统hdfs基础与应用_第3页
分布式文件系统hdfs基础与应用_第4页
分布式文件系统hdfs基础与应用_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5HDFS是什么?源自于

的GFS于2003年10月HDFS是GFS克隆版Hadoop

Distributed

File

System易于扩展的分布式文件系统运行在大量普通廉价机器上,提供容错机制为大量用户提供性能不错的文件存取服务HDFS优点高容错性数据自动保存多个副本副本丢失后,自动恢复适合批处理移动计算而非数据数据位置

给计算框架适合大数据处理GB、TB、甚至PB级数据百万规模以上的文件数量10K+节点规模HDFS优点流式文件写入,多次保证数据一致性可构建在廉价机器上通过多副本提高可靠性提供了容错和恢复机制HDFS缺点低延迟数据比如毫秒级低延迟与高吞吐率小文件存取占用NameNode大量内存寻道时间超过

时间并发写入、文件随机修改一个文件只能有一个写者仅支持append内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5分布式文件系统的一种实现方式Server(10

*

1TB)50fiGleB350GB0.5filTe1B0.5

TB1.f2ilTe2B1.2

TB100filGe4B100

GBServer(10

*

1TB)(10

*

1TB)file1:node1file2:node3file3:node4file4:node5…….file1file3file2file1file1Serverfile4file2file2Server(10

*

1TB)file3file4file1:node1,node2,node3file2:node2,node3,node4file3:node4,mode5,node6file4:node5,node6.node7…….HDFS设计思想Server(10

TB)Server(10

TB)Server(10

TB)block1block2block3block4block1block1block2block2block3block3block4block4block1:node1,node2,node3block2:node2,node3,node4block3:node4,mode5,node6block4:node5,node6.node7…….Server(10

TB)64MB64MB64MB64MB……file350

GBblock1block2block3file3:

block1,block2,block3

….HDFS架构StandbynamenodeAc7venamenodeHDFS架构Active

Namenode主Master(只有一个)管理HDFS的名称空间管理数据块

信息配置副本策略处理客户端读写请求Standby

NameNodeNameNode的热备;定期合并fsimage和fsedits,推送给

NameNode;当Active

NameNode出现故障时,快速切换为新的ActiveNameNode。HDFS架构Client文件切分与NameNode交互,获取文件位置信息;与DataNode交互,读取或者写入数据;管理HDFS;HDFS。DatanodeSlave(有多个)实际的数据块执行数据块读/写HA与FederationNN1(ac7ve)NN2(standby)NN4(standby)NN3(ac7ve)DN1DN2DN3DN4DN5DN6DN7DN8DN9DN10SharedZookeeperFsimage与editsNameNode两个重要文件fsimage:元数据镜像文件(保存文件系统的树)edits:元数据操作日志(针对

树的修改操作),被写入共享

系统中

,比如NFS、JournalNode元数据镜像内存中保存一份

的内存中的镜像=fsimage+edits合并fsimage与editsEdits文件过大将导致NameNode重启速度慢Standby

Namenode负责定期合并它们HDFS数据块(block)文件被切分成固定大小的数据块默认数据块大小为128MB,可配置若文件大小不到128MB,则单独存成一个block为何数据块如此之大数据传输时间超过寻道时间(高吞吐率)一个文件

方式按大小被切分成若干个block,

到不同节点上默认情况下每个block有三个副本为什么选择三副本?1000TB数据集群,

在各种RAID

级别上的风险,以数据丢失的概率为衡量标准(3年内的统计):RAID-5最不可靠,会损失2TB数据,而三副本方案最靠谱假设1组磁盘里(可能是RAID1,RAID5等)由m个磁盘组成,当m个(或

)磁盘损坏会造成数据丢失,比如:RAID5只允许损坏一个磁盘,因此m=2;RAID6只允许损坏两个磁盘,因此m=3HDFS机制—写流程HDFS机制—读流程HDFS机制—物理拓扑每个机架通常有16-64

个节点同一个机架内任意两个节点间共享1Gbps带宽机架间带宽为2-10GbpsHDFS机制—副本放置策略RackARackB问题:一个文件划分成多个block,每个block存多份,如何为每个block选择节点这几份数据?Block副本放置策略:副本1:

同Client的节点上副本2:不同机架中的节点上副本3:与第二个副本同一机架的另一个节点上其他副本:随机挑选HDFS机制—可靠性策略文件损坏网络或者机器失效NameNode挂掉文件损坏网络或者机器失效NameNode挂掉常见常的见三的种三错种误错情误况情况文件完整性CRC32校验用其他副本取代损坏文件Heartbeat–

Datanode

定期向Namenode发heartbeat元数据信息FSImage(文件系统镜像)、Editlog(操作日志)多份主备NameNode实时切换HDFS不适合

小文件元信息

在NameNode内存中一个节点的内存是有限的存取大量小文件消耗大量的寻道时间类比拷贝大量小文件与拷贝同等大小的一个大文件NameNode

block数目是有限的一个block元信息消耗大约150

byte内存1亿个block,大约需要20GB内存如果一个文件大小为10K,则1亿个文件大小仅为1TB(但要消耗掉NameNode

20GB内存)内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5HDFS方式接口HDFS

S

命令HDFS

Java

APIHDFS

REST

APIHDFS

Fuse:实现了fuse协议HDFS

lib

hdfs:C/C++HDFS

其他语言编程API使用thrift实现支持C++、Python、php、C#等语言HDFS

S命令—文件操作命令HDFS

S命令—文件操作命令将本地文件上传到HDFS上bin/hdfs

fs-‐copyFromLocal

/local/data

/hdfs/data删除文件/bin/hdfs

fs

-‐rmr

/hdfs/data创建bin/hdfs

fs

-‐mkdir

/hdfs/dataHDFS

S命令—管理命令HDFS

S命令—管理在sbin

下start-all.shstart-dfs.shstart-yarn.shhadoop-deamon(s).sh单独启动某个服务hadoop-deamon.sh

start

namenodehadoop-deamons.sh

start

namenode(通过SSH登录到各个节点)HDFS

S

命令—文件管理命令fsck检查hdfs中文件的健康状况查找缺失的块以及过少或过多副本的块查看一个文件的所有数据块位置删除损坏的数据块HDFS

S命令—文件管理命令fsckHDFS

S命令—数据均衡器balancer数据块重分布bin/start-balancer.sh

-threshold

<percentage

ofdisk

capacity>percentage

of

disk

capacityHDFS达到平衡状态的磁盘使用率偏差值值越低各节点越平衡,但消耗时间也更长HDFS

S命令—设置

份额限制一个

最多使用磁盘空间bin/hadoop

dfsadmin

-setSpaceQuota

1t

/user/username限制一个

包含的最多子

和文件数目bin/hadoop

dfsadmin

-setQuota

10000

/user/usernameHDFS

S命令—增加/移除节点括配置文件等)加入新的datanode步骤1:将已存在datanode上的安装拷贝到新datanode上;步骤2:启动新datanode:sbin/hadoop-deamon.sh

startdatanode移除旧datanode步骤1:将datanode加入

,并更新,在NameNode上,将datanode的host或者ip加入配置选项dfs.hosts.exclude指定的文件中步骤2:移除datanodebin/hadoop

dfsadmin

-refreshNodesHDFS

Java

API介绍Configuration类:该类的对象封装了配置信息,这些配置信息来自core-*.xml;FileSystem类:文件系统类,可使用该类的方法对文件/

进行操作。一般通过FileSystem的静态方法get获得一个文件系统对象;FSDataInputStream和FSDataOutputStream类:

HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。以上类均来自java包:

.apache.hadoop.fsHDFSJava程序举例将本地文件拷贝到HDFS上;Configuration

config

=

new

Configuration();FileSystem

hdfs

=

FileSystem.get(config);Path

srcPath

=

nePath

dstPath

=

neth(srcFile);th(dstFile);hdfs.copyFromLocalFile(srcPath,

dstPath);创建HDFS文件;//byte[]buff–文件内容Configuration

config

=

new

Configuration();FileSystem

hdfs

=

FileSystem.get(config);Path

path

=

ne

th(fileName);FSDataOutputStream

outputStream

=

hdfs.create(path);outputStream.write(buff,

0,

buff.length);HDFS

多语言API—借助thriftThrift

Server(FileSystem)Thrift

ClientThrift

ClientThrift

ClientHadoopClusterhadoopfs.thrift接口定义PHP语言HDFSPython语言HDFS内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5HDFS优化小技巧:原始日志

格式选择文本文件不便于压缩,选择合适的压缩算法很重要;不建议将日志直接存成文本格式SequenceFile二进制格式,便于压缩,压缩格式作为元信息存到文件中;建议采用该格式

原始日志HDFS优化小技巧:小文件优化合并成大文件Sequence

fileHadoop

Archive保存到key/value系统中HBaseTFS(

FileSystem)HDFS优化小技巧:压缩与归档FlumeMapReduce/Hive/SparkHDFS优化小技巧:纠删码编码通过引入纠删码,节省

空间(节省一半空间)Hadoop

3.0(目前为alpha版本)可用内容安排HDFS概述1HDFS基本架构与原理2HDFS程序设计方法3HDFS优化小技巧4总结6分布式日志收集系统:文件管理模块5日志分析系统:文件模块FlumeAppSiteDeviceSqoopHDFSHive(Meta

Store

Server)DatabaseTablePar77onsETLloadcollectloadSQLPrestoSQLKaEaStormRedisMRstoreMysql/Oracle用户信息产品信息用户行为数据批处理线流式处理线日志分析系统:文件模块注意事项数据分区年/月/日数据压缩较少空间数据

格式选择原始日志

格式选择Sequencefile(便于压缩),而不是文本格式原始用户信息和商品信息可采用列式

格式(ORC或Parquet)保存(Hive一节会详细介绍)日志分析系统:数据格式选择SequenceFileHiveSequenceTableHiveORCTable原始日志文件原始Hive表ORC格式的数据表对压缩支持友好支持任意数据对压缩支持友好支持任意数据列式

,IO量小主流的

格式日志分析系统:增大“热点文件”的副本数通过程序API修改FileSystem

fs

=

FileSystem.get(path,

conf);fs.setReplication(path,

(short)

4);通过配置参数修改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论