传智播客培训课程HDFS课件

上传人:202****8-1 文档编号:243017975 上传时间:2024-09-13 格式:PPT 页数:29 大小:998.51KB
返回 下载 相关 举报
传智播客培训课程HDFS课件_第1页
第1页 / 共29页
传智播客培训课程HDFS课件_第2页
第2页 / 共29页
传智播客培训课程HDFS课件_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育 ,*,高级软件人才实作培训专家!,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育 ,*,高级软件人才实作培训专家!,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育 ,*,高级软件人才实作培训专家!,北京传智播客教育 ,Hadoop深入浅出,讲师: 吴 超,博客:,Q Q: 3774 86624,课程安排,分布式文件系统与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:操作日志文件。,fstime:保存最近一次checkpoint的时间,以上这些文件是保存在linux的文件系统中。,hdfs-site.xml的dfs.name.dir属性,Datanode,提供真实文件数据的存储服务。,(见源码),文件块(,b,lock):,最基本的存储单位。,对于文件内容而言,一个文件的长度大小是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)。,R,PC示例,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交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!