实验3-熟悉常用的HDFS操作-答案_第1页
实验3-熟悉常用的HDFS操作-答案_第2页
实验3-熟悉常用的HDFS操作-答案_第3页
实验3-熟悉常用的HDFS操作-答案_第4页
实验3-熟悉常用的HDFS操作-答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上实验2熟悉常用的HDFS操作1 实验目的1.理解HDFS在Hadoop体系结构中的角色;2.熟练使用HDFS操作常用的Shell命令;3.熟悉HDFS操作常用的Java API。2 实验平台操作系统:LinuxHadoop版本:或以上版本JDK版本:或以上版本Java IDE:Eclipse3 实验内容和要求1. 编程实现以下指定功能,并利用Hadoop提供的Shell命令完成相同任务:提示:1) 部分Shell命令的参数路径只能是本地路径或者HDFS路径。2) 若Shell命令的参数既可以是本地路径,也可以是HDFS路径时,务必注意区分。为保证操作正确,可指定路径前

2、缀 或者 注意区分相对路径与绝对路径3) 具体命令的说明可参考教材或 (1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;Shell命令:检查文件是否存在: ./hdfs dfs -test -e (执行完这一句不会输出结果,需要继续输入命令" echo $")追加命令: ./hdfs dfs -appendToFile 覆盖命令1: ./hdfs dfs -copyFromLocal -f 覆盖命令2: ./hdfs dfs -cp -f 也可以使用如下命令实现:(如下代码可视为一行代码,在终端中输入

3、第一行代码后,直到输入 fi 才会真正执行):if $(./hdfs dfs -test -e ;then $(./hdfs dfs -appendToFile ;else $(./hdfs dfs -copyFromLocal -f ;fiJava代码:import .*;public class HDFSApi /* * 判断路径是否存在 */ public static boolean test(Configuration conf, String path) throws IOException FileSystem fs = (conf); return (new Path(path

4、); /* * 复制文件到指定路径 * 若路径已存在,则进行覆盖 */ public static void copyFromLocalFile(Configuration conf, String localFilePath, String remoteFilePath) throws IOException FileSystem fs = (conf); Path localPath = new Path(localFilePath); Path remotePath = new Path(remoteFilePath); /* 第一个参数表示是否删除源文件,第二个参数表示是否覆盖 */

5、(false, true, localPath, remotePath); (); /* * 追加文件内容 */ public static void appendToFile(Configuration conf, String localFilePath, String remoteFilePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); /* 创建一个文件读入流 */ FileInputStream in = new FileInputStream(lo

6、calFilePath); /* 创建一个文件输出流,输出的内容将追加到文件末尾 */ FSDataOutputStream out = (remotePath); /* 读写文件内容 */ byte data = new byte1024; int read = -1; while ( (read = (data) > 0 ) (data, 0, read); (); (); (); /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); (""

7、;,"");String localFilePath = "/home/hadoop/" ; else + " 不存在.");/* 进行处理 */if ( !fileExists) (2)hdfs dfs -test -e ;then $(./hdfs dfs -copyToLocal ./; else $(./hdfs dfs -copyToLocal ./; fiJava代码:import .*;public class HDFSApi /* * 下载文件到本地 * 判断本地路径是否已存在,若已存在,则自动进行重命名 */ pub

8、lic static void copyToLocal(Configuration conf, String remoteFilePath, String localFilePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); File f = new File(localFilePath); /* 如果文件名存在,自动重命名(在文件名后面加上 _0, _1 .) */ if () + " 已存在."); Integer i = 0; whil

9、e (true) f = new File(localFilePath + "_" + (); if (!() localFilePath = localFilePath + "_" + (); break; "将重新命名为: " + localFilePath); (3)hdfs dfs -cat Java代码:import .*;public class HDFSApi /* * 读取文件内容 */ public static void cat(Configuration conf, String remoteFilePath)

10、throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); FSDataInputStream in = (remotePath); BufferedReader d = new BufferedReader(new InputStreamReader(in); String line = null; while ( (line = () != null ) (); (); (); /* * 主函数 */public static void main(String args) Co

11、nfiguration conf = new Configuration(); ("","");String remoteFilePath = "/user/hadoop/" (4)hdfs dfs -ls -h Java代码:import .*;import class HDFSApi /* * 显示指定文件的信息 */ public static void ls(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = (conf);

12、 Path remotePath = new Path(remoteFilePath); FileStatus fileStatuses = (remotePath); for (FileStatus s : fileStatuses) "路径: " + ().toString(); "权限: " + ().toString(); "大小: " + (); /* 返回的是时间戳,转化为时间日期格式 */ Long timeStamp = (); SimpleDateFormat format = new SimpleDateForma

13、t("yyyy-MM-dd HH:mm:ss"); String date = (timeStamp); "时间: " + date); (); /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteFilePath = "/user/hadoop/" (5)hdfs dfs -ls -R -h /user/hadoopJava代

14、码:import .*;import class HDFSApi /* * 显示指定文件夹下所有文件的信息(递归) */ public static void lsDir(Configuration conf, String remoteDir) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); /* 递归获取目录下的所有文件 */ RemoteIterator<LocatedFileStatus> remoteIterator = (dirPath, true); /* 输

15、出每个文件的信息 */ while () FileStatus s = (); "路径: " + ().toString(); "权限: " + ().toString(); "大小: " + (); /* 返回的是时间戳,转化为时间日期格式 */ Long timeStamp = (); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = (timeStamp); "时间: "

16、 + date); (); /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteDir = "/user/hadoop" (6)hdfs dfs -test -d dir1/dir2);then $(./hdfs dfs -touchz dir1/dir2/filename); else $(./hdfs dfs -mkdir -p dir1/dir2 &&a

17、mp; hdfs dfs -touchz dir1/dir2/filename); fi删除文件:./hdfs dfs -rm dir1/dir2/filenameJava代码:import .*;public class HDFSApi /* * 判断路径是否存在 */ public static boolean test(Configuration conf, String path) throws IOException FileSystem fs = (conf); return (new Path(path); /* * 创建目录 */ public static boolean m

18、kdir(Configuration conf, String remoteDir) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); boolean result = (dirPath); (); return result; /* * 创建文件 */ public static void touchz(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = (conf); Path r

19、emotePath = new Path(remoteFilePath); FSDataOutputStream outputStream = (remotePath); (); (); /* * 删除文件 */ public static boolean rm(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); boolean result = (remotePath, false);

20、(); return result; /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteFilePath = "/user/hadoop/input/" (7)hdfs dfs -mkdir -p dir1/dir2删除目录(如果目录非空则会提示not empty,不执行删除):./hdfs dfs -rmdir dir1/dir2强制删除目录:./hdfs dfs

21、 -rm -R dir1/dir2Java代码:import .*;public class HDFSApi /* * 判断路径是否存在 */ public static boolean test(Configuration conf, String path) throws IOException FileSystem fs = (conf); return (new Path(path); /* * 判断目录是否为空 * true: 空,false: 非空 */ public static boolean isDirEmpty(Configuration conf, String remo

22、teDir) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); RemoteIterator<LocatedFileStatus> remoteIterator = (dirPath, true); return !(); /* * 创建目录 */ public static boolean mkdir(Configuration conf, String remoteDir) throws IOException FileSystem fs = (conf); Path d

23、irPath = new Path(remoteDir); boolean result = (dirPath); (); return result; /* * 删除目录 */ public static boolean rmDir(Configuration conf, String remoteDir) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); /* 第二个参数表示是否递归删除所有文件 */ boolean result = (dirPath, true); (); ret

24、urn result; /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteDir = "/user/hadoop/input" (8)hdfs dfs -appendToFile 追加到文件开头:(由于没有直接的命令可以操作,方法之一是先移动到本地进行操作,再进行上传覆盖):./hdfs dfs -get cat >> ./hdfs dfs -copyF

25、romLocal -f Java代码:import .*;public class HDFSApi /* * 判断路径是否存在 */ public static boolean test(Configuration conf, String path) throws IOException FileSystem fs = (conf); return (new Path(path); /* * 追加文本内容 */ public static void appendContentToFile(Configuration conf, String content, String remoteFil

26、ePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); /* 创建一个文件输出流,输出的内容将追加到文件末尾 */ FSDataOutputStream out = (remotePath); (); (); (); /* * 追加文件内容 */ public static void appendToFile(Configuration conf, String localFilePath, String remoteFilePath) throws IOExce

27、ption FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); /* 创建一个文件读入流 */ FileInputStream in = new FileInputStream(localFilePath); /* 创建一个文件输出流,输出的内容将追加到文件末尾 */ FSDataOutputStream out = (remotePath); /* 读写文件内容 */ byte data = new byte1024; int read = -1; while ( (read = (data) > 0

28、) (data, 0, read); (); (); (); /* * 移动文件到本地 * 移动后,删除源文件 */ public static void moveToLocalFile(Configuration conf, String remoteFilePath, String localFilePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); Path localPath = new Path(localFilePath); (remotePath,

29、 localPath); /* * 创建文件 */ public static void touchz(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = (conf); Path remotePath = new Path(remoteFilePath); FSDataOutputStream outputStream = (remotePath); (); (); /* * 主函数 */public static void main(String args) Configuration

30、conf = new Configuration(); ("","");String remoteFilePath = "/user/hadoop/" (9)hdfs dfs -rm Java命令:import .*;public class HDFSApi /* * 删除文件 */ public static boolean rm(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = (conf); Path remotePath

31、= new Path(remoteFilePath); boolean result = (remotePath, false); (); return result; /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteFilePath = "/user/hadoop/" (10)hdfs dfs -rmdir dir1/dir2强制删除目录:./hdfs dfs

32、-rm -R dir1/dir2Java代码:import .*;public class HDFSApi /* * 判断目录是否为空 * true: 空,false: 非空 */ public static boolean isDirEmpty(Configuration conf, String remoteDir) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); RemoteIterator<LocatedFileStatus> remoteIterator = (d

33、irPath, true); return !(); /* * 删除目录 */ public static boolean rmDir(Configuration conf, String remoteDir, boolean recursive) throws IOException FileSystem fs = (conf); Path dirPath = new Path(remoteDir); /* 第二个参数表示是否递归删除所有文件 */ boolean result = (dirPath, recursive); (); return result; /* * 主函数 */pub

34、lic static void main(String args) Configuration conf = new Configuration(); ("","");String remoteDir = "/user/hadoop/input" (11)hdfs dfs -mv Java代码:import .*;public class HDFSApi /* * 移动文件 */ public static boolean mv(Configuration conf, String remoteFilePath, String rem

35、oteToFilePath) throws IOException FileSystem fs = (conf); Path srcPath = new Path(remoteFilePath); Path dstPath = new Path(remoteToFilePath); boolean result = (srcPath, dstPath); (); return result; /* * 主函数 */public static void main(String args) Configuration conf = new Configuration(); ("","");String remoteFilePath = "" 2.;public class MyFSDa

温馨提示

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

评论

0/150

提交评论