hdfs学习总结

hdfs:Hadoop Distributed File System (Hadoop 分布式文件系统)

1.特点:

  • 一次写入多次读出,并且不支持修改。适合做数据分析,不适合做网盘。

2.优点

  • 高容错性
    • 数据自动保存多个副本,默认三个。某一个丢失,还有备份
    • 数据备份丢失,自动给恢复至默认副本数量
  • 适合做大数据处理
    • 数据规模大,GB TB PB
    • 文件规模大,能够处理百万规模上的文件
  • 能在低配置服务器上配置 ,通过多副本机制,提高可靠性

3. 缺点 :

  • 不适合低延时的数据访问,比如毫秒级的存储数据
  • 无法高效率的对小文件进行存储
    • NameNode会记录每个文件的元信息,同一文件分开存和整合之后存,后者元信息更少,所占用的资源也就更少;
    • hdfs的设计原理是接近磁盘读取速度,之所以把block块设置很大,是因为想做到寻道时间远小于文件读取数据块的时间,接近磁盘读取速度。如果小文件太多,会造成寻道时间太长,违背设计原理;
    • 应该将小文件合并后存入hdfs
  • 不支持并发写入,文件的随机修改;
    • 一个文件只能有一个写,不能多服务器同时写;
    • 仅支持文件的append(追加),不支持随机修改。

4.hdfs组成框架

  1. NameNode(nn):是master
  • 管理hdfs的名称空间;
  • 管理副本策略
  • 管理数据块(Block)映射信息
  • 处理客户端请求
  1. DataNode:是slave。NameNode下达命令。DataNode执行操作。
  • 存储实际的数据块;
  • 执行数据块的读写操作。
  1. client 客户端
  • 文件切分。文件上传时,将文件切分成一个个block(128M),然后上传;
  • 与NameNode交互,获取文件的位置信息;
  • 与DataNode交互,读取或者写入数据;
  • client提供一些命令来管理HDFS:如NameNode格式化;
  • client可以通过一些命令来访问HDFS,比如查询
  1. Secondary NameNode:并非NameNode的热备,当NameNode挂掉时,它并不能马上替换NameNode并提供服务。
  • 辅助NameNode,分担其工作量,
  1. hdfs块的大小
  • 目前硬盘的寻址时间在10ms左右,读写速率在100m/s。在hdfs设计理念下,寻址时间应为传输时间的1%;所以传输时间大概在1s左右;1s*100m/s=100m。也就是一次写入的最大值应该为100m;所以选择128m大小作为hdfs块的大小;
  • hdfs的块大小设置太小: 会增加寻找时间,违背hdfs设计理念。
  • hdfs的块设置太大,会大大增加数据的传输时间。
  1. 在hdfs上面利用 -mkdir 创建文件夹时,不能使用中文字符;
  1. hadoop fs -moveFromLocal
  • 不能剪切到hdfs上面没有的文件夹,也就是说这个命令不会自动创建文件夹
  1. hadoop fs -appendToFile
  • Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try.
  • 2014-05-04 10:43:55,009 INFOorg.apache.hadoop.ipc.Client: Retrying connect to server:hadoop1/192.168.10.22:9000. Already tried 0 time(s); retry policy isRetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
  • 原因是,三个节点虽然都可以查到DataNode进程,但是在网页查到只有一个DataNode进程。在别的节点查看,不能与Name Node进行传输。原因是修改了 /etc/hosts的文件。
  1. -copyFromLocal
  • 不能剪切到hdfs上面没有的文件夹,也就是说这个命令不会自动创建文件夹

10.-setrep 设置副本数量

  • 当设置的数量大于DataNode时,不会在某一节点备份多份;只会是,在添加节点之后,将副本复制到新添加的节点上,直到达到设置的数量。
  1. 回收站功能
  • fs.trash.interval=0 文件在回收站的存活时间设置
    • 0 默认取消回收站功能
    • 其他数字表示文件在回收站的存活时间。
  • fs.trash.checkpoint.interval=0, 检查回收站的文件
    • 0表示该值和fs.trash.interval的值相同
    • 该值应该《=fs.trash.interval的值

你可能感兴趣的:(hdfs学习总结)