From bf90aea602e3cf53df1fdb000b5a2f65d135338b Mon Sep 17 00:00:00 2001
From: luoxiang <2806718453@qq.com>
Date: Sun, 2 Jun 2019 16:31:43 +0800
Subject: [PATCH] modify
---
notes/HDFS-Java-API.md | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/notes/HDFS-Java-API.md b/notes/HDFS-Java-API.md
index 25f2e20..35c2afd 100644
--- a/notes/HDFS-Java-API.md
+++ b/notes/HDFS-Java-API.md
@@ -21,9 +21,7 @@
## 一、 简介
-Hadoop提供了简单易用的Java API用于操作HDFS。通过这些API,我们可以通过编程来更灵活的操作HDFS。同时从编程体验上来说,这些API的设计确实非常人性化,基本上你只需要一行代码就能完成相应的操作。
-
-想要使用HDFS API,你只需要导入`hadoop-client`这个依赖包即可。以下关于API的操作我均使用单元测试的方法进行演示,完整的POM文件如下:
+想要使用HDFS API,需要导入依赖`hadoop-client`。如果是CDH版本的Hadoop,还需要额外指明其仓库地址:
```xml
@@ -77,7 +75,7 @@ Hadoop提供了简单易用的Java API用于操作HDFS。通过这些API,我
### 2.1 FileSystem
-FileSystem是操作HDFS的入口,通过FileSystem我们可以完成对HDFS上文件和目录的所有操作。在使用前需要获取它,这里由于之后的每个单元测试都需要用到FileSystem,所以使用`@Before`注解进行标注。
+FileSystem是所有HDFS操作的主入口。由于之后的每个单元测试都需要用到它,这里使用`@Before`注解进行标注。
```java
private static final String HDFS_PATH = "hdfs://192.168.0.106:8020";
@@ -88,7 +86,7 @@ private static FileSystem fileSystem;
public void prepare() {
try {
Configuration configuration = new Configuration();
- // 这里我启动的是单节点的Hadoop,副本系数可以设置为1,不设置的话默认值为3
+ // 这里我启动的是单节点的Hadoop,所以副本系数设置为1,默认值为3
configuration.set("dfs.replication", "1");
fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration, HDFS_USER);
} catch (IOException e) {
@@ -111,7 +109,7 @@ public void destroy() {
### 2.2 创建目录
-这里目录可以是多级,支持递归创建。
+支持递归创建目录:
```java
@Test
@@ -124,7 +122,7 @@ public void mkDir() throws Exception {
### 2.3 创建指定权限的目录
-这里`FsPermission(FsAction u, FsAction g, FsAction o)` 的三个参数分别对应创建者权限,同组其他用户权限,其他用户权限,可以使用`FsAction`枚举类中的值进行指定。
+`FsPermission(FsAction u, FsAction g, FsAction o)` 的三个参数分别对应:创建者权限,同组其他用户权限,其他用户权限,权限值定义在`FsAction`枚举类中。
```java
@Test
@@ -169,7 +167,7 @@ public void exist() throws Exception {
### 2.6 查看文件内容
-这里我们查看的是一个小文件的内容,所以直接转换成字符串后输出,对于大文件,还是应该从输出流中读取数据,分批处理。
+查看小文本文件的内容,直接转换成字符串后输出:
```java
@Test
@@ -180,7 +178,7 @@ public void readToString() throws Exception {
}
```
-inputStreamToString 是一个自定义方法,实现如下:
+`inputStreamToString`是一个自定义方法,代码如下:
```java
/**
@@ -314,7 +312,7 @@ public void listFiles() throws Exception {
}
```
-FileStatus中包含了文件的基本信息,比如文件路径,是否是文件夹,修改时间,访问时间,所有者,所属组,文件权限,是否是符号链接等,输出内容示例如下(这里为了直观,我对输出进行了换行显示):
+`FileStatus`中包含了文件的基本信息,比如文件路径,是否是文件夹,修改时间,访问时间,所有者,所属组,文件权限,是否是符号链接等,输出内容示例如下:
```properties
FileStatus{
@@ -343,7 +341,7 @@ public void listFilesRecursive() throws Exception {
}
```
-这里输出和上面类似,只是多了文本大小,副本系数,块大小等信息。
+和上面输出类似,只是多了文本大小,副本系数,块大小信息。
```properties
LocatedFileStatus{
@@ -375,16 +373,16 @@ public void getFileBlockLocations() throws Exception {
}
```
-块输出信息比较简单,第一个值是文件的起始偏移量(offset),第二个值是文件大小(length),第三个是块所在的主机名(hosts)。
+块输出信息有三个值,分别是文件的起始偏移量(offset),文件大小(length),块所在的主机名(hosts)。
```
0,57028557,hadoop001
```
-这里我上传的文件比较小,只有57M(小于128M),且程序中设置了副本系数为1,所有只有一个块信息,如果文件很大,则这里会输出文件所有块的信息。
+这里我上传的文件只有57M(小于128M),且程序中设置了副本系数为1,所有只有一个块信息。
-**以上所有测试用例可以从本仓库进行下载**:[HDFS Java API](https://github.com/heibaiying/BigData-Notes/tree/master/code/Hadoop/hdfs-java-api)
+**以上所有测试用例下载地址**:[HDFS Java API](https://github.com/heibaiying/BigData-Notes/tree/master/code/Hadoop/hdfs-java-api)
\ No newline at end of file