在节点之间,Hadoop安装路径应相同



hadoop 2.7安装在master的/opt/pro/hadoop/hadoop-2.7.3上,然后将整个安装复制到从属中,但是不同的目录/opt/pro/hadoop-2.7.3。然后,我在从机器上更新环境变量(例如,hdoop_home,hdfs_site.xml)。

现在,我可以成功地在从属上运行hadoop version。但是,在主人中,start-dfs.sh失败了消息:

17/02/18 10:24:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [master]
master: starting namenode, logging to /opt/pro/hadoop/hadoop-2.7.3/logs/hadoop-shijiex-namenode-shijie-ThinkPad-T410.out
master: starting datanode, logging to /opt/pro/hadoop/hadoop-2.7.3/logs/hadoop-shijiex-datanode-shijie-ThinkPad-T410.out
slave: bash: line 0: cd: /opt/pro/hadoop/hadoop-2.7.3: No such file or directory
slave: bash: /opt/pro/hadoop/hadoop-2.7.3/sbin/hadoop-daemon.sh: No such file or directory
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /opt/pro/hadoop/hadoop-2.7.3/logs/hadoop-shijiex-secondarynamenode-shijie-ThinkPad-T410.out
17/02/18 10:26:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

hadoop在从属上使用主(/opt/pro/hadoop/hadoop-2.7.3)的HADOOP_HOME,而从属的HADOOP_HOME/opt/pro/hadoop-2.7.3。那么,安装时 hadoop_home 在节点之间是否相同?


.bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:/usr/lib/jvm/java-7-openjdk-amd64/bin
export HADOOP_HOME=/opt/pro/hadoop-2.7.3
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

在从服务器上,$ hadoop_home/etc/hadoop有一个文件大师:

xx@wodaxia:/opt/pro/hadoop-2.7.3/etc/hadoop$ cat masters 
master

不,不一定。但是,如果节点之间的路径不同,则无法使用start-dfs.shstop-dfs.sh等脚本以及yarn的脚本。这些脚本是指执行脚本的节点的$HADOOP_PREFIX变量。

start-dfs.sh使用的hadoop-daemons.sh代码段

exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" ; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@" 

由于假设群集的所有节点遵循相同的 $HADOOP_PREFIX$HADOOP_HOME(已弃用)路径。

要克服这一点,

1)要么尝试在所有节点上具有相同的路径。

2)或登录群集中的每个节点,然后启动适用于该节点的DFS进程,

$HADOOP_HOME/sbin/hadoop-daemon.sh start <namenode | datanode | secondarynamenode| journalnode>

纱线也相同的过程,

$HADOOP_HOME/sbin/yarn-daemon.sh start <resourcemanager | nodemanager>

不,不应该。$ hadoop_home是每个hadoop节点的个体,但是可以通过不同的方式实例化。您可以通过在 .bashrc 文件中设置它来以全局方式定义它,也可以在Hadoop文件夹中的local hadoop-env.sh 脚本中设置它。验证群集的每个节点上的值相同。如果是全局,则可以通过 echo $ hadoop_home 对其进行检查。如果是脚本选项,则可以通过将其导入到当前上下文中并再次检查该变量来验证此变量:

. /opt/pro/hadoop/hadoop-2.7.3/bin/hadoop-env.sh
echo $HADOOP_HOME

除了确保您没有 hadoop.home.dir 属性,因为它覆盖了环境$ hadoop_home

最新更新