如上图所示,
hdfs的读写流程
明确hdfe分布式系统的优势:①存储量大;②安全性高(有备份,一般是3个备份);③高容错性:不怕机器坏,数据不会丢,任务不用从头跑。
因此,windows 的数据文件首先通过 Linux 管理系统平台 传递给在linux虚拟机上部署的node1上的Namenode,Namenode将数据进行调度(分配),将传入的数据分配给node1上的Datenode,node1上的Datenode将数据的备份传给node2,node2上的Datenode再将数据的备份传给node3,node3上的数据传输好以后,node3上的Datenode会返回部署完成的指令给node1上的Namenode,最后无报错即运行成功。
注:①windows上的文件可以直接从本地添加到hdfs,如果要写进去,需要再装载Linux 管理系统平台 通过此平台进行写入;
------hadoop核心系统的主要功能和流程
② Linux 虚拟机上的文件要用hadoop的读写语句写入到hdfs中,即 Linux 上的文件和 Linux 上装的hadoop是处于隔绝的状态,hadoop中的运算程序MapReduce,它只能计算存放在HDFS上的数据,因此,我们必须将Linux上的文件fs -put 进hadoop中去。
③Mapreuce 程序运行需要资源,所以必须开启 Yarn 集群。
④综上所述,hadoop核心系统的流程是数据最先进入hdfs系统,再开启Yarn集群,再进行MapReduce运算。
HDFS 常用命令集合
1.启动命令
start-dfs.sh可以启动hadoop
2.cmd = 要执行的核心子命令
Hadoop fs -cmd <args>cmd:fs ,fs是核心子命令,前面不需要加 ‘-’,核心子命令后面要加参数
3.列出可以运行的命令
hadoop fs即不添加任务具体的执行命令,Hadoop 就会列出命令行接口的帮助信息,如下所示:
[root@node01 ~]# hadoop fs Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>] [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] [-v] [-x] <path> ...] [-cp [-f] [-p | -p[topax]] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]] [-deleteSnapshot <snapshotDir> <snapshotName>] [-df [-h] [<path> ...]] [-du [-s] [-h] [-x] <path> ...] [-expunge] [-find <path> ... <expression> ...] [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-getfacl [-R] <path>] [-getfattr [-R] {-n name | -d} [-e en] <path>] [-getmerge [-nl] <src> <localdst>] [-help [cmd ...]] [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]] [-mkdir [-p] <path> ...] [-moveFromLocal <localsrc> ... <dst>] [-moveToLocal <src> <localdst>] [-mv <src> ... <dst>] [-put [-f] [-p] [-l] <localsrc> ... <dst>] [-renameSnapshot <snapshotDir> <oldName> <newName>] [-rm [-f] [-r|-R] [-skipTrash] <src> ...] [-rmdir [--ignore-fail-on-non-empty] <dir> ...] [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]] [-setfattr {-n name [-v value] | -x name} <path>] [-setrep [-R] [-w] <rep> <path> ...] [-stat [format] <path> ...] [-tail [-f] <file>] [-test -[defsz] <path>] [-text [-ignoreCrc] <src> ...] [-touchz <path> ...] [-usage [cmd ...]] Generic options supported are -conf <configuration file> specify an application configuration file -D <property=value> use value for given property -fs <local|namenode:port> specify a namenode -jt <local|resourcemanager:port> specify a ResourceManager -files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster -libjars <comma separated list of jars> specify comma separated jar files to include in the classpath. -archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines. The general command line syntax is bin/hadoop command [genericOptions] [commandOptions]4.-appendToFile
将服务器本地的文件追加到HDFS指定的文件中,如果多次运行相同的参数,则会在 HDFS 的文件中追加多行相同的内容。实例代码如下所示:
hadoop fs -appendToFile data.txt /data/data.txt5.-cat
主要用来查看 HDFS 中的非压缩文件的内容。实例代码如下所示:
[root@node01 ~]# hadoop fs -cat /data/data.txt hello hadoop hello hadoop6.续
干货 | HDFS常用的40个命令,你都知道吗?-腾讯云开发者社区-腾讯云
Hadoop 集群常用端口
①HDFS 集群web访问端口: 9870
②HDFS 操作端口 : 8020
③YARN 集群资源端口: 8088
④Yarn 历史服务器的端口: 19888