Hadoop之群起集群

87 阅读4分钟

配置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

图片.png

启动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]$ 

图片.png

Web 端查看 HDFS 的 NameNode

浏览器中输入:http://hadoop102:9870

图片.png

图片.png

查看HDFS上存储的数据信息

图片.png

图片.png

在配置了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

图片.png

集群基本测试

创建目录

[muyi@hadoop102 ~]$ hadoop fs -mkdir /wcinput

图片.png

上传文件到集群

上传小文件

[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]$

图片.png

上传大文件

[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]$

图片.png

上传文件后查看文件存放在什么位置

查看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 42 2019 jdk1.8.0_212
-rw-rw-r--. 1 muyi muyi 195013152 11月 12 08:29 tmp.tar.gz
[muyi@hadoop102 subdir0]$ 

因为Hadoop集群具有高可用性,当我们一台主机无法使用时,可以从集群中的其他主机获取文件

图片.png

可以从上图看到,我们有三台主机,所以文件有三个副本

执行wordcount程序

[muyi@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput

我们可以看到有一个任务在运行 图片.png

wcoutput目录下也产生了相应的文件

图片.png

图片.png

当然,我们也可以指定文件

[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 1112 08:48 copy_file
drwxr-xr-x. 13 muyi muyi 204 1112 07:36 hadoop-3.1.3
drwxr-xr-x.  7 muyi muyi 245 42 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 1112 08:48 copy_file
drwxr-xr-x. 13 muyi muyi 204 1112 07:36 hadoop-3.1.3
drwxr-xr-x.  7 muyi muyi 245 42 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 fshdfs dfs命令来说,你需要加上-r(或-R)选项来递归地删除目录。