在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, ?????????-附件资源
在网上搜集的以及本人自己总结的hadoop集群常见问题及解决办法,融合了网上常常搜到的一些文档以及个人自己的经验。
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...
NULL 博文链接:https://ouyida3.iteye.com/blog/1144326
2.7.2使用2.2的hadoop.dll和winutils.exe是会报错的,并不能正常使用,现在送上一个管用的~
前提是你已经在windows上安装hadoop2.7.1。请将hadoop2.7.1中的bin和etc删除,使用hadooponwindows-master中的bin和etc代替 资源说明: 有些时候,我们想在自己电脑windows系统上使用hadoop,这样省去了建虚拟机的...
windows上安装hadoop教程,详细介绍了安装规则。
在Windows上安装Hadoop 使用cygwin模拟使用linux环境 体验hadoop的分布式计算优势
大数据安全-kerberos技术-hadoop安装包,hadoop版本:hadoop-3.3.4.tar.gz
尽管如此,仍然可以在Windows上搭建一个用于学习和开发的单节点Hadoop环境。以下是简化版的在Windows上安装Hadoop的步骤: 准备工作 1. 安装Java: 确保你的系统上已经安装了Java Development Kit (JDK) 8或更高版本...
hadoop2.7汇总:新增功能最新编译64位安装、源码包、API、eclipse插件下载
尽管如此,仍然可以在Windows上搭建一个用于学习和开发的单节点Hadoop环境。以下是简化版的在Windows上安装Hadoop的步骤: 准备工作 1. 安装Java: 确保你的系统上已经安装了Java Development Kit (JDK) 8或更高版本...
该压缩包是在官方包的基础上进行修改的,将Windows运行hadoop所需配置文件和部分插件已经导入,电脑只需安装64位java环境,修改hadoop-env.cmd配置即可使用
内容概要:windows环境下添加snappy源码,并对2.8.5的apache版本hadoop包进行编译,生成指定的hadoop.dll、snappy.dll文件,方便Windows环境下利用idea工具进行Hadoop、Spark的local模式下代码调试。 版本更新:...
今天使用自己的电脑,使用外网操作阿里云服务器上的HDFS。 报错 org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block 2、百度结果 参考 ...
赠送jar包:hadoop-auth-2.6.5.jar 赠送原API文档:hadoop-auth-2.6.5-javadoc.jar 赠送源代码:hadoop-auth-2.6.5-sources.jar 包含翻译后的API文档:hadoop-auth-2.6.5-javadoc-API文档-中文(简体)-英语-对照版...
在Windows上安装Hadoop教程-在Windows上安装Hadoop教程
Hadoop学习总结之五:Hadoop的运行痕迹
Hadoop学习总结之四:Map-Reduce的过程解析
在windows上hadoop-2.7.7版本所需的hadoop.dll和winutils.exe,解压后将windows-hadoop-2.7.7\hadoop-2.7.7\bin下面的hadoop.dll拷贝到C:\Windows\System32下面。另外,本依赖在win7 64位操作系统上实验有效