vlambda博客
学习文章列表

HDFS基本使用实践

一. 启动HDFS

$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh

如果已经把/usr/local/hadoop/sbin加入PATH环境变量了,就可以在任意目录下直接输入start-dfs.sh启动HDFS

添加目录至PATH环境变量的方法:

  1. 在shell中输入 vim ~/.bashrc 进入vim编辑器

  2. 按a或i进入编辑模式

  3. 在文件最前面加入如下内容(Ctrl+Shift+v粘贴)
    export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

  4. 然后按Esc键退出插入模式

  5. 输入“:wq”并回车,即保存并退出vim(如果改错了输入“:e!”可放弃修改;不保存退出则输入“:q”)

  6. 回到shell后,输入source ~/.bashrc 使设置生效

设置好以后,就可以在任意目录下使用Hadoop的命令了

启动完成后,可输入命令jps,如果成功启动,应该可以看到 “NameNode”、”DataNode” 和 “SecondaryNameNode”进程

$ jps
6416 DataNode
6196 NameNode
7116 Jps
6685 SecondaryNameNode


二、与HDFS交互的Shell命令

1. 三种使用HDFS的命令:

(1) hadoop fs:适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
(2) hadoop dfs:只能适用于HDFS文件系统
(3) hdfs dfs:跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统
输入如下命令可以查看fs支持哪些命令(在/usr/local/hadoop文件夹下):

$ ./bin/hadoop fs

也可添加-help进一步查看某命令的作用,如查看put命令用法

$ ./bin/hadoop fs -help put

输出

-put [-f] [-p] [-l] [-d] <localsrc> ... <dst> :
Copy files from the local file system into fs. Copying fails if the file already
exists, unless the -f flag is given.
Flags:

-p Preserves access and modification times, ownership and the mode.
-f Overwrites the destination if it already exists.
-l Allow DataNode to lazily persist the file to disk. Forces
replication factor of 1. This flag will result in reduced
durability. Use with care.

-d Skip creation of temporary file(<dst>._COPYING_).

2. 目录操作

在HDFS为hadoop用户(Linux当前登录的账户)创建一个用户目录

$ .bin/hdfs dfs -mkdir -p /user/hadoop

此命令表示在HDFS中创建“/user/hadoop”的目录,“-mkdir”是创建目录的操作,“-p”表示如果是多级目录(“/user/hadoop”就是)则父目录和子目录一起创建(否则出错)。
用“-ls”命令列出文件夾下的內容

$ ./bin/hdfs dfs –ls

要列出指定路徑下的的內容,如/user/hadoop下的

$ ./bin/hdfs dfs –ls /user/hadoop

注意当前文件夹就是/user/hadoop,路径以“/”开头就是绝对路径,没有“/”就是相对路径。
在当前路径下创建名为input的文件夹

$ ./bin/hdfs dfs –mkdir input

删除文件或文件夹用-rm

$ ./bin/hdfs dfs -rm -r input

这条命令中“-r”表示删除目录及其子目录下所有内容(r=recursive)。包含子目录的文件夹必须加“-r”,否则失败。

可以发现,dfs的目录操作命令和Linux的是一致的,不过加了“-”

3. 文件操作

本地文件和HDFS中的文件互传在实际应用中经常发生

(1) 在本地创建文件

在本地新建一个文件。用vim编辑器在“/home/hadoop”目录(绝对路径)下创建一个文件myFile.txt

$ vim /home/hadoop/myFile.txt

按a进入编辑模式,在里面随便输入些内容:

Hello
Old iron
Double click 666

Ese退出编辑模式然后“:wq”保存退出

(2) 将本地文件上传到HDFS

可以用-put命令把刚才的txt文件上传到刚才我们在HDFS中创建的input文件夹中

$ ./bin/hdfs dfs -put /home/hadoop/myFile.txt input

可以用-ls命令查看一下input文件夹

$ ./bin/hdfs dfs -ls input

输出

Found 1 items
-rw-r--r-- 1 hadoop supergroup 32 2020-03-22 21:13 input/myFile.txt

说明上传成功,可以用-cat命令查看其内容

$ ./bin/hdfs dfs -cat input/myFile.txt

输出

Hello
Old iron
Double click 666

(3) 将HDFS的文件下载到本地

用-get命令把刚才上传到HDFS的文件下载到本地的/home/hadoop/Downloads文件夹中

$ ./bin/hdfs dfs -get input/myFile.txt /home/hadoop/Downloads

用ls命令可查看本地目录的文件

$ ls /home/hadoop/Downloads

有myFile.txt说明下载成功
用cat命令查看本地文件内容

$ cat /home/hadoop/Downloads/myFile.txt

输出

Hello
Old iron
Double click 666

(4) HDFS内不同目录间拷贝

在HDFS内新建一个output目录

$ ./bin/hdfs dfs -mkdir output

用-cp命令将myFile从input文件夹拷贝到output文件夹

$ ./bin/hdfs dfs -cp input/myFile.txt output


三、用web界面管理HDFS

http://localhost:50070/

即可进入HDFS的web管理界面



其他常用端口:

HDFS页面:50070
YARN的管理界面:8088
HistoryServer的管理界面:19888
Zookeeper的服务端口号:2181
Mysql的服务端口号:3306
Hive.server1=10000
Kafka的服务端口号:9092
azkaban界面:8443
Hbase界面:16010,60010
Spark的界面:8080
Spark的URL:7077


参考:大数据技术原理与应用-厦门大学林子雨

http://dblab.xmu.edu.cn/blog/290-2/