开启 HDFS
开启 Hadoop 或 HDFS 的客户端
首先,我们要对 HDFS 进行读写操作的话,我们得先开启一个客户端(Client),因为用户只能通过客户端来进行对 HDFS 的读写操作,如下图所示。
用命令的方式对 HDFS 进行文件的上传或下载之前,我们得先开启一个客户端。
客户端的命令在 hadoop/bin 目录下。
注:.cmd 结尾的命令是 Window 操作系统下对应的命令。
打开 hadoop 命令可以看到这么一句话:
fs run a generic filesystem user client
然后我们再进到 hadoop fs 命令中看一下:
可以看到,HDFS 对文件或目录的操作与 Linux 对文件或目录的操作基本一样,只是前面添加了 hadoop fs 而已。
HDFS 的两种操作方法
HDFS 的命令操作
从上面的图片中我们可以看到有很多对目录或者对文件操作的命令,这里仅举例在 HDFS 上创建目录的命令,其余命令的操作均类似:
hadoop fs -mkdir 路径+目录名
注:所有有关在 HDFS 上的路径均是从根目录开始的绝对路径。
从 hadoop fs -ls / 中我们可以看到 HDFS 的抽象根目录下已经创建了一个 newDir01 子目录,除了使用命令的方式去查看,我们也可以使用 Web 端查看:
Java 操作 HDFS
除了使用命令的方式对 HDFS 进行操作外,我们还可以使用 Java 代码的方式去操作 HDFS,但在使用 Java 去操纵 HDFS 之前,我们需要先准备好操纵 HDFS 所需 Java 依赖包,这里我使用 Maven 去构建项目:
<!-- hadoop 公共依赖 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.7</version>
</dependency>
<!-- hdfs 依赖 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.7</version>
</dependency>
那 Java 代码是如何操作 HDFS 的呢?举个例子,使用代码在 HDFS 的抽象根目录上创建一个 newDir02 目录:
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
//创建一个config对象
Configuration conf = new Configuration();
//创建一个文件系统对象(HDFS的客户端)
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop01:9000"), conf, "hadoop");
//在HFDS上创建一个名为newDir02的目录
fs.mkdirs(new Path("/newDir02/"));
//关闭文件系统对象
fs.close();
}
创建完成后,我们可以在 Web 端查看是否创建成功:
HDFS 上传文件后
假设我们已经从本地上传了一个文件 hadoop.tar.gz 到 HDFS 的 /newDir01/ 目录下,这时我们就可以通过 Web 端查看文件的详细信息了:
文档信息
- 本文作者:Bin Tu
- 本文链接:https://plandocheckaction.github.io/2020/08/04/BigData6-HDFSOperation/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)