HDFS:Hadoop Distributed File System
实现目标:
- 兼容廉价的硬件设备。
- 流数据读写 。就是大量数据、全部数据的读写,而不是访问某个部分的子集。
- 面对大数据集 。
- 简单的文件模型。对文件进行简化,牺牲相关的性能,获取批量处理的特性。只允许追加,不允许修改。
- 强大的跨平台兼容性。因为JAVA。
缺点:
- 不适合低延迟数据访问 。因为设计上是批量读大部分或者全部数据。而不是精确定位到某个地方。(Hbase满足随机读写特性。实时性高。)
- 无法高效存储大量小文件 。因为索引结构。
- 不支持多用户写入及任意修改文件。只能追加,不能修改。
块:
HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位。块的大小远远大于普通文件系统,可以最小化寻址开销。
- 支持大规模文件存储:文件以块为单位进行存储,一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量。
- 简化系统设计:首先,大大简化了存储管理,因为文件块大小是固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次 ,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据。
- 适合数据备份:每个文件块都可以冗余存储到多个节点上,大大 提高了系统的容错性和可用性。
名称节点是主节点。数据节点是从节点。
冷备份:就是慢慢恢复
热备份:立即恢复。
安装
1.要使用 HDFS,第一次使用时首先需要在 HDFS 中创建用户目录:(这个好像是必须的。以后创建删除查找都会以这个路径为相对路径,见例子)。“-p”表示如果是多级目录,则父目录和子目录一起创建,这里“/user/hadoop”就是一个多级目录,因此必须使用参数“-p”,否则会出错。
./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -mkdir output
./bin/hdfs dfs -ls
结果如下所示:(已经向input文件里面存储过文件。)
2.在创建个input目录时,采用的是相对路径形式,例如创建一个input目录(第一个命令),它在HDFS中的完整路径是“/user/hadoop/input”。如果要在HDFS的根目录下创建一个名称为input的目录,则需要使用第二个命令。
./bin/hdfs dfs –mkdir input
./bin/hdfs dfs –mkdir /input