Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3036953
  • 博文数量: 167
  • 博客积分: 613
  • 博客等级: 中士
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-13 21:35
个人简介

人, 既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,无他,唯智慧耳。

文章分类
文章存档

2015年(19)

2014年(70)

2013年(54)

2012年(14)

2011年(10)

分类: HADOOP

2013-10-11 09:47:06

     昨天在机房呆了一天,忙活着部署hadoop分布式节点。在网上查了一些部署的资料,其中有一步是为所有的节点创建同样的用户'hadoop',并且加入到%admin组中。自己在做的时候提示%admin组不存在,其实Ubuntu系统中可以使用usermod username -g root的方式加入到管理组中,不晓得为什么自己的机器上使用%admin就提示找不到这个组。
     Ubuntu默认把安装系统的用户加入到%admin组中,从而可以直接使用sudo来执行root权限的命令,但是自己阴差阳错之下把hadoop移除了%admin,从而无法执行sudo命令,提示不存在sudoers文件中了。所以解决的办法也很简单,只需要使用上面的命令把hadoop重新加入到管理组就可以了。问题虽然解决了,但是还是不甘心,决心去看看/etc/sudoers文件是个神马东东,于是打开文件:

点击(此处)折叠或打开

  1. #
  2. # This file MUST be edited with the 'visudo' command as root.
  3. #
  4. # Please consider adding local content in /etc/sudoers.d/ instead of
  5. # directly modifying this file.
  6. #
  7. # See the man page for details on how to write a sudoers file.
  8. #
  9. Defaults    env_reset
  10. Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

  11. # Host alias specification

  12. # User alias specification

  13. # Cmnd alias specification

  14. # User privilege specification
  15. %root    ALL=(ALL:ALL) ALL

  16. # Members of the admin group may gain root privileges
  17. %admin ALL=(ALL) ALL
  18. %hadoop ALL=(ALL) ALL
  19. # Allow members of group sudo to execute any command
  20. %sudo    ALL=(ALL) ALL

  21. # See sudoers(5) for more information on "#include" directives:

  22. #includedir /etc/sudoers.d
      上面黑体加粗的三个命令就是关键的三条策略,第一个User Privilege用来指定用户组root可以转变成任何其他的用户;第二个策略用来指定下列的admin组和hadoop组成员都可以使用sudo命令获取root权限;第三个策略则用来指定sudo命令可以执行的操作。对于一个具体的格式而言:
     %hadoop ALL=(ALL) ALL
-%hadoop:针对hadoop组成员
-1st-ALL:适用的主机,尤其对于分布式系统来说,可以指定具体的主机名
-2nd-ALL:括号内的ALL表示hadoop组成员可以使用何种身份来执行sudo命令
-3rd-ALL:hadoop组成员可以扮演任何角色使用sudo命令执行哪些操作,比如/usr/bin/find, /usr/bin/rm等,ALL表示全部命令范围
     了解了这些策略,可以直接在相应的项下添加自己的用户组,既可以赋予除了默认安装系统的用户之外的其他用户使用sudo命令的权限,也可以使用指定该用户使用sudo运行的操作种类来细化用户和组的管理,这里为了与用户名区分,%表示用户组名。


      昨天遇到的另一问题是在为节点配置DNS的时候,通常的位置/etc/resolv.conf在Ubuntu下行不通了,即便配置了DNS,每次重启后都会被清空。其实文件头已经给出了提示:不要手动配置本文件,每次启动均会被重写。重写?没错,主要原因在于Ubuntu每次启动resolvconf服务都会使用/etc/resovlconf/resolv.conf.d/base文件内容重写该文件,因此解决DNS的问题有两种方法:
1. 在base文件中填写DNS名称;
2. 直接在网卡接口配置文件/etc/network/interfaces中填写DNS,在IP-NetMask-Gateway配置好后直接添加:
dns-nameservers DNS-IP
即可

     两个问题虽然都不难,但是在不能上网的机房里还是让自己费了不少功夫。幸好昨天忙活了半天配好了网络,可以在工位上远程操作省下不少功夫了。
阅读(9926) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~