educoder平台分布式文件系统HDFS
实验一 HDFS 的基本操作 pwd 回车 cd / 回车 mkdir /develop 回车 mkdir /dev 回车 mkdir /develop/ 回车 mkdir /develop/output 回车 start-dfs.sh 回车 hadoop fs-mkdir /usr 回车 hadoop fs-mkdir /usr/ 回车 hadoop fs-mkdir /usr/output 回车 hadoop fs-ls / 回车 hadoop fs-ls /usr 回车 cd /dev 回车 cd /develop/ 回车 touch helloworld.txt 回车 vim helloworld.txt 回车 hello hadoop 退出:wq hadoop fs-put helloworld.txt /usr/output 回车 hadoop fs-cat/usr/output/helloworld.txt 回车 hadoop fs-ls /user/hadoop 回车 hadoop fs-ls / 回车 hadoop fs-ls /usr 回车 hadoop fs-ls /user 回车 hadoop fs-mv /usr/output/helloworld.txt / 回车 hadoop fs-ls / 回车 hadoop fs-rm /helloworld.txt 回车 hadoop fs-mkdir /usr/output 回车 touch hello.txt 回车 vim hello.txt 回车 HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。 退出 wq hadoop fs-put hello.txt /usr/output 回车 hadoop fs-ls /usr/output 回车 hadoop fs-rm -r /user/hadoop 回车 hadoop fs-get /usr/output/hello.txt /usr/local 回车 ls /usr/local 测评 ——————————————————————————————————————— 实验二 第 2 关:HDFS-JAVA接口之读取文件 先设置命令行 public static void main(String[] args) throws IOException { /********* Begin *********/ URI uri = URI.create(“hdfs://localhost:9000/user/hadoop/task.txt“); Configuration config = new Configuration(); FileSystem fs = FileSystem.get(uri, config); Stream in = null; try { in = fs.open(new Path(uri)); IOUtils.copyBytes(in, System.out, 2048, false); } catch (Exception e) { IOUtils.closeStream(in); } /********* End *********/ } } shell 指令: start-dfs.sh 回车 touch test.txt 回车 vim test.txt 独坐池塘如虎踞,绿荫树下养精神。 春来我不先开口,哪个虫儿敢作声。 退出 wq 测评 ——————————————————————————————————————— 实验三 HDFS-JAVA接口之上传文件 先设置命令行 public class FileSystemUpload { public static void main(String[] args) throws IOException { /********* Begin *********/ File localPath = new File(“/develop//hello.txt“); String hdfsPath = “hdfs://localhost:9000/user/tmp/hello.txt“; Stream in = new BufferedStream(new FileStream(localPath)); Configuration config = new Configuration(); FileSystem fs = FileSystem.get(URI.create(hdfsPath),config); long fileSize = localPath.length() 65536 ? localPath.length() / 65536 :1; FSDataOutputStream out = fs.create(new Path(hdfsPath),new Progressable(){ long fileCount = 0; public void progress(){ System.out.println(“总进度“+ (fileCount / fileSize) * 100 + “%“); fileCount++; } }); IOUtils.copyBytes(in,out,2048,true); /********* End *********/ } } shell 指令: mkdir /develop 回车 mkdir /develop/ 回车 cd /develop/ 回车 touch hello.txt 回车 vim hello.txt 迢迢牵牛星,皎皎河汉女。 纤纤擢素手,札札弄机杼。 终日不成章,泣涕零如雨。 河汉清且浅,相去复几许? 盈盈一水间,脉脉不得语。 《迢迢牵牛星》 wq 保存退出 start-dfs.sh 测评 ——————————————————————————————————————— 实验四 HDFS-JAVA接口之删除文件 先设置命令行 public class FileSystemDelete { public static void main(String[] args) throws IOException { /********* Begin *********/ String uri = “hdfs://localhost:9000/“; String path1 = “hdfs://localhost:9000/tmp“; String path2 = “hdfs://localhost:9000/user/hadoop“; String path3 = “hdfs://localhost:9000/tmp/test“; String path4 = “hdfs://localhost:9000/usr“; Configuration config = new Configuration(); FileSystem fs = Fi