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。
Block备份如何放置
第一份:如果该文件本身从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