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

下载本文档

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

文档简介

第二章HDFS实现分布式存储,预习检查,简述HDFS的体系结构HadoopFSShell的命令行操作有哪些?编程实现HDFS文件操作有几种方式?使用HadoopURL方式访问HDFS文件存在什么问题?HadoopFileSystemAPI的关键类有哪些?,集中测试,2/47,回顾与作业点评,大数据的特点是什么?如何进行Hadoop的完全分布式安装?如何开发、运行Hadoop程序?点评作业的提交情况和共性问题,回顾,作业点评,3/47,本章任务,使用HDFS保存音乐播放记录文件通过命令行实现通过Java编程实现,4/47,本章目标,掌握HDFS体系结构掌握HadoopFSShell命令行操作掌握HDFSJavaAPI的使用使用HadoopURL使用HadoopFileSystemAPI,5/47,HDFS的体系结构5-1,为什么首先学习HDFSHDFS是Hadoop的核心模块之一Hadoop的所有模块均构筑于HDFS之上HDFS为分布式计算提供底层存储支持优势存储超大文件标准流式访问:“一次写入,多次读取”运行在廉价的商用机器集群上不足不能满足低延迟的数据访问无法高效存储大量小文件暂时不支持多用户写入及随意修改文件,6/47,HDFS的体系结构5-2,HDFS基本概念文件块NameNode、DataNode节点SecondaryNameNode节点,文件块,VERSION:版本信息,文件系统标识符seen_txid:事务管理用文件fsimage_*fsimage_*.md5元数据文件edits_*,DataNode存储物理文件的文件块blk_:HDFS的数据块blk_.meta:数据块的属性信息,周期性的备份NameNode,7/47,HDFS的体系结构5-3,HDFS属于Master/Slave主从架构模式NameNode节点:Master负责管理文件块映射负责处理客户端请求负责管理HDFS命名空间负责配置副本策略DataNode节点:Slave负责存储文件块负责执行文件块的读写操作,一次写入、多次读取(不修改),8/47,HDFS的体系结构5-4,基于Master/Slave的节点管理HDFS添加DataNode节点修改NameNode节点的slaves文件加入新主机HDFS负载均衡命令:sbin/start-balancer.shHDFS安全机制将NameNode上存储的元数据文件转移到其它文件系统中使用SecondaryNameNode同步备份,9/47,HDFS的体系结构5-5,HDFS的Web界面http:/NameNodeIP:50070查看NameNode基本信息查看所有DataNode基本信息浏览文件系统,10/47,HadoopFSShell命令行11-1,通常的文件系统负责为用户建立文件,存入、读取、修改文件等。如何操作Hadoop文件系统以管理其中的文件?FileSystemShell命令行支持多种文件系统的访问:Local和HDFSfs.defaultFS的值决定了默认访问的文件系统,语法,hadoopfs,问题,“fs”表示FileSystemShell,“”是“fs”的子命令,包括:创建目录:mkdir列表文件:ls查看文件:cat转移文件:put、get、mv、cp删除文件:rm、rmr管理命令:test、du、expunge,11/49,HDFS命令行10-1,创建目录:接受路径指定的URI作为参数,创建这些目录在HDFS中创建“/user”目录在HDFS中创建“/user/hadoop”目录同时创建多个目录,语法,hadoopfs-mkdir,hadoopfs-mkdir/user/hadoop,hadoopfs-mkdir/user,hadoopfs-mkdir/user/hadoop/dir1/user/hadoop/dir2,HadoopFSShell命令行11-2,12/47,示例,HDFS命令行10-2,列表文件列出“/user”目录下所有文件列出“/user/hadoop”目录下所有文件,语法,hadoopfs-ls,hadoopfs-ls/user/hadoop,hadoopfs-ls/user,HadoopFSShell命令行11-3,13/47,示例,HDFS命令行10-3,查看文件:输出路径指定文件的内容查看HDFS文件“file1.txt”和“file2.txt”查看本地系统文件“file3.txt”,语法,hadoopfs-catURIURI,hadoopfs-catfile:/home/hduser/file3.txt,hadoopfs-cat/input2/file1.txt/input2/file2.txt,指定为本地文件系统前缀,HadoopFSShell命令行11-4,14/47,示例,HDFS命令行10-4,转移文件put:从本地文件系统中复制单个或多个文件到HDFS将本地文件复制到HDFS目录“/input2”将多个本地文件复制到HDFS目录“/input2”,语法,hadoopfs-put.,hadoopfs-put/home/hduser/file/file1.txt/home/hduser/file/file2.txt/input2,hadoopfs-put/home/hduser/file/file1.txt/input2,本地文件,HDFS文件,HadoopFSShell命令行11-5,15/47,示例,HDFS命令行10-5,转移文件get:复制HDFS文件到本地文件系统,是put的逆操作将HDFS文件“/input2/file1”复制到本地文件系统“$HOME/file”中,语法,hadoopfs-get,hadoopfs-get/input2/file1$HOME/file,必须是HDFS文件,必须是本地文件,HadoopFSShell命令行11-6,16/47,示例,HDFS命令行10-6,转移文件mv:将文件从源路径移动到目标路径将HDFS上的file1.txt、file2.txt移动到dir1中,语法,hadoopfs-mvURIURI,hadoopfs-mv/input2/file1.txt/input2/file2.txt/user/hadoop/dir1,只能在同一文件系统间移动文件,HadoopFSShell命令行11-7,17/47,示例,HDFS命令行10-7,转移文件cp:将文件从源路径复制到目标路径在HDFS中复制多个文件到“/user/hadoop/dir1”在本地文件系统中复制多个文件到目录“/tmp”,语法,hadoopfs-cpURIURI,hadoopfs-cp/input2/file1.txt/input2/file2.txt/user/hadoop/dir1,只能在同一文件系统间复制文件,hadoopfs-cpfile:/file1.txtfile:/file2.txtfile:/tmp,HadoopFSShell命令行11-8,18/47,示例,HDFS命令行10-8,删除文件删除非空文件“/intpu2/file1.txt”递归删除“/user/hadoop/dir1”,语法,hadoopfs-rmURIURIhadoopfs-rmrURIURI,hadoopfs-rm/intpu2/file1.txt,删除指定的文件,只删除非空目录和文件,hadoopfs-rmr/user/hadoop/dir1,rm的递归版本,整个文件夹及子文件夹将全部删除,HadoopFSShell命令行11-9,19/47,示例,HDFS命令行10-9,检查选项-e:检查文件是否存在。如果存在则返回0-z:检查文件是否0字节。如果是则返回0-d:检查路径是否为目录,如果是则返回1,否则返回0检查文件是否存在,语法,hadoopfs-test-选项URI,hadoopfs-test-e/input2/file3.txtecho$?,HadoopFSShell命令行11-10,20/47,示例,HDFS命令行10-10,显示目录中所有文件的大小清空回收站,语法,hadoopfs-duURIURI,hadoopfs-expunge,HadoopFSShell命令行11-11,21/47,小结,HadoopFSShell创建目录的命令是什么?列出目录下所有文件的命令是什么?查看文件的命令是什么?转移文件的命令有哪些?删除文件的命令有哪些?管理命令有哪些?,22/47,put、get、mv、cp、mkdir、ls、cat、rm、rmr、test、du、expunge,学员操作使用HadoopFSShell,需求说明在本地系统中创建三个音乐播放记录文件music1.txt、music2.txt、music3.txt使用hadoopfs的子命令完成以下功能使用put命令将本地音乐播放记录复制到HDFS中使用get命令将播放记录复制到本地系统使用cat命令查看播放记录文件使用ls命令查看播放记录文件列表,练习,23/47,常见问题及解决办法代码规范问题调试技巧,共性问题集中讲解,24/47,编程实现操作HDFS文件,Hadoop的文件操作有两种方式命令行JavaAPI编程实现使用HadoopURL使用HadoopFileSystemAPI,25/47,使用HadoopURL读取文件,.URLJDK自带默认实现了常见的HTTP、File、FTP等协议,但不能识别hdfsURL方案Hadoop提供FsUrlStreamHandlerFactory类,staticURL.setURLStreamHandlerFactory(newFsUrlStreamHandlerFactory();.InputStreamin=newURL(“hdfs:/node1:9000/input2/file1.txt”).openStream();,让Java虚拟机能够识别Hadoop的hdfsURL方案,示例,26/47,HadoopFileSystemAPI简介,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”);/直接指定某个属性,示例,28/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;tryin=fs.open(newPath(“/input2/file1.txt”);IOUtils.copyBytes(in,System.out,4096,false);finallyIOUtils.closeStream(in);,示例,Hadoop提供IOUtils工具包类来简化I/O操作,30/47,使用FileSystemAPI编程步骤3-3,HadoopFileSystemAPI7-1,常用操作读取创建复制删除重命名查询由FileSystem类提供方法实现上述操作,31/47,HadoopFileSystemAPI7-2,FileSystem类主要方法,32/47,HadoopFileSystemAPI7-3,创建文件创建文件hdfs:/node1:9000/input2/file2.txt,语法,publicFSDataInputStreamcreate(Pathf),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);,HadoopFileSystemAPI7-4,复制文件本地至HDFSHDFS至本地,语法,publicvoidcopyFromLocalFile(PathsrcPath,PathdstPath),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);/复制本地文件至HDFS,HadoopFileSystemAPI7-5,删除文件,语法,publicbooleandelete(Pathf,booleanrecursive),删除非空目录需要指定recursive值为true,35/47,示例,Stringuri=“hdfs:/node1:9000/input3”;Configurationconf=newConfiguration();FileSystemfs=FileSystem.get(conf);Pathf=newPath(uri);fs.delete(f,true);,HadoopFileSystemAPI7-6,重命名文件,语法,publicbooleanrename(PathfromPath,PathtoPath),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);,HadoopFileSystemAPI7-7,文件查询获取文件的FileStatus实例列出目录下所有文件的FileStatus实例查询文件是否存在使用上述语法查询示例36操作后的文件系统目录,语法,publicFileStatusgetFileStatus(Pathf),publicFileStatuslistStatus(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

提交评论