Hadoop MapReduce 程序错误
Hadoop MapReduce program Error
我的第一个 wordcount MapReduce 程序出现以下错误:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/': No such file or directory
OS & Hadoop 版本
CentOS
Release 6.6 (Final)
Kernel Linux 2.6.32-504.12.2.el6.x86_64
GNOME 2.28.2
Hadoop 2.6.0 64bit version
Bashrc配置
export JAVA_HOME ="/usr/lib/jvm/jdk1.8.0"
export PATH =$PATH:$JAVA_HOME/bin"
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
export HADOOP_INSTALL="/home/Kumar/DEV/HDS/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
运行 守护进程
3763 SecondaryNameNode
4406 ResourceManager
22264 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
17736 Jps
30584 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
4697 NodeManager
3611 DataNode
4059 NameNode
我从下面的 Apache 站点复制了 WordCount 程序,并按照 tutorial 中给出的步骤进行操作。当我编译 WordCount.java 时,它创建了 3 个 class 文件:
hadoop com.sun.tools.javac.Main /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/src/WordCount.java
WordCount.class
WordCount$IntSumReducer.class
WordCount$TokenizerMapper.class
当我 运行 HDFS 命令时,即使文件和目录存在,它也会抛出以下警告消息和未找到文件或目录消息
hdfs dfs -cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1': No such file or directory
hdfs dfs -cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/': No such file or directory
第一条消息只是一个警告,并不麻烦。
出现第二条消息是因为 hadoop -fs
将查找 hdfs,而不是您的本地文件系统。您可能想检查您的文件是否存在 ls
.
- 您尝试使用的文件在本地 Linux 文件系统上,而不是在 HDFS 上。
所以使用可以使用简单的命令,如:
cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1
如果您的 MapReduce 程序需要 HDFS 上的输入文件,则将相同的文件放在 HDFS 和作业中的 HDFS 路径上。您可以使用此命令将文件放在 hdfs 上:
hadoop fs -put <input-file-path-on-linux> <path-on-hdfs>
您所引用的教程使用了 Mapreduce 的旧 API。您可以在此处查看当前 Hadoop 版本的相同教程:http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
希望对您有所帮助。
我的第一个 wordcount MapReduce 程序出现以下错误:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/': No such file or directory
OS & Hadoop 版本
CentOS
Release 6.6 (Final)
Kernel Linux 2.6.32-504.12.2.el6.x86_64
GNOME 2.28.2
Hadoop 2.6.0 64bit version
Bashrc配置
export JAVA_HOME ="/usr/lib/jvm/jdk1.8.0"
export PATH =$PATH:$JAVA_HOME/bin"
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
export HADOOP_INSTALL="/home/Kumar/DEV/HDS/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
运行 守护进程
3763 SecondaryNameNode
4406 ResourceManager
22264 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
17736 Jps
30584 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
4697 NodeManager
3611 DataNode
4059 NameNode
我从下面的 Apache 站点复制了 WordCount 程序,并按照 tutorial 中给出的步骤进行操作。当我编译 WordCount.java 时,它创建了 3 个 class 文件:
hadoop com.sun.tools.javac.Main /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/src/WordCount.java
WordCount.class
WordCount$IntSumReducer.class
WordCount$TokenizerMapper.class
当我 运行 HDFS 命令时,即使文件和目录存在,它也会抛出以下警告消息和未找到文件或目录消息
hdfs dfs -cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1': No such file or directory
hdfs dfs -cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
cat: `/home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/': No such file or directory
第一条消息只是一个警告,并不麻烦。
出现第二条消息是因为 hadoop -fs
将查找 hdfs,而不是您的本地文件系统。您可能想检查您的文件是否存在 ls
.
- 您尝试使用的文件在本地 Linux 文件系统上,而不是在 HDFS 上。
所以使用可以使用简单的命令,如:
cat /home/Kumar/DEV/Eclipse/eclipse/Workspace/MyFirstMapReduce/Files/input/file1
如果您的 MapReduce 程序需要 HDFS 上的输入文件,则将相同的文件放在 HDFS 和作业中的 HDFS 路径上。您可以使用此命令将文件放在 hdfs 上:
hadoop fs -put <input-file-path-on-linux> <path-on-hdfs>
您所引用的教程使用了 Mapreduce 的旧 API。您可以在此处查看当前 Hadoop 版本的相同教程:http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
希望对您有所帮助。