1,启动
hadoop调度docker时,docker容器的启动通过hadoop执行指定的shell命令完成,通常,我们的hadoop都是由hadoop用户启动,那么由hadoop启动的nodeManager也只有hadoop用户具有的权限,而docker容器的启动,通常需要root权限,如果hadoop没有root权限,启动docker时则会报权限不足的错误。
这里的解决方式是给hadoop用户加上sudo权限。appMaster启动docker时,执行shell语句如下:
其中'Tudou=123'是hadoop的密码,应该由前台动态传输。
2,停止:
启动问题解决了,不过如果当客户端关掉某应用,release已分配的相关的container时,又会有新的问题,hadoop的NodeManager关掉container是通过kill container相关联的进程,来给予终止,这里相关联的进程即是docker容器,如果docker容器是sudo的方式启动的,那么,nodeManager将无法kill。
这里采用的方式是,hadoop进程resourceManager,nodeManager也是同样以sudo的方式启动,这样同样拥有管理员权限的nodeManager即可对docker容器进行停止操作。
3,扩容操作关键指令
综合1,2对裸机物理节点进行扩容时,需要注意以下几个要点:
1,创建hadoop用户时,需给予hadoop配置sudo权限,由于docker容器由hadoop启动,所以,还需给sudo配置免通道执行
2,hadoop进程启动时采用sudo的方式启动:
这里是把hadoop节点启动的命令写在脚本内,以sudo的方式启动脚本。
3,appMaster启动docker容器时,采用sudo的方式启动