IDEA远程操作HDFS

news/2024/5/14 16:17:44/文章来源:https://blog.csdn.net/longz_org_cn/article/details/131548148

IDEA远程管理HDFS

本地环境配置

Windows
  1. 解压到本地磁盘

  2. 配置环境变量

  3. 添加winutils.exe和hadoop.dll

    Hadoop本身对Windows的支持并不友好,如果需要完整使用,需要将winutils.exe和hadoop.dll两个文件移动到%HADOOP_HOME%\bin目录

  4. 修改hadoop-env.cmd

    @rem 这个是注释的内容
    @rem 设置JAVA_HOME,使用PROGRA~1表示Program Files文件夹
    set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_311
    
  5. 验证

    hadoop version
    
MacOS
  1. 解压解包

    tar -zxvf hadoop-3.3.1-aarch64 -C /opt/softwares
    
  2. 配置环境变量

    vim ~/.bash_profileexport HADOOP_HOME=/opt/softwares/hadoop-3.3.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOOME/sbin
    
  3. 验证

    hadoop version
    

IDEA创建Maven工程

pom文件
<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.3.1</version></dependency>
</dependencies>

API之文件系统对象

@Test
public void testGetFileSystem() throws IOException {//创建配置对象,用于加载配置信息(四个默认的配置文件:core-default.xml,hdfs-default.xml,mapred-default.xml,yarn-default.xml)Configuration conf = new Configuration();//修改fs.defaultFS属性的值conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");//使用FileSystem类的静态方法get(Configuration conf);返回fs.defaultFS定义的文件系统FileSystem fs = FileSystem.get(conf);System.out.println("文件系统对象的类型名:"+fs.getClass().getName());
}

API之文件上传

@Test
public void testFileUpload() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");FileSystem fs = FileSystem.get(conf);//将本地的一个文件D:/file1,上传到HDFS上 /file1//1. 使用Path描述两个文件Path localPath = new Path("D:/file1");Path hdfsPath = new Path("/file1");//2.调用上传方法fs.copyFromLocalFile(localPath,hdfsPath);//3.关闭fs.close();System.out.println("上传成功");
}

API之文件下载

@Test
public void testFileDownload() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:8020");FileSystem fs = FileSystem.get(conf);//从HDFS上下载一个文件/file1,下载到本地 D:/file2//1. 使用Path描述两个文件Path hdfsfile = new Path("/file1");Path local = new Path("D:/file2");//2. 调用下载方法进行下载fs.copyToLocalFile(hdfsfile,local);fs.close();System.out.println("下载成功");
}

API之创建目录

@Test
public void testMkdir() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");FileSystem fs = FileSystem.get(conf);//1. 测试创建目录,描述一个目录Path hdfsfile = new Path("/dir1");//2. 调用创建目录的方法fs.mkdirs(hdfsfile);fs.close();System.out.println("创建成功");
}

API之删除目录

@Test
public void testDelete() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");FileSystem fs = FileSystem.get(conf);//1. 测试删除目录,描述一个目录Path hdfsfile = new Path("/dir1");//2. 调用创建目录的方法fs.delete(hdfsfile,true);fs.close();System.out.println("删除成功");
}

API之重命名

@Test
public void testRename() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");FileSystem fs = FileSystem.get(conf);//1. 测试重命名,将file1改为file01Path oldName = new Path("/file1");Path newName = new Path("/file01");//2.调用重命名方法fs.rename(oldName,newName);fs.close();System.out.println("命名成功");
}

IOUtil上传文件

@Test
public void putFile() throws IOException, URISyntaxException {	// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");//1 连接HDFS 文件系统	Configuration conf=new Configuration();		//获得文件系统FileSystem fs=FileSystem.get(new URI("hdfs://182.168.10.101:9820"),conf);// 创建输入流,读取输入文件		FileInputStream input=new FileInputStream(new File("c://a.txt"));// 创建输出流FSDataOutputStream out=fs.create(new Path("/gg.txt"));//IO的流拷贝IOUtils.copyBytes(input, out, conf);//关闭资源IOUtils.closeStream(input);IOUtils.closeStream(out);System.out.println("上传完毕");
}

IOUtil下载文件

@Test
public void getFile() throws IOException, URISyntaxException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");// 1 连接HDFS 文件系统Configuration conf = new Configuration();// 获得文件系统FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.101:9820"), conf);// 获取输入流 从HDFS上读取FSDataInputStream  input=fs.open(new Path("/gg.txt"));// 获取输出流FileOutputStream out=new FileOutputStream(new File("c://gg.txt"));//流拷贝IOUtils.copyBytes(input, out, conf);//关闭流IOUtils.closeStream(input);IOUtils.closeStream(out);		System.out.println("下载完成");
}

API之文件状态

@Test
public void testFileStatus() throws IOException {// 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户System.setProperty("HADOOP_USER_NAME", "root");Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");FileSystem fs = FileSystem.get(conf);//1. 描述你要读取的文件 /file02Path path = new Path("/file02");//获取文件的状态信息RemoteIterator<LocatedFileStatus> it = fs.listLocatedStatus(path);while(it.hasNext()){// 取出对象LocatedFileStatus status = it.next();System.out.println("name:"+status.getPath());//获取位置BlockLocation[] locate = status.getBlockLocations();for(BlockLocation bl:locate){System.out.println("当前块的所有副本位置:"+Arrays.toString(bl.getHosts()));System.out.println("当前块大小:"+bl.getLength());System.out.println("当前块的副本的ip地址信息:"+Arrays.toString(bl.getNames()));}System.out.println("系统的块大小:"+status.getBlockSize());System.out.println("文件总长度:"+status.getLen());}
}

更多大数据精彩内容欢迎B站搜索“千锋教育”或者扫码领取全套资料   

【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_326362.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的存储引擎与基本使用讲解

目录 一、前言 1.MySQL的介绍 二、存储引擎 1.什么是存储引擎 2.常见存储引擎 2.1.InnoDB(MySQL默认引擎) 2.1.1.四种隔离级别 2.2.MyISAM存储引擎 2.3.Memory存储引擎 3.ACID事务 三、CRUD操作 1.插入数据 2.查询数据 3.修改数据 4.删除数据 四、数据库 1.默认…

小白开酒吧前要知道的几个知识(四)

第七、岗位分工 酒吧一定要分工明确&#xff0c;各司其职。每一个岗位都有着自己的职责&#xff0c;每一个环节都有所关联&#xff0c;每天上班前需要提前安排好各岗位的工作。团队需要一个规章制度&#xff0c;毕竟没有规矩不成方圆&#xff0c;建立岗位相关的工作制度以及责…

html---链接跳转案例

目录 一、要求&#xff1a;设置一个网页如下图所示&#xff0c;可实现首页、列表页、详情页、登录页链接 二、实现&#xff1a;实现代码及截图如下 三、寄语 一、要求&#xff1a;设置一个网页如下图所示&#xff0c;可实现首页、列表页、详情页、登录页链接 二、实现&…

弃购邮件:用这一招帮您赢回失去的客户

弃购邮件&#xff1a;用这一招帮您赢回失去的客户 弃购邮件是发送给将产品添加至购物车却没有结算的顾客&#xff08;即弃单顾客&#xff09;的邮件。 这是一种十分有效的顾客留存策略。 在线客户放弃购物车的频率比您想象的要高。他们没有完成购买的原因有很多。但是&#xff…

创作神器:探索ai智能绘画软件的魅力与功能

曾经有一个名叫小艾的年轻画家&#xff0c;她对绘画充满热情&#xff0c;并梦想创作出令人惊叹的艺术作品。然而&#xff0c;她发现自己在技术和创意方面遇到了一些困难。正当她感到沮丧时&#xff0c;她听说了一个关于智能ai绘画软件的故事&#xff0c;这个软件据说能够通过机…

Springboot整合Activiti详解

文章目录 版本依赖配置文件需要注意的问题画流程图activiti服务类进行编写流程部署流程定义启动流程流程实例 测试流程启动流程完成任务受理任务 版本依赖 开发工具 IDEASpringBoot 2.4.5&#xff08;这里我试过SpringBoot 3.1.1版本&#xff0c;Activiti没有启动&#xff0c;…

测试开发 —— 快速定位问题

写在前面 这两天工作实在是有点小忙&#xff0c;感觉好久没更新了&#xff0c;但是平时也是有感而发的比较多&#xff0c;今天遇到一个问题&#xff0c;感觉挺有意思&#xff0c;处理过程也非常有意义&#xff0c;希望能给大家一个借鉴吧。 测试平台又又又出问题了 今天一位…

一招教你看懂KMP算法next数组

给两个字符串&#xff0c;一个匹配串&#xff0c;一个主串&#xff0c;我们要在主串中找到第一个匹配串&#xff0c;并全部返回 eg: p"aba"; s"bbabaca"; 那么返回的就是第一个找到的匹配串的下标 返回2; 这里最容易想到的就是暴力匹配了,挨个&#xff0c;…

云原生(第四篇)-k8s yaml文件

Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#xff1a;主要用于 api 接口之间消息的传递 YAML 格式&#xff1a;用于配置和管理&#xff0c;YAML 是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读 YAML 语法格式&#xff1a; ●大小写敏…

还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS!

本文介绍策略模式的具体应用以及Map函数式接口如何 “更完美” 的解决 if-else的问题。 需求 最近写了一个服务&#xff1a;根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则 实现方式&#xff1a; 根据优惠券类型resourceType -> 确定查…

open3D cmake+win10+vs2019编译

已经采用python版open3D实现和验证了功能&#xff0c;但是在C迁移上却遇到了不少问题&#xff1a; 1、可能是与本地的编译器存在差异&#xff0c;在使用open3D git上的winows版本时&#xff0c;存在地址访问冲突和std::bad_alloc等问题。前者在适用IO读写时必现&#xff0c;后者…

最小年龄仅5岁!盘点全球最“天才”少年黑客 TOP 10

你还能想起自己8岁的时候&#xff0c;每天都在玩什么吗&#xff1f;可能是在楼下和小朋友一起捉迷藏&#xff1f;在家追一本连载的漫画书&#xff1f;又或者在电脑上玩种菜偷菜的小游戏&#xff1f; 当同龄人还在沉迷于这些比较“基础”的小游戏时&#xff0c;有这样一批和互联…

Qt-事件(下)(事件过滤、自定义事件)

文章目录 事件过滤自定义事件 事件过滤 event()函数是一个protected的函数&#xff0c;这意味着我们要想重写event()&#xff0c;必须继承一个已有的组件类&#xff0c;——重写其event()函数。event()函数的确有一定的控制&#xff0c;不过有时候我的需求更严格一些&#xff…

完美适配小爱课程表(河南科技学院)

1.前言&#xff1a; 前文请参照我的以前的博客&#xff1a; 青果教务系统适配小爱课程表 本文代码现已开源&#xff1a; 小爱课程表适配gitee小爱课程表适配github 去年的时候试着适配了我们学校的小爱课程表&#xff0c;但是由于水平不够&#xff0c;直接把接口以及参数照搬&a…

react—Hook(2)

6. useMemo—似计算属性 useMemo和useCallback的作用十分类似&#xff0c;只不过它允许记住任何类型的变量&#xff08;useCallback只记住函数&#xff09;。当改变其他变量时&#xff0c;普通函数都会运行&#xff0c;它返回的结果并没有改变。这个时候就可以使用useMemo将函…

Win10资源管理器不停的崩溃重启怎么办?

Win10资源管理器不停的崩溃重启怎么办&#xff1f;资源管理器是Win10系统中负责管理文件和文件夹的核心组件&#xff0c;如果它不断崩溃和重新启动&#xff0c;将严重影响用户的工作效率和系统稳定性&#xff0c;也会感到困扰和烦恼&#xff0c;以下小编给用户们介绍一些方法&a…

多元回归预测 | Matlab基于粒子群算法优化深度置信网络(PSO-DBN)的数据回归预测,matlab代码回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于基于粒子群算法优化深度置信网络(PSO-DBN)的数据回归预测,matlab代码回归预测,多变量输入模型,多变量输入模型 评价

浅谈 JEP290

0x01 前言 属于是拖了很久的文章了&#xff0c;4.18 筹划着开始写&#xff0c;6.22 左右才真正开始提笔。 一开始提到这个概念可能会比较懵逼&#xff0c;其实这就是为什么高版本 jdk 有部分能打 jndi&#xff0c;打不了 RMI 8u121 ~ 8u230 打不了 RMI 0x02 关于 JEP290 J…

小程序开发的未来:人工智能与物联网的结合

微信小程序自上线以来&#xff0c;一直在改变着人们的生活。它可以让你通过微信搜索直接找到你想要的信息&#xff0c;同时也可以让你用微信直接付款&#xff0c;给你的生活带来了极大的便利。同时&#xff0c;小程序的出现也改变了人们获取信息的方式&#xff0c;不需要再像以…