hdfs体系结构

上传人:哟*** 文档编号:242586409 上传时间:2024-08-28 格式:PPTX 页数:29 大小:319.97KB
返回 下载 相关 举报
hdfs体系结构_第1页
第1页 / 共29页
hdfs体系结构_第2页
第2页 / 共29页
hdfs体系结构_第3页
第3页 / 共29页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,深入浅出hadoop,培训讲师:吴超,blog:,课程安排,分布式文件系统与HDFS,HDFS体系结构与基本概念,*,HDFS的shell操作,*,java接口及常用api,*,-加深拓展-,RPC调用,*,HDFS的分布式存储架构的源码分析,*,Distributed File System,数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。,是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。,通透性。让实际上是通过网络来访问文件的动作,在程序与用户看来,就像是访问本地的磁盘一般。,容错。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。,分布式文件管理系统很多,,hdfs,只是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。,HDFS,的,Shell,调用文件系统,(FS)Shell,命令应使用,bin/hadoop fs,的形式。,所有的,FS shell,命令使用,URI,路径作为参数。,URI,格式是,scheme:/authority/path,。,HDFS,的,scheme,是,hdfs,,对本地文件系统,,scheme,是,file,。其中,scheme,和,authority,参数都是可选的,如果未加指定,就会使用配置中指定的默认,scheme,。,例如:,/parent/child,可以表示成,hdfs:/namenode:namenodePort/parent/child,,或者更简单的,/parent/child,(假设配置文件是,namenode:namenodePort,),大多数,FS Shell,命令的行为和对应的,Unix Shell,命令类似。,HDFS fs,命令,-help cmd/,显示命令的帮助信息,-ls(r) /,显示当前目录下所有文件,-du(s) /,显示目录中所有文件大小,-count-q /,显示目录中文件数量,-mv /,移动多个文件到目标目录,-cp /,复制多个文件到目标目录,-rm(r)/,删除文件,(,夹,),-put /,本地文件复制到,hdfs,-copyFromLocal/,同,put,-moveFromLocal/,从本地文件移动到,hdfs,-get -ignoreCrc /,复制文件到本地,可以忽略,crc,校验,-getmerge /,将源目录中的所有文件排序合并到一个文件中,-cat /,在终端显示文件内容,-text /,在终端显示文件内容,-copyToLocal -ignoreCrc /,复制到本地,-moveToLocal ,-mkdir /,创建文件夹,-touchz /,创建一个空文件,HDFS,的,Shell,命令练习,#hadoop fs -ls /,查看,HDFS,根目录,#hadoop fs -mkdir /test,在根目录创建一个目录,test,#hadoop fs -mkdir /test1,在根目录创建一个目录,test1,#echo -e hadoop second lesson test.txt,#hadoop fs -put ./test.txt /test,或,#hadoop fs -copyFromLocal ./test.txt /test,#cd .,#hadoop fs -get /test/test.txt .,或,#hadoop fs -getToLocal /test/test.txt .,#hadoop fs -cp /test/test.txt /test1,#hadoop fs -rm /test1/test.txt,#hadoop fs -mv /test/test.txt /test1,#hadoop fs -rmr /test1,Namenode,是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。,(见源码),文件包括:,fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。,备份使用到上面红色中的文件,edits:操作日志文件。,(,类似于数据库中事务操作,要么全部执行成功,要么什么都不执行,),定期由,secondaryNamenode,整合到,fsimage,中。,fstime:保存最近一次checkpoint的时间,以上这些文件是保存在linux的文件系统中。,hdfs-site.xml,的,dfs.name.dir,属性,Datanode,提供真实文件数据的存储服务。,(见源码),文件块(block):,最基本的存储单位。,对于文件内容而言,一个文件的长度大小是size,那么从文件的偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。,HDFS默认Block大小是64MB,,以一个256MB文件,共有256/64=4个Block.,不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间,Replicat,ion。多复本。默认是三个。,hdfs-site.xml,的,dfs.replication,属性,SecondaryNameNode,HA,的一个解决方案。但不支持热备。配置即可。,(,见源码,),执行过程:从,NameNode,上下载元数据信息(,fsimage,edits,),然后把二者合并,生成新的,fsimage,,在本地保存,并将其推送到,NameNode,,同时重置,NameNode,的,edits.,默认在安装在,NameNode,节点上,但这样,.,不安全!,Shell命令练习:验证块大小,方法:上传小于64MB的文件,观察块大小,验证:使用 http:/hadoop0:50070 观察,HDFS,的,JavaAPI_,读文件,.URI,org.apache.hadoop.conf.Configuration,org.apache.hadoop.fs.FileSystem,org.apache.hadoop.fs.Path,org.apache.hadoop.io.IOUtils,.URL,org.apache.hadoop.io.IOUtils,org.apache.hadoop.fs.FsUrlStreamHandlerFactory,hdfs:/192.168.200.128:9000/test/test.txt,HDFS,的,java,访问接口,FileSystem,写文件,create,读取文件,open,删除文件,delete,创建目录,mkdirs,删除文件或目录,delete,列出目录的内容,listStatus,显示文件系统的目录和文件的元数据信息,getFileStatus,HDFS,的,FileSystem,读取文件,private static FileSystem getFileSystem() throws URISyntaxException,IOException ,Configuration conf = new Configuration();,URI uri = new URI(hdfs:/hadoop240:9000);,final FileSystem fileSystem = FileSystem.get(uri , conf);,return fileSystem;,HDFS,的,FileSystem,读取文件,/*,*,读取文件,调用,fileSystem,的,open(path),* throws Exception,*/,private static void readFile() throws Exception ,FileSystem fileSystem = getFileSystem();,FSDataInputStream openStream = fileSystem.open(new Path(hdfs:/itcast0106:9000/aaa);,IOUtils.copyBytes(openStream, System.out, 1024, false);,IOUtils.closeStream(openStream);,HDFS,的,FileSystem,目录,/*,*,创建目录,调用,fileSystem,的,mkdirs(path),* throws Exception,*/,private static void mkdir() throws Exception ,FileSystem fileSystem = getFileSystem();,fileSystem.mkdirs(new Path(hdfs:/itcast0106:9000/bbb);,/*,*,删除目录,调用,fileSystem,的,deleteOnExit(path),* throws Exception,*/,private static void rmdir() throws Exception ,FileSystem fileSystem = getFileSystem();,fileSystem.delete(new Path(hdfs:/itcast0106:9000/bbb);,HDFS,的,FileSystem,遍历目录,/*,*,遍历目录,使用,FileSystem,的,listStatus(path),*,如果要查看,file,状态,使用,FileStatus,对象,*,throws Exception,*/,private static void list() throws Exception,FileSystem fileSystem = getFileSystem();,FileStatus listStatus = fileSystem.listStatus(new Path(hdfs:/itcast0106:9000/);,for (FileStatus fileStatus : listStatus) ,String isDir = fileStatus.isDir()?,目录,:,文件,;,String name = fileStatus.getPath().toString();,System.out.println(isDir+ +name);,FileSystem,用户代码操作HDFS时,是直接调用FileSystem的子类完成的。,Remote Procedure Call,RPC,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。,RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。,hadoop的整个体系结构就是构建在RPC之上的(见org.apache.hadoop.ipc)。,RPC示例,public interface Bizable extends VersionedProtocol,public abstract String hello(String name);,class Biz implements Bizable,Override,public String hello(String name),System.out.println(,被调用了,);,return hello +name;,Override,public long getProtocolVersion(String protocol, long clientVersion),throws IOException ,System.out.println(Biz.getProtocalVersion()=+MyServer.VERSION);,return MyServer.VERSION;,RPC,示例,public class MyServer ,public static int PORT = 3242;,public static long VERSION = 23234l;,public static void main(String args) throws IOException ,final Server server = RPC.getServer(new Biz(), 127.0.0.1, PORT, new Configuration();,server.start();,RPC,示例,public class MyClient ,public static void main(String args) throws IOException ,final InetSocketAddress inetSocketAddress = new InetSocketAddress(127.0.0.1, MyServer.PORT);,final Bizable proxy = (Bizable) RPC.getProxy(Bizable.class, MyServer.VERSION, inetSocketAddress, new Configuration();,final String ret = proxy.hello(吴超);,System.out.println(ret);,RPC.stopProxy(proxy);,RPC调用流程,ClientProtocol,是客户端(FileSystem)与NameNode通信的接口。,DatanodeProtocol,是DataNode与NameNode通信的接口,NamenodeProtocol,是SecondaryNameNode与NameNode通信的接口。,分析HDFS的读写过程,DFSClient,是直接调用NameNode接口的对象。,用户代码是通过DistributedFileSystem调用DFSClient对象,才能与NameNode打交道。,28,练习题,练习,shell,命令,在,HDFS,创建一个文本文件,hadoop.test,。内容自定,;,然后,用,Java,程序在本地终端打印,hadoop.test,文件内容,用,Java,程序实现,copyFromLocal,29,思考题,hdfs,的组成部分有哪些,分别解释一下,hdfs,的高可靠如何实现,hdfs,的常用,shell,命令有哪些,hdfs,的常用,java api,有哪些,请用,shell,命令实现目录、文件的增删改查,请用,java api,实现目录、文件的增删改查,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 开题报告


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!