Hadoop安全模式的理解.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:6 大小:30KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Hadoop安全模式的理解.doc

Hadoop安全模式的理解.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

mmichael_zhu_2004的专栏ichael_zhu_2004的专栏HHadoop安全模式的理解adoop安全模式的理解分类:Hadoop2012-12-0711:2664人阅读评论(0)收藏举报安全模式异常:在hadoop的实践过程中,系统启动的时候去修改和删除文件有时候会报以下错误:org.apache.hadoop.dfs.SafeModeException:Cannotdelete/user/hadoop/input.Namenodeisinsafemode.从字面上来理解:“Namenodeisinsafemode.”hadoop的namenode处于安全模式。出现上述现象由于NameNode在启动的时候首先进入安全模式。安全模式启动过程:当Hadoop的NameNode节点启动时,会进入安全模式阶段。在此阶段,DataNode会向NameNode上传它们数据块的列表,让NameNode得到块的位置信息,并对每个文件对应的数据块副本进行统计。当最小副本条件满足时,即一定比例的数据块都达到最小副本数,系统就会退出安全模式,而这需要一定的延迟时间。当最小副本条件未达到要求时,就会对副本数不足的数据块安排DataNode进行复制,直至达到最小副本数。而在安全模式下,系统会处于只读状态,NameNode不会处理任何块的复制和删除命令。安全模式相关属性的设置:安全模式的相关属性都在文件conf/hdfs-site.xml中指定,有如下几个:dfs.replication.min??指定数据块要达到的最小副本数,默认为1;dfs.safemode.extension??指定系统退出安全模式时需要的延迟时间,默认为30(秒);dfs.safemode.threshold.pct指定退出条件,需要达到最小副本数的数据块比例,1.0.3中默认是0.95安全模式常用命令:hadoopdfsadmin-safemode命令格式:Usage:javaDFSAdmin[-safemodeenter|leave|get|wait]用户可以通过dfsadmin-safemodevalue来操作安全模式,参数value的说明如下:enter-进入安全模式leave-强制NameNode离开安全模式get??-返回安全模式是否开启的信息wait??-等待,一直到安全模式结束。hadoopdfsadmin-safemode命令的源码解析:dfsadmin的命令实现类org.apache.hadoop.hdfs.tools.DFSAdmin安全模式命令用法:Usage:javaDFSAdmin[-safemodeenter|leave|get|wait]实现类DFSAdmin中主要处理的安全模式的命令的方法是setSafeMode核心处理逻辑为:DistributedFileSystemdfs=(DistributedFileSystem)fs;booleaninSafeMode=dfs.setSafeMode(action);DFSAdminàDistributedFileSystemàDFSClientàClientProtocol的实现类NameNodeàFSNamesystem.核心代码:??booleansetSafeMode(SafeModeActionaction)throwsIOException{??if(action!=SafeModeAction.SAFEMODE_GET){1????checkSuperuserPrivilege();????switch(action){????caseSAFEMODE_LEAVE://leavesafemode??????leaveSafeMode(false);??????break;????caseSAFEMODE_ENTER://entersafemode??????enterSafeMode();??????break;????}??}??returnisInSafeMode();??}安全模式的实现由FSNamesystem的内部类:SafeModeInfo实现的。监控安全模式的是SafeModeMonitor内部类。该类包含了安全模式的相关信息。当namenode进入安全模式时,将创建SafeModeInfo实例。在namenode启动的时候,SafeModeInfo计算safeblocks,即这blocks至少有冗余的数量,并计算safeblocks在所有blo