这篇文章主要为大家展示了“HDFS应该了解的问题有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HDFS应该了解的问题有哪些”这篇文章吧。
安全模式是Namenode的一种状态(Namenode主要有active/standby/safemode三种模式)。
a. Namenode发现集群中的block丢失率达到一定比例时(默认0.01%),Namenode就会进入安全模式,在安全模式下,客户端不能对任何数据进行操作,只能查看元数据信息
Namenode的内存元数据中,包含文件路径、副本数、blockid,及每一个block所在Datanode的信息,而fsimage中,不包含block所在的Datanode信息。那么,当Namenode冷启动时,此时内存中的元数据只能从fsimage中加载而来,从而就没有block所在的Datanode信息 ——> 就会导致Namenode认为所有的block都已经丢失 ——> 进入安全模式 ——> 所在的Datanode信息启动后,会定期向Namenode汇报自身所持有的block信息 ——> 随着Datanode陆续启动,从而陆续汇报block信息,Namenode就会将内存元数据中的block所在Datanode信息补全更新 ——> 找到了所有block的位置,从而自动退出安全模式
1)找到问题所在,进行修复(比如修复宕机的所在Datanode信息补全更新)
1)非HA的模式下Namenode只能有一个,HA模式下可以有两个(一主active一备standby),HDFS联邦机制可以有多个Namenode
1)在edits中保存着每个文件的操作详细信息
2)在fsimage中保存着文件的名字、id、分块、大小等信息,但是不保存Datanode 的IP
安全模式结束,文件块和Datanode 的IP关联上
验证过程: 1) 启动Namenode,离开safemode,cat某个文件,看log,没有显示文件关联的Datanode 2) 启动Datanode,cat文件,内容显示 3) 停止Datanode ,cat文件,看log,看不到文件,但显示了文件块关联的Datanode |
8.Datanode动态上下线?
在实际生产环境中,在hdfs-site.xml文件中还会配置如下两个参数:
dfs.hosts:白名单;dfs.hosts.exclude:黑名单
<property> <name>dfs.hosts</name> #完整的文件路径:列出了允许连入NameNode的datanode清单(IP或者机器名) <value>$HADOOP_HOME/conf/hdfs_include</value> </property> <property> <name>dfs.hosts.exclude</name> #文件完整路径:列出了禁止连入NameNode的datanode清单(IP或者机器名) <value>$HADOOP_HOME/conf/hdfs_exclude</value> </property> |
1) 上线datanode
a) 保证上线的datanode的ip配置在白名单并且不出现在黑名单中
b) 配置成功上线的datanode后,通过命令hadoop-daemon.sh datanode start启动
c) 刷新节点状态:/bin/hadoop dfsadmin -refreshNodes(这个命令可以动态刷新dfs.hosts和dfs.hosts.exclude配置,无需重启NameNode)
d) 手动进行数据均衡:start-balance.sh
2) 下线datanode
a) 保证下线的datanode的ip配置在黑名单并且不出现在白名单中
b) 关闭下线的节点
c) 刷新节点状态:/bin/hadoop dfsadmin -refreshNodes
11.HDFS为什么不适合存储小文件 ?
一般一个block对应的元数据大小为150byte左右,大量小文件会使内存中的元数据变大导致占用大量Namenode内存、寻址时间长
该命令底层实际上是运行了一个MapReduce任务来将小文件打包成HAR。但是通过HAR来读取一个文件并不会比直接从HDFS中读取文件高效,因为对每一个HAR文件的访问都需要进行index文件和文件本身数据的读取。并且虽然HAR文件可以被用来作为MapReduce任务的input,但是并不能将HAR文件中打包的文件当作一个HDFS文件处理
2)编写MR程序,将小文件序列化到一个Sequence File中
将小文件以文件名作为key,以文件内容作为value,编写一个程序将它们序列化到HDFS上的一个Sequence File中,然后来处理这个Sequence File。相对打成HAR文件,具有两个优势:
(1)Sequence File是可拆分的,因此MapReduce可以将它们分成块并独立地对每个块进行操作
(2)它们同时支持压缩,不像HAR。在大多数情况下,块压缩是最好的选择,因为它将压缩几个记录为一个块,而不是一个记录压缩一个块
笔者强调hdfs小文件问题要结合具体的处理引擎以及业务情况等,比如离线处理下、流式处理下小文件问题如何解决,之后笔者会开单篇详述
以上是“HDFS应该了解的问题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。