一、HDFS常见的Shell操作
1、查看指定路径的信息
hdfs dfs -ls hdfs://bigdata02:9000/
可以简写成 hdfs dfs -ls /
2、从本地上传文件
可以采用put命令进行文件上传
3、可以采用get命令下载文件到本地
4、采用mkdir新建文件夹,要是递归目录,则在ls后面添加-R参数
二、通过java操作HDFS
本地idea运行时候,可能报异常:HADOOP_HOME and hadoop.home.dir are unset
解决方案:Java运行Hadoop发生异常:HADOOP_HOME and hadoop.home.dir are unset_凌冰_的博客-CSDN博客
1、使用java进行文件上传
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.221.131:9000");
FileSystem fileSystem = FileSystem.get(conf);
put(fileSystem);
} catch (Exception e) {
e.printStackTrace();
}
}
//文件上传
private static void put(FileSystem fileSystem) throws IOException{
FSDataOutputStream fos = fileSystem.create(new Path("/user.txt"));
FileInputStream fis = new FileInputStream("D:\\bigdata/user.txt");
IOUtils.copyBytes(fis,fos,1024,true);
}
运行结果:
2、使用java进行文件下载
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.221.131:9000");
FileSystem fileSystem = FileSystem.get(conf);
get(fileSystem);
} catch (Exception e) {
e.printStackTrace();
}
}
//文件下载
private static void get(FileSystem fileSystem) throws IOException{
FSDataInputStream fis = fileSystem.open(new Path("/user.txt"));
FileOutputStream fos = new FileOutputStream("D:\\bigdata/user1.txt");
IOUtils.copyBytes(fis,fos,1024,true);
}
运行结果:
三、实际过程中遇到的问题及解决方案
1.Java运行Hadoop发生异常:HADOOP_HOME and hadoop.home.dir are unset
最终参考如下文章解决:Java运行Hadoop发生异常:HADOOP_HOME and hadoop.home.dir are unset_凌冰_的博客-CSDN博客