当前位置: 首页 > 科技观察

分析Hadoop的集群管理和安全机制

时间:2023-03-14 18:26:55 科技观察

HDFS数据管理1、设置元数据和数据的存放路径,通过dfs.name.dir、dfs.data.dir、fs.checkpoint.dir(hadoop1.x)、hadoop。tmp.dir、dfs.namenode.name.dir、dfs.namenode.edits.dir、dfs.datanode.data.dir(hadoop2.x)等属性设置;2、经常执行HDFS文件系统检查工具FSCK,eg:hdfsfsck/liguodong-files-blocks;[root@slave1mapreduce]#hdfsfsck/inputConnectingtonamenodeviahttp://slave1:50070FSCKstartedbyroot(auth:SIMPLE)from/172.23.253.22forpath/inputatTueJun1621:29:21CST2015:THYrsTotalBTotalB:HEtus:HE:1Totalsymlinks:0Totalblocks(validated):1(avg.blocksize80B)Minimallyreplicatedblocks:1(100.0%)过度复制块:0(0.0%)复制不足块:0(0.0%)Mis-replicatedblocks:0(0.0%)Defaultreplicationfactor:1Averageblockreplication:1.0Corruptblocks:0Missingreplicas:0(0.0%)Numberofdata-nodes:1Numberofracks:1FSCKendedatTueJun1621:29:21CST2015in1millisecondsThefilesystemunderpath'/input'isHEALTHY3.一旦数据异常,可以设置NameNode进入安全模式;此时NameNode可以以只读模式运行命令:hdfsdfsadmin-safemodeenter|离开|得到|wait[root@slave1mapreduce]#hdfsdfsadmin-reportConfiguredCapacity:52844687360(49.22GB)PresentCapacity:45767090176(42.62GB)DFSRemaining:45766246400(42.62GB)DFSUsed:843776(824KB)DFSUsed%:0.00%Underreplicatedblocks:0Blockswithcorruptreplicas:0Missingblocks:0-----------------------------------------------datanodesavailable:1(1total,0dead)livedatanodes:名称:172.23.253.22:50010(Slave1)主机名:slave1decommessissStatus:strumanConfiguredCapace:52844687♂(49.22GB)DFSUSER:822GB)dfSUSER:8437777777.43777FB)DFSUsed%:0.00%DFSRemaining%:86.61%Lastcontact:TueJun1621:27:17CST2015[root@slave1mapreduce]#hdfsdfsadmin-safemodegetSafemodeisOFF4,每个DataNode都会运行一个数据扫描修复线程,它可以检测并命令修复坏块或丢失的数据块,通过属性设置扫描周期;dfs.datanode.scan.period.hourses,默认为504小时MapReduce作业管理查看作业信息:mapredjob-list;杀死作业:mapredjob-kill;查看指定路径下的历史日志摘要:mapredjob-historyoutput-dir;打印map和reduce完成的百分比以及所有计数器:mapredjob-statusjob_id;[root@slave1mapreduce]#mapredjobUsage:CLI[-submit][-status][-counter][-kill][-set-priority].Priorities的有效值是:VERY_HIGHHIGHNORMALLOWVERY_LOW[-events<#-of-events>][-history][-list[all]][-list-active-trackers][-list-blacklisted-trackers][-list-attempt-ids]。的有效值是REDUCEMAP。的有效值正在运行,已完成[-kill-task][-fail-task][-logs]Genericoptionssupportedare-conf指定anapplicationconfigurationfile-Dusevalueforgivenproperty-fsspecifyanamenode-jtspecifyajobtracker-filesspecifycommaseparatedfilestobecopiedtothemapreducecluster-libjarsspecifycommaseparatedjarfilestoincludeintheclasspath.-archivesspecifycommaseparatedarchivestobeunarchivedonthecomputemachines.[root@slave1mapreduce]#mapredjob-list15/06/1621:33:25INFOclient.RMProxy:ConnectingtoResourceManagerat/0.0.0.0:8032Totaljobs:0JobIdStateStartTimeUserNameQueuePriorityUsedContainersRsvdContainersUsedMemRsvdMemNeededMemAMinfo#p#Hadoop集群安全Hadoop自带两种安全机制:Simple机制、Kerberos机制1、Simple机制:简单的机制是JAAS协议和delegationtoken的结合,JAAS(JavaAuthenticationandAuthorizationService)java认证授权服务;(1)当用户提交作业时,JobTracker端需要验证身份。此人,即通过检查执行当前代码的人与JobConf中user.name中的user是否一致;(2)然后查看ACL(AccessControlList)配置文件(由管理员配置)查看是否有提交作业的权限。验证通过后,将获得HDFS或mapreduce授予的delegationtoken(访问不同的模块有不同的delegationtoken),后续的任何操作,如访问文件,都需要检查token是否存在,以及用户是否与之前注册使用令牌的人相同。2.Kerberos机制:Kerberos机制是一种基于认证服务器的方法;Principal(安全个体):经过身份验证的个体具有名称和密码;KDC(keydistributioncenter):是一种提供票证和临时会话Key的网络服务;Ticket:客户用来向服务器证明其身份的记录,包括客户ID、会话密钥和时间戳;AS(AuthenticationServer):认证服务器;TSG(TicketGrantingServer):许可证认证服务器;(1)客户端将之前获取的TGT和请求的服务信息(服务名称等)发送给KDC,KDC中的TicketGrantingService会生成一个Client和Service之间的SessionKey,供Service进行鉴权客户端。然后KDC将SessionKey连同用户名、用户地址(IP)、服务名、有效期、时间戳打包成一个Ticket(这些信息最终被Service用来对Client进行认证)发送给Service,但是Kerberos协议并不是直接将Ticket发送给Service,而是通过Client转发给Service,所以还有第二步。(2)此时,KDC将刚才提到的Ticket转发给Client。由于Ticket是给Service的,Client看不到,所以KDC在协议开始之前使用KDC和Service之间的密钥对Ticket进行加密,然后再发送给Client。同时,为了在Client和Service之间共享密钥(第一步KDC为他们创建的SessionKey),KDC使用Client和它之间的密钥加密SessionKey,连同加密票。(3)为了完成票的交付,客户将刚收到的票转发给服务。由于Client不知道KDC和Service之间的密钥,所以无法计算出Ticket中的信息。同时Client对收到的SessionKey进行解密,然后将自己的用户名和用户地址(IP)打包到Authenticator中,用SessionKey加密后发送给Service。(4)Service收到Ticket后,用它和KDC之间的密钥解密Ticket中的信息,得到SessionKey、用户名、用户地址(IP)、服务名、有效期。然后用SessionKey解密Authenticator得到用户名、用户地址(IP)并与之前Ticket中解密的用户名和用户地址(IP)进行比对,验证Client的身份。(5)如果Service有返回结果,返回给Client。#p#Hadoop集群内部使用Kerberos进行认证的好处:可靠:Hadoop本身不具备认证功能和创建用户组的功能,使用依赖于外围的认证系统;高效:Kerberos使用对称密钥操作,比SSL公钥更快;操作简单:用户无需复杂的说明即可轻松操作。例如,要取消一个用户只需要从KerboresKDC数据库中删除即可。HDFS安全1、客户端在获得namenode的初始访问认证后(使用kerberos),会获得一个delegationtoken,可以作为访问HDFS或提交作业的凭证;2.同样为了读取一个文件,client首先要和namenode交互,获取对应block的blockaccesstoken,然后读取对应datanode上的每个block,datanode已经提前获取了这些token当初始启动向namenode注册时,当client要从TaskTracker中读取block时,首先验证token,然后允许读取。MapReduce安全1.所有的作业提交或作业运行状态跟踪都是使用RPC和Kerberos身份验证实现的。当授权用户提交作业时,JobTracker将为其生成委托令牌。该令牌将作为作业的一部分存储在HDFS中,并通过RPC分发给各个TaskTracker。作业完成运行后,令牌将失效。2.用户提交的每个任务都是以用户身份启动的,因此用户的任务不能向TaskTracker或其他用户的任务发送操作系统信号,对其他用户造成干扰。这需要为每个用户在所有TaskTracker上创建一个帐户;3、当一个map任务运行完毕后,需要将计算结果告诉管理它的TaskTracker,然后各个reduce任务会通过HTTP向TaskTracker请求自己的请求。对于处理的这块数据,Hadoop要保证其他用户无法获取map任务的中间结果。执行过程是:reduce任务为“请求URL”和“当前时间”计算HMAC-SHA1值,并将这个值作为请求的一部分发送给TaskTracker,TaskTracker会验证这个值的正确性收到后。博文来源:http://blog.csdn.net/scgaliguodong123_/article/details/46523569