spark使用非root用户启动服务

文章讲述了在Linux环境中,由于禁止root用户登录,启动Spark时遇到的SSH连接问题。提供了两种解决方案:一是临时开启root登录权限并设置SSH免密,二是修改Spark启动文件以指定非root用户并配置SSH选项。同时强调了指定用户需具有SSH免密登录权限,并给出了Ansible用户配置示例。
摘要由CSDN通过智能技术生成

背景

在linux机器安装服务时,有时候会禁止root用户登陆。

由于spark在启动时存在ssh的连接,如果仍然使用root用户启动spark,

就会出现要求用户输入root密码,导致spark无法直接启动

解决1:临时开启root登陆权限

##ansible_users可以作为参数传入或写到变量配置中
ansible_users=root

sshdget="`grep '^PermitRootLogin no' /etc/ssh/sshd_config |wc -l`"
sshdstatus="${sshdget}"

###为root用户做ssh免密登陆
function sshdSet(){
if [ "${ansible_users}" != "root" ];then
   [ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
   cat /root/.ssh/id_rsa.pub >> ${ansible_user_home}/.ssh/authorized_keys
fi
}

###开启
function sshdopen(){
if [ ${ansible_users} == "root" ];then
  if [ $sshdstatus -gt 0 ];then
     #echo -e "\e[33m开启sshd的root远程登录权限....\e[0m"
     sed -i 's/PermitRootLogin.*/PermitRootLogin\ yes/g' /etc/ssh/sshd_config
     service sshd restart
     sshdstatus=1
  else
     sshdstatus=0
  fi

  ##${baseDir}/server.sh 代表当前的shell文件
  sed -i "s/^sshdstatus=.*/sshdstatus=\"${sshdstatus}\"/g" ${baseDir}/server.sh 
else
  echo -e "\e[33mchecking...\e[0m"
fi
}

###关闭
function sshdclose(){
if [ ${ansible_users} == "root" ];then
  if [ $sshdstatus -gt 0 ];then
     #echo -e "\e[33m关闭sshd的root远程登录权限....\e[0m"
     sed -i 's/PermitRootLogin.*/PermitRootLogin\ no/g' /etc/ssh/sshd_config
     service sshd restart
     sshdstatus=0
  else
     sshdstatus=1
  fi

  sed -i 's/^sshdstatus=.*/sshdstatus="${sshdget}"/g' ${baseDir}/server.sh
else
  echo -e "\e[33mchecking...\e[0m"
fi
}

在使用脚本开启root登陆权限后,启动spark,然后关闭root登陆权限

注:这种方法用于允许root临时开启的机器,如果root登陆一旦开启就会有告警,还是用方法二比较好

解决2:修改spark启动文件

  1. 修改配置文件spark-env.sh

修改spark相关的spark-env.sh:export SPARK_SSH_OPTS="-p 22 -l appadmin"

注:SPARK_SSH_OPTS参数中的22为当前ssh端口,appadmin为spark启动时指定的用户

  1. 修改启动配置,指定ssh用户,sbin/slaves.sh:

修改变量:SPARK_SSH_OPTS="-o StrictHostKeyChecking=no "

修改后:SPARK_SSH_OPTS="-o StrictHostKeyChecking=no -l ${ansible_user}"

注:-l指定用户 ${ansible_user}为自定义用户变量

可使用方式1或方式2任一条修改spark的启动用户 ,完成后进行如下修改:

修改启动配置start-slaves.sh sbin/stop-slaves.sh(为了保证spark进程拥有root权限)

spark启动的指定用户必须拥有ssh的免密登陆权限

ansible_users=appadmin
ansible_user_home="/home/${ansible_users}"

su ${ansible_users} -c "ssh-keygen -t rsa -P '' -f ${ansible_user_home}/.ssh/id_rsa"
su ${ansible_users} -c "cat ${ansible_user_home}/.ssh/id_rsa.pub >> ${ansible_user_home}/.ssh/authorized_keys"
chmod 710 ${ansible_user_home}/.ssh/authorized_keys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值