在现代的企业环境中,海量数据超过单台物理计算机的存储能力,分布式文件系统应运而生,对数据分区存储于若干物理主机,管理网络中跨多台计算机存储的文件系统。
HDFS只是分布式文件管理系统中的一种。
基础语法:【hadoop fs 具体命令 、hdfs dfs 具体命令】
两个是完全相同的。
# hdfs dfs -ls URL
# hdfs dfs -mkdir [-p] URL
使用-p参数可以递归创建目录
# hdfs dfs -put <本地路径> <服务器路径>
案例:put将当前/etc/passwd文件上传到文件系统中/usr/hdfs中
# hdfs dfs -put /etc/passwd /usr/hdfs
# hdfs dfs -moveFromLocal <本地路径> <服务器路径>
案例:将当前a.txt文件上传到文件系统中/user/hdfs中
# hdfs dfs -moveFromLocal a.txt /user/hdfs
区别:moveFromLocal和put命令类似,但是源文件【本地文件】拷贝之后自身被删除。
# hdfs dfs -get <文件系统中指定文件> <本地路径>
案例:将/user/hdfs/a.txt文件拷贝到本地
# hdfs dfs -get /user/hdfs/a.txt .
# hdfs dfs -mv <文件系统中源路径> <文件系统中目的路径>
案例:将/user/hdfs/a.txt文件移动到/input目录中
# hdfs dfs -mv /user/hdfs/a.txt /input
# hdfs dfs -rm [-r] p [目标路径]
使用-r参数将当前目录下的所有文件及目录都删除
# hdfs dfs -cp <文件路径/目录路径> <目标路径>
# hdfs dfs -cat <文件路径>
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://172.16.0.4:9000");
FileSystem fs = FileSystem.get(conf);
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://172.16.0.4:9000");
FileSystem fs = FileSystem.get(conf);
Path p = new Path("/user.huzl/a.txt");
FSDataInputStream fsi = fs.open(p);
BufferedReader br = new BufferedReader(new InputStreamReader(fsi));
String str = "";
while ((str = br.readLine()) != null) {
System.out.println(str);
}