厦大大数据技术原理与应用第三章分布式文件系统HDFS.ppt

厦大大数据技术原理与应用第三章分布式文件系统HDFS.ppt

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

3.6 HDFS数据读写过程写入文件import?org.apache.hadoop.conf.Configuration;??import?org.apache.hadoop.fs.FileSystem;import?org.apache.hadoop.fs.FSDataOutputStream;import?org.apache.hadoop.fs.Path;?public?class?Chapter3?{????????public?static?void?main(String[]?args)?{?????????try?{????????????Configuration?conf?=?new?Configuration();??????????????FileSystem?fs?=?FileSystem.get(conf);????????????byte[]?buff?=?Hello?world.getBytes();?//?要写入的内容?????????????String?filename?=?hdfs://localhost:9000/user/hadoop/test.txt;?//要写入的文件名?????????????FSDataOutputStream?os?=fs.create(new?Path(filename));????????????os.write(buff,0,buff.length);????????????System.out.println(Create:+?filename);?????????}?catch?(Exception?e)?{??????????????e.printStackTrace();??????????}??????}??}3.6 HDFS数据读写过程FileSystem是一个通用文件系统的抽象基类,可以被分布式文件系统继承,所有可能使用Hadoop文件系统的代码,都要使用这个类Hadoop为FileSystem这个抽象类提供了多种具体实现DistributedFileSystem就是FileSystem在HDFS文件系统中的具体实现FileSystem的open()方法返回的是一个输入流FSDataInputStream对象,在HDFS文件系统中,具体的输入流就是DFSInputStream;FileSystem中的create()方法返回的是一个输出流FSDataOutputStream对象,在HDFS文件系统中,具体的输出流就是DFSOutputStream。Configurationconf=newConfiguration();FileSystemfs=FileSystem.get(conf);FSDataInputStreamin=fs.open(newPath(uri));FSDataOutputStreamout=fs.create(newPath(uri));备注:创建一个Configuration对象时,其构造方法会默认加载工程项目下两个配置文件,分别是hdfs-site.xml以及core-site.xml,这两个文件中会有访问HDFS所需的参数值,主要是fs.defaultFS,指定了HDFS的地址(比如hdfs://localhost:9000),有了这个地址客户端就可以通过这个地址访问HDFS了3.6.1 读数据的过程FSDataInputStream封装了DFSInputStreamFileSystemfs=FileSystem.get(conf);FSDataInputStreamin=fs.open(newPath(uri));Configurationconf=newConfiguration();importorg.apache.hadoop.fs.FileSystem通过ClientProtocal.getBlockLocations()远程调用名称节点,获得文件开始部分数据块的位置对于该数据块,名称节点返回保存该数据块的所有数据节点的地址并根据距离客户端远近进行排序客户端获得输入流FSDataInputStream以后调用read()函数开始读取数据输入流根据前面的排序结果选择距离客户端最近的数据节点建立连接并读取数据数据从数据节点读到客户端,当该数据块读取完毕时FSDataInputStream关闭和该数据节点的连接通过ClientProtocal.getBlockLocations()查找下一个数据块3.6.2 写数据的过程FileSyste

文档评论(0)

聚好信息咨询 + 关注
官方认证
服务提供商

本公司能够提供如下服务:办公文档整理、试卷、文档转换。

认证主体鹤壁市淇滨区聚好信息咨询服务部
IP属地河南
统一社会信用代码/组织机构代码
92410611MA40H8BL0Q

1亿VIP精品文档

相关文档