hadoop安装路径应该是相同的跨节点
Hadoop 2.7安装在/opt/pro/hadoop/hadoop-2.7.3
在主,然后整个安装复制到奴隶,但不同的目录/opt/pro/hadoop-2.7.3
。然后我在slave机器上更新环境变量(例如,HADOOP_HOME,hdfs_site.xml用于namenode和datanode)。hadoop安装路径应该是相同的跨节点
现在我可以在slave上成功运行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的有文件大师:
[email protected]:/opt/pro/hadoop-2.7.3/etc/hadoop$ cat masters
master
不,不一定。但是,如果节点间的路径不同,则不能使用start-dfs.sh
,stop-dfs.sh
等脚本,yarn
也是如此。这些脚本引用执行脚本的节点的$HADOOP_PREFIX
变量。
代码片段hadoop-daemons.sh
使用start-dfs.sh
启动所有数据节点。
exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "[email protected]"
脚本已经写好,因为集群中的所有节点遵循相同的$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节点$ HADOOP_HOME都是独立的,但它可以通过不同的方式实例化。您可以通过将其设置为.bashrc文件来以全局方式对其进行定义,或者可以在您的Hadoop文件夹中将其设置为本地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
我确认的环境变量在''.bashrc''中是正确的,并且我没有在etc/hadoop/* xml中添加任何新变量。不确定它是否与从服务器上的主设备相关。无论如何,我强制安装在两台服务器上保持一致,作为当前的解决方案。 –