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(); } }
                    
                
                
            
        
浙公网安备 33010602011771号