HDFS海量数据存储-Hadoop分布式文件存储系统

HDFS的几个角色

1.NameNode老大:它有两个状态active(活动的),standby(备份状态)。它负责记录元数据-描述数据的数据。它保存了文件名,文件切了多少块,每块备份了多少份,每一份放在哪台机器上。

2.DataNode小弟:存储数据并记录文件块位置。

3.Block文件块:
hadoop1.0:64MB hadoop2.0:128MB(这个值是固定的,不会高于这个值)

4SecondaryNameNode
NameNode的小秘,帮助NameNode干一些其他的事情。分担NameNode的压力。(在正式安装完全分布式就不需要它)

HDFS的优点

可以存储超大文件(无限拓展)
高容错,支持数据丢失的自动恢复
可以构建在廉价机上

HDFS缺点

1不适合存大量小文件:存进一个文件,一定会记录一条元数据信息。文件又小又多会导致NameNode的元数据信息特别多,压力变大。现在的Hadoop对文件进行了优化,不记录小文件的信息,只记录小文件所在的文件夹的目录。
2做不到低延迟访问。
3不支持超强事务。
4不支持行级别的增删改:这样会导致所有节点重新调整大小。

SecondaryNameNode的作用

帮NameNode合并fsimage和edits。
以后不用SecondaryNameNode。用双机热备,不用SecondaryNameNode。

HDFS海量数据存储-Hadoop分布式文件存储系统_第1张图片
红色表示活动active状态,绿色表示备份状态standby,他俩不是同时工作,同时工作会发生脑裂。
HDFS海量数据存储-Hadoop分布式文件存储系统_第2张图片
主机把edits和fsimage这两个文件发给热备机,热备机不但监听主机的死活,也替代SecondaryNameNode做一部分合并工作。
HDFS海量数据存储-Hadoop分布式文件存储系统_第3张图片
官方图

Block备份如何放置

HDFS海量数据存储-Hadoop分布式文件存储系统_第4张图片
第一块放在某一机架,第二块放在相邻机架,第三块放在第二块的同一机架

第一份:如果该文件本身从Hadoop集群中的某个节点上传,那么第一份存放在上传节点中,如果从Hadoop集群之外上传,那么存放在相对不太忙,负载较小的节点上。
第二份:放在与第一份所放置的节点相邻机架上的某个节点上。
第三份:放在与第二份所在节点的机架上的另外一台机器上。
三份以上,放置在负载相对较小的节点上。

第一块是主要访问节点,只要它不死,直接从它拿数据。存好了、备份之后就不必再占用它了。让其他机架的空闲机器复制到自己的机器上。

HDFS基本Shell操作

创建文件夹(不支持多级创建):

hadoop fs -mkdir /xxx

查看目录:

hadoop fs -ls /xxx

递归查看多级目录:

hadoop fs -lsr /xxx

上传文件到HDFS:

hadoop fs -put xxx.txt /xxx

下载文件到本地当前目录:

hadoop fs -get /xxx/xxx/xxx.txt

删除文件:

hadoop fs -rm /xxx/xxx/xxx.txt

删除文件夹(文件夹必须为空):

hadoop fs -rmdir /xxx/xxx

强制删除文件夹或文件

Hadoop fs -rm -r /xxx

你可能感兴趣的:(HDFS海量数据存储-Hadoop分布式文件存储系统)