1、概述
随着数据量的日益增长,数据的存储问题尤为突出,HDFS就是分布式文件管理系统中的一种。主要适用于一次写入,多次读出的场景。
hdfs优点:高容错性(数据自动保存多个副本,通过增加副本的形式,提高容错性;某个副本丢失以后,可以自动恢复。);适合处理大数据;可构建在廉价机器上。
hdfs缺点:不适合低延时数据访问;无法高效的对大量小文件进行存储;不支持并发写入、文件随机修改(一个文件只能有一个写,不允许多个线程同时写;仅支持数据append,不支持文件的随机修改)。
HDFS组成架构
其中:NameNode(nn):就是文件的管理者,管理HDFS的名称空间;配置副本策略;管理数据块映射信息;处理客户端读写请求。DataNode:就是执行NameNode下达的命令,主要存储实际的数据块,执行数据块的读/写操作。Client:客户端,负责文件的切分(文件上传时,Client将文件切分成一个一个的块,然后上传),与NameNode进行交互,获取文件的位置信息,与DataNode交互,读取或者写入数据;提供一些命令来管理HDFS,同时访问HDFS进行增删改查操作。Seconddary NameNode:辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;在紧急情况下,可辅助恢复NameNode。
2、HDFS的shell操作
基本语法:hadoop fs 具体命令
常用命令:
上传:-moveFromLocal:从本地剪切粘贴到HDFS;
-copyFromLocal:从本地文件系统中拷贝文件到 HDFS 路径去(本地文件依然存在)
-put:等同于 copyFromLocal,生产环境更习惯用 put