实验2熟悉常用的HDFS操作

这篇具有很好参考价值的文章主要介绍了实验2熟悉常用的HDFS操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.实验目的

(1)理解HDFS在Hadoop体系结构中的角色;

(2)熟练使用HDFS操作常用的Shell命令;

(3)熟悉HDFS操作常用的Java API。

2. 实验平台

(1)操作系统:Linux;

(2)Hadoop版本:2.7.4 ;

(3)JDK版本1.8;

(4)Java IDE:eclipse  。

3. 实验步骤

(一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务:

(1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件

/**
	 * 向HDFS中上传任意文本文件
	 * 如果指定的文件在 HDFS 中已经存在 
	 * 由用户指定是追加到原有文件末尾还是覆盖原有的文件
	 * @param fileSystem
	 * @param srcPath    本地文件地址
	 * @param desPath    HDFS文件地址
	 * @author yangd
	 */
	@Test
	private static void test1(FileSystem fileSystem, Path srcPath, Path desPath) {
		try {
			if (fileSystem.exists(new Path("/a/test.txt"))) {
				System.out.println("文件已存在,是否覆盖原有的文件? ( y 覆盖/n 追加)");
				if (new Scanner(System.in).next().equals("y")) {
					fileSystem.copyFromLocalFile(false, true, srcPath, desPath);
				} else {
					FileInputStream inputStream = new FileInputStream(srcPath.toString());
					FSDataOutputStream outputStream = fileSystem.append(new Path("/test/test.txt"));
					byte[] bytes = new byte[1024];
					int read = -1;
					while ((read = inputStream.read(bytes)) > 0) {
						outputStream.write(bytes, 0, read);
					}
					inputStream.close();
					outputStream.close();
				}
			} else {
				fileSystem.copyFromLocalFile(srcPath, desPath);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

调用方法

public static void main(String args[]) throws IOException {
		// HDFS路径
		Path path1 = new Path("/a/test.txt");
		// 本地路径
		Path path2 = new Path("D:/test.txt");
		System.setProperty("hadoop.home.dir", "D:\\Hadoop2.7.4\\hadoop-2.7.4");
		// 构造一个配置参数对象,设置一个参数:要访问的HDFS的URI
		Configuration conf = new Configuration();
		// 这里指定使用的是HDFS
		conf.set("fs.defaultFS", "hdfs://192.168.121.130:9000");
		// 通过如下的方式进行客户端身份的设置
		System.setProperty("HADOOP_USER_NAME", "root");
		// 通过FileSystem的静态方法获取文件系统客户端对象
		FileSystem fs = FileSystem.get(conf);
		test1(fs, path2, path1);
	}

结果

实验2熟悉常用的HDFS操作

shell

hadoop fs -put /export/data/word.txt /test
hadoop fs -appendToFile /export/data/word.txt /test
hadoop fs -copyFromLocal -f /export/data/word.txt /test

实验2熟悉常用的HDFS操作

实验2熟悉常用的HDFS操作

(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;

/**

    * 从HDFS中下载指定文件 若本地文件与要下载的文件名称相同

    * 则自动对下载的文件重命名

    * @param fileSystem

    * @param remotePath HDFS文件地址

    * @param localPath  本地文件地址

    * @author yangd

    */

   @Test

   private static void test2(FileSystem fileSystem, Path remotePath, Path localPath) {

      try {

          if (fileSystem.exists(remotePath)) {

             if(!(fileSystem.equals(localPath))){

             fileSystem.copyToLocalFile(remotePath, localPath);

             System.out.println("从HDFS中下载文件成功!");

             }else {

                fileSystem.copyToLocalFile(remotePath, new Path("localPath"+ new Random().nextInt() + ".txt"));

                System.out.println("从HDFS中下载文件并重命名成功!");

             }

          } else {

             System.out.println("在HDFS中找不到此文件!");

          }

      }catch (IOException e) {

          e.printStackTrace();

      }

   }

实验2熟悉常用的HDFS操作

实验2熟悉常用的HDFS操作

hadoop fs -copyToLocal /a/test.txt /export/data/test.txt

实验2熟悉常用的HDFS操作

(3)将HDFS中指定文件的内容输出到终端中;

hadoop fs -cat /a/test.txt

实验2熟悉常用的HDFS操作

/**

    * 将HDFS中指定文件的内容输出到终端中

    *

    * @param fileSystem

    * @param remotePath

    * @author yangd

    */

   @Test

   private static void test3(FileSystem fileSystem, Path remotePath) {

      try {

          FSDataInputStream inputStream = fileSystem.open(remotePath);

          BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

          String line;

     System.out.println("HDFS中文件内容为:");

          while ((line = bufferedReader.readLine()) != null) {

             System.out.println(line);

          }



      } catch (IOException e) {

          e.printStackTrace();

      }

   }

实验2熟悉常用的HDFS操作

(4)显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;

/**

    * 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息

    * @param fileSystem

    * @param remotePath HDFS文件地址

    * @author yangd

    */

   private static void test4(FileSystem fileSystem, Path remotePath) {

      try {

          FileStatus[] fileStatus = fileSystem.listStatus(remotePath);

          System.out.println("HDFS中指定的文件的读写权限、大小、创建时间、路径信息如下:");

          for (FileStatus status : fileStatus) {

             System.out.println(status.getPermission());

             System.out.println(status.getBlockSize());

             System.out.println(status.getAccessTime());

             System.out.println(status.getPath());

          }

      } catch (IOException e) {

          e.printStackTrace();

      }

   }

实验2熟悉常用的HDFS操作

实验2熟悉常用的HDFS操作

hadoop fs -ls -h /a/test.txt

实验2熟悉常用的HDFS操作

完整实验过程及源代码和运行结果截图下载链接:
 

  实验2常用的HDFS操作.doc-Linux文档类资源-CSDN文库文章来源地址https://www.toymoban.com/news/detail-417602.html

到了这里,关于实验2熟悉常用的HDFS操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据技术原理及应用课实验2 :熟悉常用的HDFS操作

    实验2  熟悉常用的HDFS操作 目录 实验2  熟悉常用的HDFS操作 一、实验目的 二、实验平台 三、实验步骤(每个步骤下均需有运行截图) (一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务: (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则

    2024年04月14日
    浏览(89)
  • 熟悉常用的HDFS操作(大数据技术原理与应用-第三章实验)

    首先启动Hadoop,命令如下: 在终端输入如下命令,查看 hdfs dfs 总共支持哪些操作: 上述命令执行后,会显示如下的结果: 如果显示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,说明环境变量 JAVA_LIBRARY_PATH 并未定义,首

    2024年02月01日
    浏览(33)
  • 熟悉常用的HDFS操作(附录HDFS常用命令)

    1、理解HDFS在Hadoop体系结构中的角色; 2、熟练使用HDFS操作常用的Shell命令; 3、熟悉HDFS操作常用的Java API 1、编程实现指定功能,并利用Hadoop提供的Shell命令完成相同任务: 2、编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”。 编程实现以下指定

    2023年04月09日
    浏览(34)
  • Hadoop 使用Linux操作系统与Java熟悉常用的HDFS操作

    注意看评论区获取完整代码资料 目录 一、实验目的 二、实验平台 三、实验步骤 理解HDFS在Hadoop体系结构中的角色; 熟练使用HDFS操作常用的Shell命令; 熟悉HDFS操作常用的Java API。 操作系统:Linux(建议Ubuntu16.04); Hadoop版本:2.7.1; JDK版本:1.8或以上版本; Java IDE:Eclipse。

    2024年02月03日
    浏览(42)
  • 实验03熟悉常用的HBase操作

    🌊 Hbase相关配置参考网址: 😈http://dblab.xmu.edu.cn/blog/install-hbase/ 1️⃣ 理解HBase在Hadoop体系结构中的角色; 2️⃣ 熟练使用HBase操作常用的Shell命令; 3️⃣ 熟悉HBase操作常用的Java API; 操作系统:Linux 虚拟机 :ubuntu Hadoop版本:2.7.1 HBase版本:1.1.2 JDK版本:1.8版本 Java IDE:ID

    2023年04月12日
    浏览(66)
  • 实验三:熟悉常用的HBase操作

    完整原版实验报告word文件:实验三:熟悉常用的HBase操作 ————————————————————————————————— \\\"大数据技术原理与应用\\\"课程实验报告 题目:实验三:熟悉常用的HBase操作 姓名:朱小凡 日期:2022/3/29 1、实验环境: 设备名称 LAPTOP-9KJS8HO

    2023年04月08日
    浏览(51)
  • 大数据实验 实验三:熟悉常用的HBase操作

    (1)理解HBase在Hadoop体系结构中的角色; (2)熟练使用HBase操作常用的Shell命令; (3)熟悉HBase操作常用的Java API。 操作系统:centos7; Hadoop版本:3.3; HBase版本:2.2.2; JDK版本:1.8; Java IDE:IDEA。 (1) 列出HBase所有的表的相关信息,例如表名、创建时间等; (2) 在终端

    2024年02月04日
    浏览(34)
  • 云计算 熟悉常用的LINUX操作和hadoop部署相关操作 实验报告

    《云计算系统架构及应用》实验报告 题目: 熟悉常用的LINUX操作和hadoop部署相关操作 姓名 日期 实验环境:  操作系统:Linux Hadoop版本:2.7.3 实验内容与完成情况: (一)熟悉常用的Linux 操作 请按要求上机实践如下linux基本命令。 cd命令:切换目录 (1)切换到目录 /usr/lo

    2024年02月05日
    浏览(30)
  • HBase的编程实践(实验3_熟悉常用的HBase操作)

    一、Hbase中使用Shell命令: ① HBase中创建表:(create 命令:第一个变量是表名,然后是列族名) 语法:create \\\'表名称\\\',\\\'列族名称1\\\',\\\'列族名称2\\\',\\\'列族名称N\\\' 通过命令 describe \\\'student\\\'  进行查看表的结构: (desc ‘表名’,查看表的结构) ✿ 增加数据 ② put: (put 命令:第一

    2024年02月01日
    浏览(32)
  • 云计算于大数据入门实验三——熟悉常用的 HBase 操作

    理解HBase在Hadoop体系结构中的角色 熟练使用HBase操作常用的shell命令 熟悉HBase操作常用的Java API 保存程序,并自行存档 最终的程序都必须经过测试,验证是正确的 按照实验报告格式,认真记录实验过程及结果,回答实验报告中的问题。实验报告模板在学习通的资料里面下载。

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包