1.HDFS按照数据块存储,每个数据块为64M,对于任何数据块都存储三分(分三个datanode存储),目的是为了保证硬件容错。其中两份放在同一个机架上面,另外一份放在另外机架上面。这样确保datanode节点和机架出现故障时数据不丢失。
2.namenode和datanode之间有心跳协议:每隔多少秒,datanode都会向namenode汇报自身数据节点状态(是否处于active,or开关机状态)。
3.SecondaryNameNode:定期同步NameNode元数据映像文件和修改日志,NameNode出现故障时,备胎转正。
4.HDFS数据读写:
特点:适合数据一次写入,多次读取;一旦写入,无法修改;适合存储大文件,小文件对于NameNode压力很大;适合数据批量读写,不适合交互式使用(延迟性较高);不支持多用户并发写相同文件;
hdfs常用操作指令:
$ hadoop fs -ls / //查询当前hdfs下的文件列表
$ hadoop fs -put hadoop-env.sh input/ //将hadoop-env.sh文件提交到hdfs里面的input目录下。
$ hadoop fs -mkdir user/ //在hdfs下创建user文件夹(每次只能创建1级文件夹,不能多级创建如:hadoop fs - //mkdir user/root,此命令是无法执行的。)
$ hadoop fs -get /input/hadoop-env.sh hadoop-env2.sh //将input文件夹下的hadoop-env.sh下载到当前目录下,命名为hadoop- //env2.sh
$ hadoop dfsadmin -report //查看hdfs文件系统所有信息