配置workers
[muyi@hadoop102 hadoop]$ vim workers
hadoop102
hadoop103
hadoop104
注意
:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
将workers
分发到其他机器上
[muyi@hadoop102 hadoop]$ xsync workers
==================== hadoop102 ====================
sending incremental file list
sent 58 bytes received 12 bytes 46.67 bytes/sec
total size is 30 speedup is 0.43
==================== hadoop103 ====================
sending incremental file list
workers
sent 135 bytes received 41 bytes 117.33 bytes/sec
total size is 30 speedup is 0.17
==================== hadoop104 ====================
sending incremental file list
workers
sent 135 bytes received 41 bytes 117.33 bytes/sec
total size is 30 speedup is 0.17
[muyi@hadoop102 hadoop]
启动集群
格式化NameNode
如果集群是第一次启动
,需要在 hadoop102 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
[muyi@hadoop102 hadoop]$ hdfs namenode -format
启动HDFS
[muyi@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
Starting namenodes on [hadoop102]
Starting datanodes
hadoop104: WARNING: /opt/module/hadoop-3.1.3/logs does not exist. Creating.
hadoop103: WARNING: /opt/module/hadoop-3.1.3/logs does not exist. Creating.
Starting secondary namenodes [hadoop104]
[muyi@hadoop102 hadoop-3.1.3]$ jps
3010 DataNode
3289 Jps
2879 NameNode
[muyi@hadoop102 hadoop-3.1.3]$
Web 端查看 HDFS 的 NameNode
浏览器中输入:http://hadoop102:9870
查看HDFS上存储的数据信息
在配置了ResoruceManager的节点(hadoop103)
启动YARN
[muyi@hadoop103 hadoop]$ jps
2632 DataNode
2712 Jps
[muyi@hadoop103 hadoop]$ cd ..
[muyi@hadoop103 etc]$ cd ..
[muyi@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
Starting resourcemanager
Starting nodemanagers
[muyi@hadoop103 hadoop-3.1.3]$ jps
2993 ResourceManager
3461 Jps
2632 DataNode
3113 NodeManager
[muyi@hadoop103 hadoop-3.1.3]$
Web端查看YARN的ResourceManager
浏览器中输入:http://hadoop103:8088
集群基本测试
创建目录
[muyi@hadoop102 ~]$ hadoop fs -mkdir /wcinput
上传文件到集群
上传小文件
[muyi@hadoop102 hadoop-3.1.3]$ cat wcinput/word.txt
hadoop yarn
hadoop mapreduce
myyi
muyi
[muyi@hadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/word.txt /wcinput
2024-11-12 08:09:59,108 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
[muyi@hadoop102 hadoop-3.1.3]$
上传大文件
[muyi@hadoop102 hadoop-3.1.3]$ ls -lh /opt/software/jdk-8u212-linux-x64.tar.gz
-rw-rw-r--. 1 muyi muyi 186M 11月 10 07:24 /opt/software/jdk-8u212-linux-x64.tar.gz
[muyi@hadoop102 hadoop-3.1.3]$ hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /wcinput
2024-11-12 08:13:36,265 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2024-11-12 08:13:39,637 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
[muyi@hadoop102 hadoop-3.1.3]$
上传文件后查看文件存放在什么位置
查看HDFS文件存储路径
[muyi@hadoop102 subdir0]$ ll
总用量 191944
-rw-rw-r--. 1 muyi muyi 39 11月 12 08:10 blk_1073741825
-rw-rw-r--. 1 muyi muyi 11 11月 12 08:10 blk_1073741825_1001.meta
-rw-rw-r--. 1 muyi muyi 134217728 11月 12 08:13 blk_1073741826
-rw-rw-r--. 1 muyi muyi 1048583 11月 12 08:13 blk_1073741826_1002.meta
-rw-rw-r--. 1 muyi muyi 60795424 11月 12 08:13 blk_1073741827
-rw-rw-r--. 1 muyi muyi 474975 11月 12 08:13 blk_1073741827_1003.meta
[muyi@hadoop102 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1313339516-192.168.10.102-1731368209168/current/finalized/subdir0/subdir0
查看 HDFS 在磁盘存储文件内容
[muyi@hadoop102 subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce
myyi
muyi
[muyi@hadoop102 subdir0]$
拼接
我们之前上传了一份jdk的压缩包,那么我们怎么查看呢,我们就使用拼接
[muyi@hadoop102 subdir0]$ ll
总用量 191944
-rw-rw-r--. 1 muyi muyi 39 11月 12 08:10 blk_1073741825
-rw-rw-r--. 1 muyi muyi 11 11月 12 08:10 blk_1073741825_1001.meta
-rw-rw-r--. 1 muyi muyi 134217728 11月 12 08:13 blk_1073741826
-rw-rw-r--. 1 muyi muyi 1048583 11月 12 08:13 blk_1073741826_1002.meta
-rw-rw-r--. 1 muyi muyi 60795424 11月 12 08:13 blk_1073741827
-rw-rw-r--. 1 muyi muyi 474975 11月 12 08:13 blk_1073741827_1003.meta
[muyi@hadoop102 subdir0]$ cat blk_1073741826 >> tmp.tar.gz
[muyi@hadoop102 subdir0]$ cat blk_1073741827 >> tmp.tar.gz
[muyi@hadoop102 subdir0]$ ll
总用量 585160
-rw-rw-r--. 1 muyi muyi 39 11月 12 08:10 blk_1073741825
-rw-rw-r--. 1 muyi muyi 11 11月 12 08:10 blk_1073741825_1001.meta
-rw-rw-r--. 1 muyi muyi 134217728 11月 12 08:13 blk_1073741826
-rw-rw-r--. 1 muyi muyi 1048583 11月 12 08:13 blk_1073741826_1002.meta
-rw-rw-r--. 1 muyi muyi 60795424 11月 12 08:13 blk_1073741827
-rw-rw-r--. 1 muyi muyi 474975 11月 12 08:13 blk_1073741827_1003.meta
-rw-rw-r--. 1 muyi muyi 195013152 11月 12 08:29 tmp.tar.gz
[muyi@hadoop102 subdir0]$ tar -zxvf tmp.tar.gz
[muyi@hadoop102 subdir0]$ ll
总用量 585160
-rw-rw-r--. 1 muyi muyi 39 11月 12 08:10 blk_1073741825
-rw-rw-r--. 1 muyi muyi 11 11月 12 08:10 blk_1073741825_1001.meta
-rw-rw-r--. 1 muyi muyi 134217728 11月 12 08:13 blk_1073741826
-rw-rw-r--. 1 muyi muyi 1048583 11月 12 08:13 blk_1073741826_1002.meta
-rw-rw-r--. 1 muyi muyi 60795424 11月 12 08:13 blk_1073741827
-rw-rw-r--. 1 muyi muyi 474975 11月 12 08:13 blk_1073741827_1003.meta
drwxr-xr-x. 7 muyi muyi 245 4月 2 2019 jdk1.8.0_212
-rw-rw-r--. 1 muyi muyi 195013152 11月 12 08:29 tmp.tar.gz
[muyi@hadoop102 subdir0]$
因为Hadoop集群具有高可用性,当我们一台主机无法使用时,可以从集群中的其他主机获取文件
可以从上图看到,我们有三台主机,所以文件有三个副本
执行wordcount程序
[muyi@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput
我们可以看到有一个任务在运行
wcoutput目录下也产生了相应的文件
当然,我们也可以指定文件
[muyi@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput/word.txt /wcoutput
下载
使用 -get
选项
hadoop fs -get <src> <localdst>
或
hdfs dfs -get <src> <localdst>
使用 -copyToLocal
选项
hadoop fs -copyToLocal <src> <localdst>
或
hdfs dfs -copyToLocal <src> <localdst>
其中:
<src>
: 指定HDFS上的源文件或目录路径。<localdst>
: 指定本地的目标路径。
[muyi@hadoop102 module]$ mkdir copy_file
[muyi@hadoop102 module]$ ll
总用量 0
drwxrwxr-x. 2 muyi muyi 6 11月 12 08:48 copy_file
drwxr-xr-x. 13 muyi muyi 204 11月 12 07:36 hadoop-3.1.3
drwxr-xr-x. 7 muyi muyi 245 4月 2 2019 jdk1.8.0_212
[muyi@hadoop102 module]$ hadoop fs -get /wcinput/word.txt ./copy_file/word_copy.txt
2024-11-12 08:48:29,520 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
[muyi@hadoop102 module]$ ll
总用量 0
drwxrwxr-x. 2 muyi muyi 27 11月 12 08:48 copy_file
drwxr-xr-x. 13 muyi muyi 204 11月 12 07:36 hadoop-3.1.3
drwxr-xr-x. 7 muyi muyi 245 4月 2 2019 jdk1.8.0_212
[muyi@hadoop102 module]$ cat copy_file/word_copy.txt
hadoop yarn
hadoop mapreduce
myyi
muyi
[muyi@hadoop102 module]$
删除
hadoop fs -rm [-skipTrash] <path>...
这里的参数解释如下:
<path>
: 指定你想要删除的HDFS路径,可以是一个文件或者是一个目录。-skipTrash
: 如果加上这个选项,文件或目录将直接被永久删除,不会经过回收站(Trash)。如果不加此选项,默认情况下,删除的文件会被移动到用户的.Trash
目录下,这样用户可以在一定时间内恢复这些文件。
[muyi@hadoop102 module]$ hadoop fs -rm -skipTrash /wcoutput
rm: `/wcoutput': Is a directory
[muyi@hadoop102 module]$ hadoop fs -rm -r -skipTrash /wcoutput
Deleted /wcoutput
[muyi@hadoop102 module]$
当你尝试删除一个目录时,如果该目录不是空的,你需要使用递归选项来删除目录及其所有内容。对于Hadoop的hadoop fs
或hdfs dfs
命令来说,你需要加上-r
(或-R
)选项来递归地删除目录。