前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0520-如何使用非root用户启动CM的Server和Agent服务

0520-如何使用非root用户启动CM的Server和Agent服务

作者头像
Fayson
发布2019-11-27 18:51:32
1.8K0
发布2019-11-27 18:51:32
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1

文档编写目的

根据前面的安装文档,我们知道CDH的安装只能使用root或者具有sudo权限的用户进行安装,但大多数企业对于服务器的root用户的管控比较严格,大多数情况下都不能够直接使用或者需要申请比较麻烦。对于这种情况,Cloudera官方提供了一种单用户安装CDH的模式,参考Fayson前面的文章《0517-如何在CDH5中使用单用户模式》。但实际情况是这种方法非常麻烦,官方其实也不建议使用,而且从CDH6开始也已经废弃了这种安装或使用方式。

本文基于一个实际需求,即CDH相关的所有服务都使用非root用户来管理,主要是Cloudera Manager Server和Agent服务(其他Hadoop服务默认都是使用相应自己的用户比如hdfs或者hive用户),我们知道这2个服务默认会被放到操作系统的/etc/rc.d/init.d下,即会开机自启动,而且Server使用cloudera-scm用户启动而Agent使用root用户启动。实现思路是先从操作系统自启动里移除,然后设置相关脚本,文件和日志的权限来实现使用非root用户的手动启动,这样可以实现未来的非root用户来管理Server和Agent服务,而Hadoop相关服务大部分情况下都可以通过Cloudera Manager界面化来管理。以下Fayson进行实操演示。

  • 测试环境

1.CDH5.16.1

2.Redhat7.4

3.采用root进行操作

2

修改cloudera-scm-agent服务

2.1

移除agent服务

1.停止Agent服务

systemctl stop cloudera-scm-agent

2.Kill supervisord进程,如果存在

[root@ip-172-31-13-38 ~]# ps -ef |grep supervisord
root      1470     1  0 12:39 ?        00:00:11 /usr/lib64/cmf/agent/build/env/bin/python /usr/lib64/cmf/agent/build/env/bin/supervisord
root     14521 13742  0 13:09 pts/0    00:00:00 grep --color=auto supervisord
[root@ip-172-31-13-38 ~]# kill 1470
[root@ip-172-31-13-38 ~]#

3.将/etc/rc.d/init.d/cloudera-scm-agent脚本移到/root/agent_bak下:

[root@ip-172-31-13-38 ~]# mkdir agent_bak
[root@ip-172-31-13-38 ~]# cd /etc/rc.d/init.d/
[root@ip-172-31-13-38 init.d]# mv cloudera-scm-agent /root/agent_bak/

4.重载systemd服务,并确认agent服务已经被移除。

[root@ip-172-31-13-38 init.d]# systemctl daemon-reload
[root@ip-172-31-13-38 init.d]# systemctl start cloudera-scm-agent
Failed to start cloudera-scm-agent.service: Unit not found.
[root@ip-172-31-13-38 init.d]#

2.2

修改启动脚本

1.修改启动脚本cloudera-scm-agent

我们编辑cloudera-scm-agent脚本,可以看到如上图一行的启动命令,标红部分为当用户启动cloudera-scm-agent时,会su root来执行该脚本,这也是为什么我们看到的cloudera-scm-agent服务的启动用户是root的原因。因为我们现在要演示用其他用户启动该脚本,所以删掉这部分,然后保存。

2.修改文件夹属组,这里我们计划使用cloudera-scm用户来启动agent服务

chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-agent/*
chown -R cloudera-scm:cloudera-scm /var/run/cloudera-scm-agent

2.3

手动启动agent服务

1.手动启动agent服务

sudo -u cloudera-scm sh cloudera-scm-agent start

2.查看CM页面可以检测到该agent的心跳

3.但是发现该节点上的CMS和Hadoop相关服务显示异常。

4.重启CMS服务

重启失败

5.重启172.31.13.38节点上的NameNode服务,报错如下

Error found before invoking supervisord: Non-root agent cannot execute process as user 'hdfs'

3

修改cloudera-scm-server服务

3.1

停止server服务

1.停止cloudera-scm-server服务

systemctl stop cloudera-scm-server

2.将/etc/rc.d/init.d/cloudera-scm-server脚本移到/root/agent_bak下:

[root@ip-172-31-13-38 ~]# cd /etc/rc.d/init.d
[root@ip-172-31-13-38 init.d]# mv cloudera-scm-server /root/bak

3.重载systemd服务,并确认server服务已经被移除。

[root@ip-172-31-13-38 init.d]# systemctl daemon-reload
You have new mail in /var/spool/mail/root
[root@ip-172-31-13-38 init.d]# systemctl start cloudera-scm-server
Failed to start cloudera-scm-server.service: Unit not found.
[root@ip-172-31-13-38 init.d]#

4.修改相应目录的权限

chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-server/*

3.2

手动启动server服务

1.使用cloudera-scm用户启动Cloudera Manager Server服务

[root@ip-172-31-13-38 bak]# sudo -u cloudera-scm sh cloudera-scm-server start
Starting cloudera-scm-server: cloudera-scm-server: line 249: /var/run/cloudera-scm-server.pid: Permission denied
[FAILED]
[root@ip-172-31-13-38 bak]#

启动失败,这里报错是/var/run的权限,这个目录会挂载到/run下,修改这个目录的权限后可以启动成功,但是重启系统之后,该目录的权限又会还原,最终还是失败。

4

总结

1.本文Fayson尝试手动做一些修改后,使用非root用户来启停server和agent服务,都以失败告终。

2.Agent服务可以配置为使用别的用户来启动,本文是使用cloudera-scm,但是带来的问题是该节点上的CMS服务或者Hadoop相关服务无法管理,因为CM管理节点的原理是通过通过向agent发送相关指令,然后通过agent的用户root来sudo到相关的的组件用户来管理相应的服务,比如sudo到hdfs用户来管理HDFS服务,实际还有CM搜集诊断包也需要通过agent调用很多系统命令来进行搜集。本文其实可以通过配置其他用户比如cloudera-scm用户的免密sudo到其他用户来进行尝试,但是没有再这么做的原因是因为agent管理服务或者调用操作系统本身的系统命令太多,逐项配置是非常麻烦的基本不现实,具体可以参考《0517-如何在CDH5中使用单用户模式》。

3.Server服务主要是因为/var/run目录的权限问题,我们可以临时修改该目录的权限来实现。但因为/var/run最终会挂载到OS的内存系统tmpfs中,一旦重启OS,该目录又会还原,又需要手动设置。

4.综上所述,无论是Cloudera Manager Server还是Agent服务都无法配置为其他用户来启停,只能通过root用户来管理。

5.其实这2个服务如果你配置为其他用户来管理,也不是官方支持的方式,所以无论从技术可行性还是能否享受正式支持的角度来说,都不建议去修改Server和Agent的启停用户。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档