博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eclipse操作伪分布式集群报错
阅读量:6613 次
发布时间:2019-06-24

本文共 2549 字,大约阅读时间需要 8 分钟。

hot3.png

最近在初学hadoop时,用java往hdfs中写入文件时报错,现把报错问题整理,以免今后出现一样的问题。

先上简单的代码,代码只是简单的往hdfs中写入文件和判断文件是否存在:

package com.xiaoxing.hadoop;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class HdfsDemo {		public static void main(String[] args) throws IOException {		writeFile("helloWorldTest","hello world,hadoop!");		if (exist("helloWorldTest")) {			System.out.println("文件存在");		} else {			System.out.println("文件不存在");		}	}			/**	 * 写入往fileName中写入数据	 * @param fileName	 * @param context	 * @throws IOException 	 */	private static void writeFile(String fileName,String context) throws IOException {		Configuration conf = new Configuration();		conf.set("fs.defaultFS", "hdfs://192.168.1.109:9000");		conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");		FileSystem fs = FileSystem.get(conf);		byte[] buffer = context.getBytes();		FSDataOutputStream os = fs.create(new Path(fileName));		os.write(buffer,0,buffer.length);		os.close();		fs.close();	}		/**	 * 判断文件是否存在	 * @param fileName	 * @return	 * @throws IOException 	 */	private static boolean exist(String fileName) throws IOException {		Configuration conf = new Configuration();		conf.set("fs.defaultFS", "hdfs://192.168.1.109:9000");		conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");		FileSystem fs = FileSystem.get(conf);		boolean isExist = fs.exists(new Path(fileName));		fs.close();		return isExist;	}	}

执行碰到的第一个问题:连接被拒。我的环境是在一台Unbutu机器上装了一个hadoop的伪分布式集群(ip为192.168.1.109),本机是win10(ip为192.168.1.109)。

Exception in thread "main" java.net.ConnectException: Call From AFAAW-704030720/192.168.1.108 to 192.168.1.109:9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

发现是在hadoop中配置的core-site.xml文件中配置fs.defaultFS值为的是hdfs://localhost:9000,把其修改为对应集群的IP即可,如我的Hadoop机器的IP是192.168.1.109就修改为hdfs://192.168.1.109:9000即可,这个问题就解决了。

第二个问题:

解决方法:

1.在执行eclipse的机器上增加系统变量:HADOOP_USER_NAME=hadoop(hadoop为有权限执行hadoop集群的用户)

2.修改权限:hadoop fs -chmod 777 /user/hadoop,/user/hadoop这个路径为HDFS中的文件路径  。

上面二种方法选择一种,建议选择第一种,每二种修改权限会引起安全问题。

第三个问题:There are 0 datanode(s) running and no node(s) are excluded in this operation

解决方法 :

1.执行./stop-dfs.sh停掉hadoop

2.删除core-site.xml文件中配置的dfs.namenode.name.dir设置的文件夹下的current文件夹

3.执行格式化:./bin/hdfs namenode -format

4.重启:./start-dfs.sh

 

转载于:https://my.oschina.net/u/729917/blog/910887

你可能感兴趣的文章
英特尔嵌入式突围
查看>>
WIN FORM 多线程更新UI(界面控件)
查看>>
【常见问题】系列01:双击文件夹打开新窗口
查看>>
JDBC公共动作类
查看>>
JUnit单元测试
查看>>
[logstash-input-file]插件使用详解
查看>>
HDU 3103 Shoring Up the Levees(计算几何 搜寻区域)
查看>>
spring mvc模拟用户增删改查以及登录和上传文件的相关流程
查看>>
植物大战僵尸
查看>>
Inner Functions - What Are They Good For?
查看>>
原创文章
查看>>
python之文件操作-复制、剪切、删除等
查看>>
LAMP环境搭建
查看>>
css3实现可以计算的自适应布局——calc()
查看>>
理解JavaScript私有作用域
查看>>
Codeforces 626F Group Projects(滚动数组+差分dp)
查看>>
BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】
查看>>
Drupal 7模板(主题钩子)的建议
查看>>
nginx配置文件中location说明
查看>>
连载-第1章绪论 1.1嵌入式系统概述
查看>>