HDFS shell操作及HDFS Java API编程
1.熟悉Hadoop文件结构。
2.进行HDFS shell操作。
3.掌握通过Hadoop Java API对HDFS操作。
4.了解Hadoop文件操作原理。
1.查看HDFS的NameNode和DataNode目录结构。
2.通过HDFS shell进行文件上传,目录创建等操作。
3.通过Java API进行文件增删查改操作。
Hdfs shell 操作:
查看hdfs根目录:
Hdfs dfs -ls /
创建文件夹
Hdfs dfs -mkdir /test
移动文件夹
Hdfs dfs -mv /test/test.txt /test1
删除文件或文件夹
Hdfs dfs -rm -r /test1
本地文件上传到hdfs方式一:
Hdfs dfs -put /home/test.txt /puttest
方式二:
Hdfs dfs -copyFromLocal SRC hdfsDST
hdfs上的文件上传到本地
方式一:
Hdfs dfs -get hdfsSRC LocalDST
方式二:
Hdfs dfs -copyToLocal hdfsSRC LocalDST
文件复制
Hdfs dfs -cp SRC DST
文件内容输出
Hdfs dfs -cat URI
改变文件权限
Hdfs dfs -chmod xxx
改变文件所有者Hdfs dfs -chown xxx
显示文件或目录所有内容大小
Hdfs dfs -du [args]
上传测试:
通过Java API进行文件增删查改操作。
下载文件
package putfile;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class HdfsTest {
public static void downFileFormHDFS() throws IOException, URISyntaxException{
// 获得FileSystem对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://10.49.23.127:9000"), new Configuration());
// 调用open方法进行下载,参数HDFS路径
InputStream in = fileSystem.open(new Path("/testdata/data.tsv"));
// 创建输出流,参数指定文件输出地址
OutputStream out = new FileOutputStream("F://data.tsv");
// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置true
IOUtils.copyBytes(in, out, 4096, true);
}
public static void upToHDFS() throws IOException, InterruptedException, URISyntaxException{
// 获得FileSystem对象,指定使用root用户上传
FileSystem fileSystem = FileSystem.get(new URI("hdfs://10.49.23.127:9000"), new Configuration(), "root");
// 创建输入流,参数指定文件输出地址
InputStream in = new FileInputStream("F:\\data.tsv");
// 调用create方法指定文件上传,参数HDFS上传路径
OutputStream out = fileSystem.create(new Path("/putfile"));
// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置true
IOUtils.copyBytes(in, out, 4096, true);
}
public static void deleteFileFromHDFS() throws IOException, InterruptedException, URISyntaxException{
// 获得FileSystem对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://10.49.23.127:9000"), new Configuration(), "root");
// 调用delete方法,删除指定的文件。参数:false:表示是否递归删除
boolean flag = fileSystem.delete(new Path("/putfile"), false);
// 执行结果:true
System.out.println(flag);
}
public static void CatFile() throws IOException, InterruptedException, URISyntaxException{
FileSystem fileSystem = FileSystem.get(new URI("hdfs://10.49.23.127:9000"), new Configuration(), "root");
Path path = new Path("/putfile");
FSDataInputStream fsdis = null;
OutputStream baos = new ByteArrayOutputStream();
String str = null;
try {
fsdis = fileSystem.open(path);
IOUtils.copyBytes(fsdis, baos, 4096, false);
str = baos.toString();
} finally {
IOUtils.closeStream(fsdis);
fileSystem.close();
}
System.out.println(str);
}
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
downFileFormHDFS();
upToHDFS();
// deleteFileFromHDFS();
CatFile();
}
}
上传文件
删除文件
查看文件
转载于:https://www.cnblogs.com/mzc1997/p/9200532.html