hdfs体系结构

上传人:资****亨 文档编号:139236684 上传时间:2020-07-20 格式:PPT 页数:29 大小:311.50KB
返回 下载 相关 举报
hdfs体系结构_第1页
第1页 / 共29页
hdfs体系结构_第2页
第2页 / 共29页
hdfs体系结构_第3页
第3页 / 共29页
hdfs体系结构_第4页
第4页 / 共29页
hdfs体系结构_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《hdfs体系结构》由会员分享,可在线阅读,更多相关《hdfs体系结构(29页珍藏版)》请在金锄头文库上搜索。

1、.,深入浅出hadoop,培训讲师:吴超 blog:,.,课程安排,分布式文件系统与HDFS HDFS体系结构与基本概念* HDFS的shell操作* java接口及常用api* -加深拓展- RPC调用* HDFS的分布式存储架构的源码分析*,.,Distributed File System,数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。 是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。 通透性。让实际上是通过网

2、络来访问文件的动作,在程序与用户看来,就像是访问本地的磁盘一般。 容错。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。 分布式文件管理系统很多,hdfs只是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。,.,HDFS的Shell,调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式。 所有的FS shell命令使用URI路径作为参数。 URI格式是scheme:/authority/path。HDFS的scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如

3、果未加指定,就会使用配置中指定的默认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 /复制多个文件到目标目录

4、-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根目录

5、#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/tes

6、t.txt /test1 #hadoop fs -rm /test1/test.txt #hadoop fs -mv /test/test.txt /test1 #hadoop fs -rmr /test1,.,Namenode,是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。 (见源码) 文件包括: fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。备份使用到上面红色中的文件 edits:操作日志文件。(类似于数据库中事务操作,要么全部执行成功,要么什么都不执行)定期由secondaryN

7、amenode整合到fsimage中。 fstime:保存最近一次checkpoint的时间 以上这些文件是保存在linux的文件系统中。,hdfs-site.xml的dfs.name.dir属性,.,Datanode,提供真实文件数据的存储服务。 (见源码) 文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是64MB,以一个256MB文件,共有256/64=4个Block. 不同于普通文件系统的是,HDFS中,如果一个文件小于一个

8、数据块的大小,并不占用整个数据块存储空间 Replication。多复本。默认是三个。,hdfs-site.xml的dfs.replication属性,.,SecondaryNameNode,HA的一个解决方案。但不支持热备。配置即可。 (见源码) 执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits. 默认在安装在NameNode节点上,但这样.不安全!,.,Shell命令练习:验证块大小,方法:上传小于64MB的文件,观察块大小 验证:使用 http

9、:/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

10、访问接口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:/hadoo

11、p240: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.o

12、pen(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(); fileS

13、ystem.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

14、的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

15、.isDir()?目录:文件; String name = fileStatus.getPath().toString(); System.out.println(isDir+ +name); ,.,FileSystem,用户代码操作HDFS时,是直接调用FileSystem的子类完成的。,.,Remote Procedure Call,RPC远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式

16、多程序在内的应用程序更加容易。 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 Stri

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号