Hadoop_JAVA操作HDFS
之前已经在虚拟机上安装好了hadoop,下面纪录下用java操作hdfs和中间遇到的一些问题,使用的是伪分布式模式
一 本地配置hadoop环境变量
此处默认已经具备jdk环境.
将hadoop的压缩包解压到任意目录
在环境变量中配置HADOOP_HOME变量,值为hadoop所在的目录
二、编写测试类
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.junit.Before; import org.junit.Test; import java.net.URI; public class JavaToHDFS { // 定义类变量:文件系统,用来链接hdfs FileSystem fs = null; //预处理,链接hdfs @Before public void init() throws Exception { fs = FileSystem.get(new URI("hdfs://192.168.10.102:9000"), new Configuration(), "root"); } @Test public void mkdir() { System.out.println(fs); } }
测试会发现会报一个这样的错误
这是因为在本地运行hadoop程序需要依赖一些依赖库和工具类,需要工具的可以直接搜索你对应Hadoop版本的winutils.exe
下载完后吧他bin里面的文件全部拷贝到Hadoop的bin文件中
添加完后就可以正常运行了
三、简单操作HDFS
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.junit.Before; import org.junit.Test; import java.net.URI; public class JavaToHDFS { // 定义类变量:文件系统,用来链接hdfs FileSystem fs = null; //预处理,链接hdfs @Before public void init() throws Exception { fs = FileSystem.get(new URI("hdfs://192.168.10.102:9000"), new Configuration(), "root"); } @Test public void mkdir() { System.out.println(fs); } } //创建文件夹 @Test public void MKDir() { boolean flag = false; try { flag = fs.mkdirs(new Path("/aaa")); System.out.println(flag); } catch (IOException e) { e.printStackTrace(); } } //删除文件夹 @Test public void testDel() { boolean flag = false; try { flag = fs.delete(new Path("/123.log"), true); System.out.println(flag); } catch (IOException e) { e.printStackTrace(); } } //上传文件 @Test public void testUpload() { try { InputStream in = new FileInputStream("D:\\Hadoop\\123.log"); OutputStream out = fs.create(new Path("/123.log")); IOUtils.copyBytes(in, out, 1024, true); } catch (IOException e) { e.printStackTrace(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构