首页 > 代码库 > 【Hadoop】HDFS客户端开发示例
【Hadoop】HDFS客户端开发示例
1、原理、步骤
2、HDFS客户端示例代码
package com.ares.hadoop.hdfs;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.net.URISyntaxException;import org.apache.commons.io.IOUtils;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.LocatedFileStatus;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.RemoteIterator;import org.apache.log4j.Logger;import org.junit.After;import org.junit.Before;import org.junit.Test;public class HDFSTest { private static final Logger LOGGER = Logger.getLogger(HDFSTest.class); private FileSystem fs = null; @Before public void setUp() throws IOException, URISyntaxException, InterruptedException { Configuration conf = new Configuration();// conf.set("fs.defaultFS", "hdfs://HADOOP-NODE1:9000");// URI uri = new URI("hdfs://HADOOP-NODE1:9000");// this.fs = FileSystem.get(uri, conf, "HADOOP"); this.fs = FileSystem.get(conf); } @After public void tearDown() throws IOException { // TODO Auto-generated method stub this.fs.close(); } @Test public void testGET() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: GET FILE TEST"); Path path = new Path("hdfs://HADOOP-NODE1:9000/jdk-7u60-linux-x64.tar.gz"); FSDataInputStream fsDataInputStream = this.fs.open(path); FileOutputStream fileOutputStream = new FileOutputStream("./testdata/get-test-jdk.tar.gz"); IOUtils.copy(fsDataInputStream, fileOutputStream); } @Test public void testPUT() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: PUT FILE TEST"); Path path = new Path("hdfs://HADOOP-NODE1:9000/put-test-jdk.tar.gz"); FSDataOutputStream fsDataOutputStream = this.fs.create(path); FileInputStream fileInputStream = new FileInputStream("./testdata/test-jdk.tar.gz"); IOUtils.copy(fileInputStream, fsDataOutputStream); } @Test public void testGET_NEW() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: GET_NEW FILE TEST"); Path src = new Path("hdfs://HADOOP-NODE1:9000/jdk-7u60-linux-x64.tar.gz"); Path dst = new Path("./testdata/get-test-new-jdk.tar.gz"); this.fs.copyToLocalFile(src, dst); } @Test public void testPUT_NEW() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: PUT_NEW FILE TEST"); Path src = new Path("./testdata/test-jdk.tar.gz"); Path dst = new Path("hdfs://HADOOP-NODE1:9000/put-test-new-jdk.tar.gz"); this.fs.copyFromLocalFile(src , dst); } @Test public void testMKDIR() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: MKDIR TEST"); Path f = new Path("/mkdir-test/testa/testb"); this.fs.mkdirs(f); } @Test public void testRM() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: RM TEST"); Path f = new Path("/mkdir-test"); this.fs.delete(f, true); } @Test public void testLIST() throws IOException { // TODO Auto-generated method stub LOGGER.debug("HDFSTest: LIST TEST"); Path f = new Path("/"); //LIST FILES RemoteIterator<LocatedFileStatus> files = this.fs.listFiles(f, true); while (files.hasNext()) { LocatedFileStatus file = files.next(); LOGGER.debug(file.getPath()); LOGGER.debug(file.getPath().getName()); } //LIST DIRS FileStatus[] files2 = this.fs.listStatus(f);// for (int i = 0; i < files2.length; i++) {// LOGGER.debug(files2[i].getPath().getName());// } for (FileStatus fileStatus : files2) { LOGGER.debug(fileStatus.getPath().getName()); LOGGER.debug(fileStatus.isDirectory()); } }}
【Hadoop】HDFS客户端开发示例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。