`
mozhenghua
  • 浏览: 324586 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在windows上访问hadoop系统 解决 Login failed: Cannot run program "whoami": CreateProcess error=2

 
阅读更多
在windows上访问hadoop系统
按照hadoop的例子HadoopDFSFileReadWrite.java,在eclipse里建立项目,拷贝lib导入projext,创建conf拷贝到本地作为src一部分
修改hadoop-site.xml中的fs.default.name属性为namenode的ip形式

static void usage() {
System.out.println("Usage : Client <inputfile> <output file>");
System.exit(1);
}

static void printAndExit(String str) {
System.err.println(str);
System.exit(1);
}

public static void main(String[] argv) throws IOException {
for(String arg : argv) {
System.out.println("arg="+arg);
}
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);

if (argv.length != 2) usage();

// Hadoop DFS deals with Path
Path inFile = new Path(argv[0]);
Path outFile = new Path(argv[1]);

// Check if input/output are valid
if (!fs.exists(inFile)) {
printAndExit("Input file not found");
}
if (!fs.isFile(inFile)) {
printAndExit("Input should be a file");
}
if (fs.exists(outFile)) {
printAndExit("Output already exists");
}

// Read from and write to new file
FSDataInputStream in = fs.open(inFile);
FSDataOutputStream out = fs.create(outFile);
byte buffer[] = new byte[256];
try {
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) > 0) {
out.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
System.out.println("Error while copying file");
} finally {
in.close();
out.close();
}
}

运行报错:
Exception in thread "main" java.io.IOException: Login failed: Cannot run program "whoami": CreateProcess error=2, ?????????
at org.apache.hadoop.dfs.DFSClient.createNamenode(DFSClient.java:124)
at org.apache.hadoop.dfs.DFSClient.<init>(DFSClient.java:143)
at org.apache.hadoop.dfs.DistributedFileSystem.initialize(DistributedFileSystem.java:65)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:166)
at org.apache.hadoop.fs.FileSystem.getNamed(FileSystem.java:122)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:94)
at com.chua.hadoop.client.Client.main(Client.java:25)

网上查资料,发现windows上没有whoami命令(即使有估计也是访问不了,因为hdfs的文件权限形式;后来试了一下随便填了一个用户去做,报错:org.apache.hadoop.fs.permission.AccessControlException: Permission denied),
在hadoop-site.xml里加入
<property>
<name>hadoop.job.ugi</name>
<value>zxf,zxf</value>
</property>

还是报错
java.net.ConnectException: Connection refused

此时我又把代码放到linux下运行,还是同样的错误,期间让费了很多时间,看了很多blog,都没有相关资料,我看了hadoop中关于Permissions and Security的资料,也没有看出问题.
于是把代码放到linux下,并把把fs.default.name改回到namenode的运行参数,即:localhost:prot的形式,这次运行成功,我纳闷
分别telnet localhost prot与telnet ip port,发现localhost的可以连上,而ip的连不上,问题集中在这里了,我没有socket编程经验,所以问了旁边的人,说socket listener的建立分形式的,像我这样的情况,listener只能创建本地socket.
这次修改hdfs环境的hadoop-site.xml将fs.default.name改成ip形式,重启hdfs
然后把clinet的hadoop-site.xml中的fs.default.name改为ip,运行成功,这个问题困扰了一天时间.
windows环境的clinet运行也同样成功了

分享到:
评论

相关推荐

    eclipse develop hadoop chmod :Cannot run program "chmod": CreateProcess error=2, ?????????-附件资源

    eclipse develop hadoop chmod :Cannot run program "chmod": CreateProcess error=2, ?????????-附件资源

    hadoop常见问题及解决办法

    问题描述:在reduce阶段,Hadoop抛出Shuffle Error:Exceeded MAX_FAILED_UNIQUE_FETCHES错误。 解决办法:该问题是由于reduce预处理阶段shuffle时获取已完成的map输出失败次数超过上限造成的,上限默认为5。解决...

    Hadoop2.7.2的bin,包含有编译好的hadoop.dll和winutils.exe

    总结一下,这个Hadoop 2.7.2的bin压缩包提供了适用于Windows的`hadoop.dll`和`winutils.exe`,解决了旧版本可能存在的兼容性问题,使得在Windows上搭建和运行Hadoop集群变得更加便捷。正确配置和使用这些组件,可以...

    在Windows上安装Hadoop

    2. Hadoop在Windows上的性能通常不如Linux,因为Cygwin并非完整的Linux模拟,可能存在一些不兼容或效率低下的情况。 通过以上步骤,你可以在Windows上成功安装并运行Hadoop,体验分布式计算的魅力。尽管过程可能会...

    org.apache.hadoop.ipc.Client: Retrying connect to server

    NULL 博文链接:https://ouyida3.iteye.com/blog/1144326

    windows上配置hadoop所需要的winutils和hadoop.dll

    由于Hadoop最初是为Linux设计的,因此在Windows上运行Hadoop时,需要这个特殊工具来模拟某些Linux系统调用。 `hadoop.dll`是Hadoop在Windows平台上的动态链接库文件,它是`winutils`正常运行所必需的。这个库文件...

    在Windows上安装Hadoop教程

    在Windows上安装Hadoop是一项需要细致操作的任务,尤其对于初学者来说可能会遇到一些挑战。Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护,它主要用于处理和存储大规模数据。本教程将指导你如何在...

    windows安装需要的Hadoop库文件

    然而,通过一些额外的配置和库文件,我们可以在Windows上运行Hadoop。以下是一些关于在Windows上安装Hadoop库文件的关键知识点: 1. **Java开发工具**:Hadoop依赖于Java环境,因此首先需要安装Java Development ...

    hadoop1.0 Failed to set permissions of path 解决方案

    ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: \tmp\hadoop-admin \mapred\local\ttprivate to 0700 at org.apache...

    Hadoop Windows系统安装包 和 winutils的文件

    在Windows上安装和配置Hadoop可能比在Linux上复杂,但通过以上步骤,你应该能够在Windows环境中运行Hadoop,进行大数据处理。在实际应用中,Hadoop常与其他大数据工具如Hive、Pig、Spark等结合使用,构建更强大的...

    hadooponwindows-master

    前提是你已经在windows上安装hadoop2.7.1。请将hadoop2.7.1中的bin和etc删除,使用hadooponwindows-master中的bin和etc代替 资源说明: 有些时候,我们想在自己电脑windows系统上使用hadoop,这样省去了建虚拟机的...

    Windows上安装Hadoop

    在Windows上安装Hadoop通常需要借助于Cygwin,这是一个为Windows提供类Unix环境的开源工具集,因为它可以帮助我们运行那些在Linux或Unix上才能正常工作的命令。 1. **下载与安装Cygwin**: - 访问Cygwin官方网站,...

    windows环境下的hadoop3.1.0依赖,winutils

    在系统环境变量中添加`C:\hadoop\hadoop-3.1.0`到HADOOP_HOME,并将 `%HADOOP_HOME%\bin` 添加到PATH。 4. 配置Hadoop的配置文件,主要是`core-site.xml`和`hdfs-site.xml`。这两个文件位于`C:\hadoop\hadoop-3.1.0\...

    hadoop的windows压缩包

    在Windows操作系统上安装和运行Hadoop可能比在Linux环境下稍微复杂一些,但通过提供的压缩包文件,我们可以逐步了解如何在Windows上搭建Hadoop环境。 1. **Hadoop-2.7.6.tar.gz**: 这是Hadoop的一个稳定版本,2.7.6...

    Nutch程序运行环境配置

    - 在Windows上运行Nutch可能会遇到一些特定的问题,比如上述描述中的“Login failed: Cannot run program 'whoami': CreateProcess error=2”。这个错误通常是因为Nutch尝试使用Unix-like的命令`whoami`,但在...

    windows下安装hadoop的依赖库winutils

    本文将详细介绍如何在Windows上为Hadoop 2.6.5和3.2.1版本安装和配置WinUtils。 首先,了解Hadoop。Hadoop是一个开源框架,用于处理和存储大量数据,它基于分布式文件系统HDFS(Hadoop Distributed File System)和...

    windows版hadoop

    在Windows上安装Hadoop可能会遇到一些挑战,因为Hadoop最初是为Linux设计的。但是,通过一些特殊配置,如使用Cygwin或Windows Subsystem for Linux(WSL)等工具,可以在Windows环境下运行Hadoop。这里我们将探讨...

Global site tag (gtag.js) - Google Analytics