Hadoop java实现读取hdfs文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Agly_Clarlie/article/details/55808237

java实现读取hadoop的hdfs文件

ubuntu14.04 下 hadoop 的安装和eclipse配置hadoop的文档参考:
安装hadoop http://www.powerxing.com/install-hadoop/
安装eclipse配置hadoop http://www.powerxing.com/hadoop-build-project-using-eclipse/

进行eclipse的hadoop操作前启动hadoop

#启动命令
hadoop@h:/usr/local/hadoop$ sbin/start-dfs.sh 
#检查是否成功
hadoop@h:/usr/local/hadoop$ jsp
#如果出现jps、SecondaryNameNode、NameNode、DataNode说明成功启动,或者浏览器访问 http://localhost:50070
#关闭命令
hadoop@iiip-Lenovo:/usr/local/hadoop$ sbin/stop-dfs.sh 

安装完成后可以在eclipse里看到文件结构:
这里写图片描述

再次强调一定要启动hadoop,并且安装是按照上面的教程完成。

eclipse中input的文件夹对应着hdfs的文件目录,在eclipse中可视化
然后编码实现读取这里面的文档,编码实现

package org.apache.hadoop.examples;

import java.io.InputStream;
import java.net.URL;

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;

/**
 * 读出文件控制台输出
 * @author hadoop
 *
 */
public class ReadHdfsFile {

	public static final String HDFS_PATH = "hdfs://localhost:9000/user/hadoop/input/input.txt";
	//这里的路由要正确,对应着上面的截图
	
	public static void main(String[] args) throws Exception{
		
		URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
		
		final URL url = new URL(HDFS_PATH);
		final InputStream in = url.openStream();
		
		/**
		 * in 输入流
		 * out输出流
		 * 1024 buffersize 缓存区大小自定义大小
		 * close 是否关闭流
		 */
		IOUtils.copyBytes(in, System.out, 1024, true);
		
	}
}

ps:

如果报错
java.net.NoRouteToHostException: 没有到主机的路由…
这类的,请查看

  1. 代码中这一行是否正确
	public static final String HDFS_PATH = "hdfs://localhost:9000/user/hadoop/input/input.txt";
	//这里的路由要正确,对应着上面的截图
  1. 确认防火墙是否关闭成功

window系统

service iptables stop  

ubuntu系统

sudo ufw disable

谢谢。

阅读更多

没有更多推荐了,返回首页