基于Hadoop生态系统的大数据解决方案02_第1页
基于Hadoop生态系统的大数据解决方案02_第2页
基于Hadoop生态系统的大数据解决方案02_第3页
基于Hadoop生态系统的大数据解决方案02_第4页
基于Hadoop生态系统的大数据解决方案02_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章HDFS实现分布式存储预习检查简述HDFS的体系结构HadoopFSShell的命令行操作有哪些?编程实现HDFS文件操作有几种方式?使用HadoopURL方式访问HDFS文件存在什么问题?HadoopFileSystemAPI的关键类有哪些?集中测试2/47回顾与作业点评大数据的特点是什么?如何进行Hadoop的完全分布式安装?如何开发、运行Hadoop程序?点评作业的提交情况和共性问题回顾作业点评3/47本章任务使用HDFS保存音乐播放记录文件通过命令行实现通过Java编程实现4/47本章目标掌握HDFS体系结构掌握HadoopFSShell命令行操作掌握HDFSJavaAPI的使用使用HadoopURL使用HadoopFileSystemAPI5/47HDFS的体系结构5-1为什么首先学习HDFSHDFS是Hadoop的核心模块之一Hadoop的所有模块均构筑于HDFS之上HDFS为分布式计算提供底层存储支持优势存储超大文件标准流式访问:“一次写入,多次读取”运行在廉价的商用机器集群上不足不能满足低延迟的数据访问无法高效存储大量小文件暂时不支持多用户写入及随意修改文件6/47HDFS的体系结构5-2HDFS基本概念文件块NameNode、DataNode节点SecondaryNameNode节点文件块VERSION:版本信息,文件系统标识符seen_txid:事务管理用文件fsimage_*fsimage_*.md5元数据文件edits_*DataNode存储物理文件的文件块blk_<id>:HDFS的数据块blk_<id>.meta:数据块的属性信息周期性的备份NameNode7/47HDFS的体系结构5-3HDFS属于Master/Slave主从架构模式NameNode节点:Master负责管理文件块映射负责处理客户端请求负责管理HDFS命名空间负责配置副本策略DataNode节点:Slave负责存储文件块负责执行文件块的读写操作,一次写入、多次读取(不修改)8/47HDFS的体系结构5-4基于Master/Slave的节点管理HDFS添加DataNode节点修改NameNode节点的slaves文件加入新主机HDFS负载均衡命令:sbin/start-balancer.shHDFS安全机制将NameNode上存储的元数据文件转移到其它文件系统中使用SecondaryNameNode同步备份9/47HDFS的体系结构5-5HDFS的Web界面http://NameNodeIP:50070查看NameNode基本信息查看所有DataNode基本信息浏览文件系统演示:HDFS的Web界面10/47HadoopFSShell命令行11-1通常的文件系统负责为用户建立文件,存入、读取、修改文件等。如何操作Hadoop文件系统以管理其中的文件?FileSystemShell命令行支持多种文件系统的访问:Local和HDFSfs.defaultFS的值决定了默认访问的文件系统语法hadoopfs<args>问题“fs”表示FileSystemShell“<args>”是“fs”的子命令,包括:创建目录:mkdir列表文件:ls查看文件:cat转移文件:put、get、mv、cp删除文件:rm、rmr管理命令:test、du、expunge11/49HDFS命令行10-1创建目录:接受路径指定的URI作为参数,创建这些目录在HDFS中创建“/user”目录在HDFS中创建“/user/hadoop”目录同时创建多个目录语法hadoopfs-mkdir<paths>hadoopfs-mkdir/user/hadoophadoopfs-mkdir/userhadoopfs-mkdir/user/hadoop/dir1/user/hadoop/dir2HadoopFSShell命令行11-212/47示例HDFS命令行10-2列表文件列出“/user”目录下所有文件列出“/user/hadoop”目录下所有文件语法hadoopfs-ls

<paths>hadoopfs-ls/user/hadoophadoopfs-ls/userHadoopFSShell命令行11-313/47示例HDFS命令行10-3查看文件:输出路径指定文件的内容查看HDFS文件“file1.txt”和“file2.txt”查看本地系统文件“file3.txt”语法hadoopfs-catURI[URI…]hadoopfs-catfile:///home/hduser/file3.txthadoopfs-cat/input2/file1.txt/input2/file2.txt指定为本地文件系统前缀HadoopFSShell命令行11-414/47示例HDFS命令行10-4转移文件——put:从本地文件系统中复制单个或多个文件到HDFS将本地文件复制到HDFS目录“/input2”将多个本地文件复制到HDFS目录“/input2”语法hadoopfs-put<localsrc>...<dst>hadoopfs-put/home/hduser/file/file1.txt/home/hduser/file/file2.txt/input2hadoopfs-put/home/hduser/file/file1.txt/input2本地文件HDFS文件HadoopFSShell命令行11-515/47示例HDFS命令行10-5转移文件——get:复制HDFS文件到本地文件系统,是put的逆操作将HDFS文件“/input2/file1”复制到本地文件系统“$HOME/file”中语法hadoopfs-get

<src><localdst>hadoopfs-get/input2/file1$HOME/file必须是HDFS文件必须是本地文件HadoopFSShell命令行11-616/47示例HDFS命令行10-6转移文件——mv:将文件从源路径移动到目标路径将HDFS上的file1.txt、file2.txt移动到dir1中语法hadoopfs-mvURI[URI…]<dest>hadoopfs-mv/input2/file1.txt/input2/file2.txt/user/hadoop/dir1只能在同一文件系统间移动文件HadoopFSShell命令行11-717/47示例HDFS命令行10-7转移文件——cp:将文件从源路径复制到目标路径在HDFS中复制多个文件到“/user/hadoop/dir1”在本地文件系统中复制多个文件到目录“/tmp”语法hadoopfs-cpURI[URI…]<dest>hadoopfs-cp/input2/file1.txt/input2/file2.txt/user/hadoop/dir1只能在同一文件系统间复制文件hadoopfs-cpfile:///file1.txtfile:///file2.txtfile:///tmpHadoopFSShell命令行11-818/47示例HDFS命令行10-8删除文件删除非空文件“/intpu2/file1.txt”递归删除“/user/hadoop/dir1”语法hadoopfs-rmURI[URI…]hadoopfs-rmrURI[URI…]hadoopfs-rm/intpu2/file1.txt删除指定的文件,只删除非空目录和文件hadoopfs-rmr/user/hadoop/dir1rm的递归版本,整个文件夹及子文件夹将全部删除HadoopFSShell命令行11-919/47示例HDFS命令行10-9检查选项-e:检查文件是否存在。如果存在则返回0-z:检查文件是否0字节。如果是则返回0-d:检查路径是否为目录,如果是则返回1,否则返回0检查文件是否存在语法hadoopfs-test-[选项]URIhadoopfs-test-e/input2/file3.txtecho$?HadoopFSShell命令行11-1020/47示例HDFS命令行10-10显示目录中所有文件的大小清空回收站语法hadoopfs-duURI[URI…]hadoopfs-expungeHadoopFSShell命令行11-1121/47小结HadoopFSShell创建目录的命令是什么?列出目录下所有文件的命令是什么?查看文件的命令是什么?转移文件的命令有哪些?删除文件的命令有哪些?管理命令有哪些?22/47put、get、mv、cp、mkdir、ls、cat、rm、rmr、test、du、expunge学员操作——使用HadoopFSShell需求说明在本地系统中创建三个音乐播放记录文件music1.txt、music2.txt、music3.txt使用hadoopfs的子命令完成以下功能使用put命令将本地音乐播放记录复制到HDFS中使用get命令将播放记录复制到本地系统使用cat命令查看播放记录文件使用ls命令查看播放记录文件列表完成时间:20分钟练习23/47常见问题及解决办法代码规范问题调试技巧共性问题集中讲解共性问题集中讲解24/47编程实现操作HDFS文件Hadoop的文件操作有两种方式命令行JavaAPI编程实现使用HadoopURL使用HadoopFileSystemAPI25/47使用HadoopURL读取文件.URLJDK自带默认实现了常见的HTTP、File、FTP等协议,但不能识别hdfs

URL方案Hadoop提供FsUrlStreamHandlerFactory类static{

URL.setURLStreamHandlerFactory(

new

FsUrlStreamHandlerFactory());}...InputStreamin=newURL(“hdfs://node1:9000/input2/file1.txt”) .openStream();演示示例1:使用HadoopURL读取数据让Java虚拟机能够识别Hadoop的hdfsURL方案示例注意URLStreamHandlerFactory只能设置一次!26/47HadoopFileSystemAPI简介

HadoopFileSystemAPI主要类org.apache.hadoop.fs.FileSystemorg.apache.hadoop.conf.Configurationorg.apache.hadoop.fs.FSDataInputStreamorg.apache.hadoop.fs.FSDataOutputStreamorg.apache.hadoop.fs.Pathorg.apache.hadoop.fs.FileStatus使用FileSystemAPI编程步骤获取Configuration对象获取文件系统的实例FileSystem对象使用FileSystem对象操作文件27/47第一步:获取Configuration对象,得到Hadoop参数配置信息Configurationconf=newConfiguration(); //实例化Configurationconf.addResource(“hdfs-site.xml”); //手动加载参数文件hdfs-site.xmlconf.addResource(“mapred-site.xml”); //手动加载参数文件mapred-site.xmlconf.set(“mapreduces.job.reduces”,”1”); //直接指定某个属性示例默认配置文件core-default.xml(自动加载)hdfs-default.xmlmapred-default.xml自定义配置文件core-site.xml(自动加载)hdfs-site.xmlmapred-site.xml28/49使用FileSystemAPI编程步骤3-1第二步:得到文件系统的实例FileSystem对象publicstaticFileSystemget(Configurationconf)publicstaticFileSystemget(URIuri,Configurationconf)语法29/47使用FileSystemAPI编程步骤3-2第三步:使用FileSystem对象操作文件//获取本地配置信息core-site.xmlConfigurationconf=newConfiguration();

//获取文件系统实例,core-site.xml中指定了HDFS文件系统FileSystemfs=FileSystem.get(conf);InputStreamin=null;try{

in=fs.open(newPath(“/input2/file1.txt”));

IOUtils.copyBytes(in,System.out,4096,false);}finally{

IOUtils.closeStream(in);}示例演示示例2:使用FileSystemAPI读取文件Hadoop提供IOUtils工具包类来简化I/O操作30/47使用FileSystemAPI编程步骤3-3HadoopFileSystemAPI7-1常用操作读取创建复制删除重命名查询由FileSystem类提供方法实现上述操作31/47HadoopFileSystemAPI7-2FileSystem类主要方法32/47方法说明staticFileSystemget(Configurationconf)获得FileSystem实例FSDataInputStreamopen(Pathf)打开文件获得输入流FSDataInputStreamcreate(Pathf)创建文件且自动创建目录voidcopyFromLocalFile(PathsrcPath,PathdstPath)将文件从本地系统复制到HDFSbooleandelete(Pathf,booleanrecursive)删除文件booleanrename(PathfromPath,PathtoPath)重命名文件FileStatusgetFileStatus(Pathf)获得文件的FileStatus实例booleanexists(Pathf)查询文件是否存在HadoopFileSystemAPI

7-3创建文件创建文件hdfs://node1:9000/input2/file2.txt语法publicFSDataInputStreamcreate(Pathf)演示示例3:创建文件33/47示例Configurationconf=newConfiguration(); FileSystemfs=FileSystem.get(conf);Pathf=newPath(uri);FSDataOutputStreamoutputStream=fs.create(f);

InputStreamin=newByteArrayInputStream(

"Hello!HadoopHDFS!".getBytes("UTF-8"));IOUtils.copyBytes(in,outputStream,4096,true);HadoopFileSystemAPI

7-4复制文件本地至HDFSHDFS至本地语法publicvoidcopyFromLocalFile(PathsrcPath,PathdstPath)演示示例4:复制文件publicvoidcopyToLocalFile(PathsrcPath,PathdstPath)语法34/47示例StringsrcFile=“/home/hduser/file/file2.txt”;

//源文件必须是本地文件StringdstFile=“hdfs://node1:9000/input2/file2.txt”;

//目标文件必须是HDFS文件Configurationconf=newConfiguration(); FileSystemfs=FileSystem.get(conf);PathsrcPath=newPath(srcFile);PathdstPath=newPath(dstFile); fs.copyFromLocalFile(srcPath,dstPath);//复制本地文件至HDFSHadoopFileSystemAPI

7-5删除文件语法publicbooleandelete(Pathf,booleanrecursive)演示示例5:删除文件删除非空目录需要指定recursive值为true35/47示例Stringuri=“hdfs://node1:9000/input3”;Configurationconf=newConfiguration(); FileSystemfs=FileSystem.get(conf);Pathf=newPath(uri); fs.delete(f,true);HadoopFileSystemAPI

7-6重命名文件语法publicbooleanrename(PathfromPath,PathtoPath)演示示例6:重命名文件36/47示例StringfromFile=“hdfs://node1:9000/input2/file2.txt”;//旧文件名StringtoFile=“hdfs://node1:9000/input2/file2new.txt”;//新文件名Configurationconf=newConfiguration(); FileSystemfs=FileSystem.get(conf);PathfromPath=newPath(fromFile);PathtoPath=newPath(toFile);fs.rename(fromPath,toPath);HadoopFileSystemAPI

7-7文件查询获取文件的FileStatus实例列出目录下所有文件的FileStatus实例查询文件是否存在使用上述语法查询示例3~6操作后的文件系统目录语法publicFileStatusgetFileStatus(Pathf)演示示例7~8:文件查询publicFileStatus[]listStatus(Pathf)publicbooleanexists(Pathf)语法语法37/47

小结编程实现操作HDFS文件的两种方式是什么?使用HadoopURL使用FsUrlStreamHandlerFactory使用HadoopFileSystemAPIConfigurationFSDataInputStreamFSDataOutputStreamPathFileStatus使用FileSystem类读取、创建、复制、删除、重命名、查询38/47学员操作——上传本地音乐播放记录需求说明对本地音乐播放记录文件使用FileSystemAPI完成如下功能使用copyFromLocal()方法将本地音乐播放记录music1.txt、music2.txt、music3.txt复制到HDFS中使用listStatus()方法查找上一步已复制到HDFS中的音乐播放记录文件读取音乐播放记录文件重命名HDFS中音乐播放

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论