【问题标题】:hadoop 2.2.0 64-bit installing but cannot starthadoop 2.2.0 64位安装但无法启动
【发布时间】:2013-11-15 21:53:06
【问题描述】:

我正在尝试在服务器上安装 Hadoop 2.2.0 集群。现在所有的服务器都是 64 位的,我下载了 Hadoop 2.2.0 并且所有的配置文件都已经设置好了。当我运行 ./start-dfs.sh 时,出现以下错误:

13/11/15 14:29:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/hchen/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.namenode]
sed: -e expression #1, char 6: unknown option to `s' have: ssh: Could not resolve hostname have: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
-c: Unknown cipher type 'cd'
Java: ssh: Could not resolve hostname Java: Name or service not known
The authenticity of host 'namenode (192.168.1.62)' can't be established.
RSA key fingerprint is 65:f9:aa:7c:8f:fc:74:e4:c7:a2:f5:7f:d2:cd:55:d4.
Are you sure you want to continue connecting (yes/no)? VM: ssh: Could not resolve        hostname VM: Name or service not known
You: ssh: Could not resolve hostname You: Name or service not known
warning:: ssh: Could not resolve hostname warning:: Name or service not known
library: ssh: Could not resolve hostname library: Name or service not known
have: ssh: Could not resolve hostname have: Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
...

除了64位,还有其他错误吗?我已经完成了namenode和datanodes之间的登录,没有密码,其他错误是什么意思?

【问题讨论】:

  • 对于可搜索性:这个问题也适用于 Hadoop 2.4.0 和 Hadoop 2.4.1。

标签: hadoop


【解决方案1】:

将以下条目添加到 .bashrc,其中 HADOOP_HOME 是您的 hadoop 文件夹:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

另外,执行以下命令:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

【讨论】:

    【解决方案2】:

    根本原因是hadoop中默认的native library是为32位构建的。 解决办法

    1) 在.bash_profile 中设置一些环境变量。请参考https://gist.github.com/ruo91/7154697 或者

    2) 重建你的hadoop原生库,请参考http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html

    【讨论】:

    • 欢迎来到 SO。请从提到的链接中提供更多详细信息。如果它们不可用,它将有助于解决问题
    【解决方案3】:

    你也可以在 hadoop-env.sh 中导出变量

    vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
    

    /usr/local/hadoop - 我的 hadoop 安装文件夹

    #Hadoop variables
    export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 # your jdk install path
    export HADOOP_INSTALL=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_INSTALL/bin
    export PATH=$PATH:$HADOOP_INSTALL/sbin
    export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_HOME=$HADOOP_INSTALL
    export HADOOP_HDFS_HOME=$HADOOP_INSTALL
    export YARN_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
    

    【讨论】:

    • 将 export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib" 改为 export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
    【解决方案4】:

    我觉得这里唯一的问题和this question中的一样,所以解决方法也是一样的:


    阻止 JVM 将堆栈保护警告打印到 stdout/stderr,因为这会破坏 HDFS 启动脚本。


    通过替换 etc/hadoop/hadoop-env.sh 行来做到这一点:

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
    

    与:

    export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
    


    This solution 已在 Sumit Chawla's blog 上找到)

    【讨论】:

    • 堆栈保护问题主要发生在 x64 架构上。
    • 关于这个错误的任何想法。 WARN util.NativeCodeLoader: 无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类
    【解决方案5】:

    问题不在于本机库。请注意,这只是一个警告。请导出上面提到的hadoop变量。这会起作用的

    【讨论】:

      【解决方案6】:

      你有三个问题:

      1. 无法加载本机hadoop库”正如@Nogard所说。他的回答解决了这个问题。
      2. "无法建立主机'namenode (192.168.1.62)'的真实性。"是因为你没有ssh认证。这样做:

        ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys your_install_user@192.168.1.62:/home/your_install_user/.ssh/

      3. "sed:-e 表达式 #1,字符 6:`s' 的未知选项有:ssh:无法解析主机名有:名称或服务未知 HotSpot(TM):ssh:无法解析主机名 HotSpot(TM):名称或服务未知 -c: "

        试试这个:编辑你的 .bash_profile.bashrc 并把它放进去:

        export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
        export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
        

        source .bash_profilesource .bashr 使更改立即生效。

      【讨论】:

        【解决方案7】:

        我遇到了类似的问题,在按照上述所有建议后无法解决。

        终于明白了,配置的主机名和分配的IP地址不一样。

        我的主机名是vagrant,它是在/etc/hostname 中配置的。但是我发现/etc/hosts中没有分配vagrant的IP地址。在/etc/hosts 中,我只找到了localhost 的IP 地址。

        一旦我更新了localhostvagrant 的主机名,所有上述问题都得到了解决。

        【讨论】:

          【解决方案8】:

          确保您的HADOOP_HOMEHADOOP_PREFIX 设置正确。我有这个问题。此外,ssh 无密码需要正确设置。

          【讨论】:

            猜你喜欢
            • 2015-06-17
            • 1970-01-01
            • 2015-06-10
            • 2014-03-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多