为什么80%的码农都做不了架构师?>>>
1、namenode启动时,namenode节点都做了哪些动作?fsimage和edits有什么变化?
2、namenode什么时候开始监听RPC和HTTP请求?
namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。
一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件(这个操作不需要借助辅助namenode)和一个空的编辑日志。此时,namnode开始监听RPC和HTTP请求。
3、namenode在什么阶段会处于安全模式?
在启动阶段。
4、namenode运行在安全模式下,文件系统对于客户端可以读写吗?
但是此刻,namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的。
严格来说,在安全模式下,只有那些访问文件系统元数据的文件系统操作是可以成功的,例如显示目录列表等。
对于读文件操作来说,只有集群中当前datanode上的块可用时,才能够读取文件。但文件修改操作(包括写、删除或重命名)均会失败。
5、系统中数据块的位置是由谁来维护的?
需要强调的是,系统中数据块的位置并不是由namenode维护的,而是以块列表的形式存储在datanode中。
6、namenode会在哪儿保留所有块位置的映射信息?
在系统的正常操作期间,namenode会在内存中保留所有块位置的映射信息。
7、安全模式下,namenode、datanode都做了哪些动作?
1)、datanode向namenode检查块列表信息。
2)、namenode不向datanode发出任何块复制或块删除命令。即,执行复制或删除块失败。
详细过程为:
1)、在安全模式下,各个datanode会向namenode检查块列表信息(即向namenode发送块列表的最新情况)
2)、namenode了解到足够多的块位置信息之后,即可高效运行文件系统。
3)、但如果namenode没有检查到足够多的datanode,则需要将块复制到其他datanode,而在大多数情况下这都是不必要的(因为只需等待检查到若干datanode检入),并会极大地浪费集群的资源。
4)、实际上,在安全模式下,namenode并不向datanode发出任何块复制或块删除的命令。
8、什么时候退出安全模式?
当满足“最小复本条件”(minimal replication condition),namenode会在30秒钟之后就退出安全模式。
9、最小副本条件是指什么?
最小副本条件是在整个文件系统中有99.9%的块满足最小副本级别(默认值是1,由dfs.replication.min属性设置)。
10、安全模式相关属性
1)、dfs.replication.min
2)、dfs.safemode.threshold.pct
3)、dfs.safemode.extension
如下表:
11、启动一个刚刚格式化的HDFS集群时,namenode是否会进入安全模式?为什么?
因为系统中还没有任何块,所以namenode不会进入安全模式。
12、如何进入和离开安全模式?
1)、#查看namenode是否处于安全模式?
hadoop dfsadmin -safemode get
在HDFS的网页界面也能够显示namenode是否处于安全模式。
2)#等待namenode退出安全模式
当用户期望在执行某条命令之前namenode先退出安全模式,如何操作?
有时用户期望在执行某条命令之前namenode先退出安全模式,特别是在脚本中。使用wait选项能够达到这个目的:
hadoop dfsadmin -safemode wait
3)、#进入安全模式
管理员随时可以让namenode进入或离开安全模式。这项功能在维护和升级集群时非常关键,因为需要确保数据在指定时段内是只读的。
hadoop dfsadmin -safemode enter
4)、#离开安全模式
hadoop dfsadmin -safemode leave
13、使namenode永远处于安全模式的方法?
1)、namenode启动阶段,运行hadoop dfsadmin -safemode enter
namenode在启动阶段会处于安全模式。在此期间也可使用这条命令,从而确保namenode在启动完毕之后不离开安全模式。
2)、将dfs.safemode.threshold.pct值设为大于1
另一种使namenode永远处于安全模式的方法是将属性dfs.safemode.threshold.pct的值设为大于1。