网站大量收购独家精品文档,联系QQ:2885784924

分布的式文件系统HDFS.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布的式文件系统HDFS

3.6 HDFS数据读写过程 FileSystem是一个通用文件系统的抽象基类,可以被分布式文件系统继承,所有可能使用Hadoop文件系统的代码,都要使用这个类; Hadoop为FileSystem这个抽象类提供了多种具体实现; DistributedFileSystem就是FileSystem在HDFS文件系统中的具体实现; FileSystem的open()方法返回的是一个输入流FSDataInputStream对象,在HDFS文件系统中,具体的输入流就是DFSInputStream;FileSystem中的create()方法返回的是一个输出流FSDataOutputStream对象,在HDFS文件系统中,具体的输出流就是DFSOutputStream。 Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); FSDataInputStream in = fs.open(new Path(uri)); FSDataOutputStream out = fs.create(new Path(uri)); 注意:创建一个Configuration对象时,其构造方法会默认加载工程项目下两个配置文件,分别是hdfs-site.xml以及core-site.xml,这两个文件中会有访问HDFS所需的参数值,主要是fs.defaultFS,指定了HDFS的地址(比如hdfs://localhost:9000),有了这个地址客户端就可以通过这个地址访问HDFS了 3.6.1 读数据的过程 FSDataInputStream封装了DFSInputStream FileSystem fs = FileSystem.get(conf); FSDataInputStream in = fs.open(new Path(uri)); Configuration conf = new Configuration(); import org.apache.hadoop.fs.FileSystem 通过ClientProtocal.getBlockLocations() 远程调用名称节点,获得文件开始部分数据块的位置 对于该数据块,名称节点返回保存该数据块 的所有数据节点的地址 并根据距离客户端远近进行排序 客户端获得输入流FSDataInputStream以后 调用read()函数开始读取数据 输入流根据前面的排序结果 选择距离客户端最近的数据节点 建立连接并读取数据 数据从数据节点读到客户端,当该数据块读取完毕时 FSDataInputStream关闭和该数据节点的连接 通过ClientProtocal.getBlockLocations() 查找下一个数据块 3.6.2 写数据的过程 FileSystem fs = FileSystem.get(conf); FSDataOutputStream out = fs.create(new Path(uri)); Configuration conf = new Configuration(); import org.apache.hadoop.fs.FileSystem RPC远程调用名称节点 在文件系统的命名空间中新建一个文件 名称节点会执行一些检查(文件是否存在,客户端权限) FSDataOutputStream封装了DFSOutputStream 数据被分成一个个分包 分包被放入DFSOutputStream对象的内部队列 DFSOutputStream向名称节点申请 保存数据块的若干数据节点 这些数据节点形成一个数据流管道 队列中的分包最后被打包成数据包 发往数据流管道中的第一个数据节点 第一个数据节点将数据包发送到第二个节点 依此类推,形成“流水线复制” 为了保证节点数据准确,接收到数据的数据节点要向发送者发送“确认包” 确认包沿着数据流管道逆流而上,经过各个节点最终到达客户端 客户端收到应答时,它将对应的分包从内部队列移除 DFSOutputStream调用 ClientPplete()方法 通知名称节点关闭文件 3.7 HDFS编程实践 Hadoop提供了关于HDFS在Linux操作系统上进行文件操作的常用Shell命令以及Java API。同时还可以利用Web界面查看和管理Hadoop文件系统。 备注:Hadoop安装成功后,已经包含HDFS和MapReduce,不需要额外安装。而HBase等其他组件,则需要另外下载安装。 在学习HDFS编程实践前,我们需要启动Hadoop。执行如下命令: 3.7.1 HDFS常用命令 HDFS有很多shell命令, fs命令:查看HDF

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档