为单节点Hadoop禁用SSH的方法?

为单节点Hadoop禁用SSH的方法?,hadoop,Hadoop,我的工作是使用Centrify进行身份验证,出于某种原因,当我将SSH连接到一个系统时,它没有运行.bashrc/.bash\u配置文件。这意味着在本地启动节点时,不会设置JAVA_HOME和其他一些变量。SAs在找出原因并拒绝将其从我的开发机器中删除时毫无用处。现在,我正在尝试运行一个需要本机压缩库的Hadoop实例。因此,JAVA_库路径在运行时没有被设置。由于某种原因,在hadoop-env.sh中设置它是不起作用的 有没有办法在单节点模式下运行hadoop而不使用SSH?从脚本中删除SS

我的工作是使用Centrify进行身份验证,出于某种原因,当我将SSH连接到一个系统时,它没有运行.bashrc/.bash\u配置文件。这意味着在本地启动节点时,不会设置JAVA_HOME和其他一些变量。SAs在找出原因并拒绝将其从我的开发机器中删除时毫无用处。现在,我正在尝试运行一个需要本机压缩库的Hadoop实例。因此,JAVA_库路径在运行时没有被设置。由于某种原因,在hadoop-env.sh中设置它是不起作用的


有没有办法在单节点模式下运行hadoop而不使用SSH?

从脚本中删除SSH比在
bin/hadoop
脚本中添加
JAVA\u HOME
等更痛苦。所有的执事都是通过这个启动的,所以如果env不起作用,这是改变这个的要点

如果没有调用.bash_profile和.bashrc,可能是因为您的ssh调用正在以非交互方式调用shell,这与Centrify无关

下面有一篇文章进一步描述了这一点:

如果希望调用.bash_概要文件和.bashrc,则需要更改ssh调用以使用交互式shell,如下所述

让我给你举个例子

这是运行Centrify和OpenSSH的系统上的my.bashrc

$ id
uid=1296041358(simon_schuster) gid=1296041358(simon_schuster) groups=1296040449(domain_u),1296041358(simon_schuster)
[simon_schuster@engcen5 ~]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# User specific aliases and functions
JAVA_HOME=/usr/local/java/
export JAVA_HOME
如果我尝试使用远程ssh连接连接到系统并执行env命令,则此ssh连接将调用非交互式shell,正如您在下面看到的,JAVA_HOME变量未显示。这是因为如果以非交互方式调用shell,.bashrc不是源代码

ssh simon_schuster@engcen5.ocean.net env
CentOS release 5.5 (Final)
Kernel 2.6.18-194.el5 on an x86_64

Password:
SHELL=/bin/bash
SSH_CLIENT=192.168.81.26 44524 22
CDC_PREW2KHOST=engcen5
USER=simon_schuster
MAIL=/var/mail/simon_schuster
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/share/centrifydc/bin
PWD=/home/simon_schuster
USER_PRINCIPAL_NAME=Simon.Schuster@OCEAN.NET
KRB5CCNAME=FILE:/tmp/krb5cc_cdc1296041358_TEcxjC
CDC_JOINED_DC=dc.ocean.net
SHLVL=1
HOME=/home/simon_schuster
CDC_JOINED_SITE=Ocean-Demo
DA_DASH_DEPTH=1
LOGNAME=simon_schuster
SSH_CONNECTION=192.168.81.26 44524 192.168.81.25 22
CDC_JOINED_ZONE=CN=Global,CN=Zones,OU=Unix,DC=ocean,DC=net
CDC_LOCALHOST=engcen5.ocean.net
CDC_JOINED_DOMAIN=ocean.net
_=/usr/bin/env
这是与同一用户的另一个会话,但这次用户以交互方式登录并键入env命令。请注意,将显示JAVA_HOME变量。这是因为.bashrc是在调用交互式(登录)shell时生成的

[simon_schuster@engcen5 ~]$ env
HOSTNAME=engcen5.ocean.net
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.81.11 49519 22
CDC_PREW2KHOST=engcen5
SSH_TTY=/dev/pts/1
USER=simon_schuster
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
MAIL=/var/spool/mail/simon_schuster
PATH=/usr/kerberos/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/share/centrifydc/bin:/home/simon_schuster/bin
INPUTRC=/etc/inputrc
PWD=/home/simon_schuster
JAVA_HOME=/usr/local/java/
LANG=en_US.UTF-8
USER_PRINCIPAL_NAME=Simon.Schuster@OCEAN.NET
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
KRB5CCNAME=FILE:/tmp/krb5cc_1296041358
CDC_JOINED_DC=dc.ocean.net
SHLVL=1
HOME=/home/simon_schuster
CDC_JOINED_SITE=Ocean-Demo
DA_DASH_DEPTH=1
LOGNAME=simon_schuster
SSH_CONNECTION=192.168.81.11 49519 192.168.81.25 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
CDC_JOINED_ZONE=CN=Global,CN=Zones,OU=Unix,DC=ocean,DC=net
CDC_LOCALHOST=engcen5.ocean.net
G_BROKEN_FILENAMES=1
CDC_JOINED_DOMAIN=ocean.net
_=/usr/bin/env
为了让ssh为您的bash_概要文件和bashrc提供源代码,您必须使用--login选项调用bash,如下所示。如您所见,当通过ssh远程执行env命令时,JAVA_HOME变量现在是可见的

ssh simon_schuster@engcen5.ocean.net "bash --login -c env"
CentOS release 5.5 (Final)
Kernel 2.6.18-194.el5 on an x86_64

Password:
HOSTNAME=engcen5.ocean.net
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.81.26 58672 22
CDC_PREW2KHOST=engcen5
USER=simon_schuster
LS_COLORS=
PATH=/usr/kerberos/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/share/centrifydc/bin:/home/simon_schuster/bin
MAIL=/var/spool/mail/simon_schuster
INPUTRC=/etc/inputrc
PWD=/home/simon_schuster
JAVA_HOME=/usr/local/java/
LANG=en_US.UTF-8
USER_PRINCIPAL_NAME=Simon.Schuster@OCEAN.NET
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
KRB5CCNAME=FILE:/tmp/krb5cc_cdc1296041358_qRHqro
CDC_JOINED_DC=dc.ocean.net
HOME=/home/simon_schuster
SHLVL=2
CDC_JOINED_SITE=Ocean-Demo
DA_DASH_DEPTH=2
LOGNAME=simon_schuster
SSH_CONNECTION=192.168.81.26 58672 192.168.81.25 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
CDC_JOINED_ZONE=CN=Global,CN=Zones,OU=Unix,DC=ocean,DC=net
CDC_LOCALHOST=engcen5.ocean.net
G_BROKEN_FILENAMES=1
CDC_JOINED_DOMAIN=ocean.net
_=/usr/bin/env
总之,没有获取环境变量与Centrify无关,而是与shell被非交互调用有关

Centrify只负责身份验证、访问控制和策略实施,不影响OpenSSH或shell的默认行为

希望这有帮助