在eclipse中配置hdfs和mapreduce开发环境并新建hadoop项目,运行第一个hdfs api项目

在eclipse中配置mapreduce开发环境

    (1)将hadoop-eclipse-plugin-2.6.4.jar复制到eclipse安装目录的plugins目录下(如果不成功复制到dropins中),之后启动eclipse 。此时从eclipse界面的左侧“Project Explorer”视图中,下面发现“DFS Locations”,说明Eclipse已经识别刚才放入的Hadoop Eclipse插件了。并且在“Window”菜单下的“Preference”,,里面会多出“Hadoop Map/Reduce”选项

    (2)选择“Window”菜单下的“Preference”,然后弹出一个窗体,在窗体的左侧,有一列选项,里面会多出“Hadoop Map/Reduce”选项,点击此选项,选择Hadoop的安装目录(如D:\HadoopWorkPlat\hadoop-2.6.4),之后确定。

    (3)切换到“Map/Reduce”界面模式。选择“Window”菜单下选择“Open Perspective”,弹出一个窗体,从中选择“Map/Reduce”选项即可进行切换。

    (4)建立与Hadoop集群的连接。在Eclipse软件下面的“Map/Reduce Locations”区域单击右键,弹出一个选项,选择“New Hadoop Location”,然后弹出一个窗体。填写下列内容:

    Location Name:可以任意取名(比如hadoop),用于标识一个“Map/Reduce Location” 。

  Map/Reduce Master  Host:master(Master.Hadoop的IP地址)Port:8020 (此端口是在core-site.xml中配置的fs.defaultFS的值)。

  DFS Master:Use M/R Master host:前面的勾上。(因为我们的NameNode和JobTracker都在一个机器上。) Port:8020 。

  User name:zhang(默认为Win系统管理员名字,因为我们之前改了所以这里就变成了zhang。这里不需要修改)。注意,这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。

    接着点击“Advanced parameters”从中找见“hadoop.tmp.dir”,修改成为我们Hadoop集群中设置的地址(这个参数在“core-site.xml”进行了配置  此地方可以配置/usr/local/hadoop-2.6.4/tmp)。

    点击“finish”之后,会发现Eclipse软件下面的“Map/Reduce Locations”出现一个条目,就是我们刚才建立的“Map/Reduce Location”。

    (5)查看HDFS文件系统,并尝试建立文件夹和上传文件。点击Eclipse软件左侧的“DFS Locations”下面的“Win7ToHadoop”,就会展示出HDFS上的文件结构。在文件结构的相应位置单击右键,通过选择弹出菜单可执行新建目录、对HDFS上载和下载文件等操作。

    到此为止,我们的Hadoop Eclipse开发环境已经配置完毕。

   (6)创建一个mapreduce项目

创建一个类 。注意代码中的IP地址为主机的IP地址 

package helloWorldMapReduce;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;

public class TestDemo {
	/**
	 * 通过api连接并下载
	 * @throws IOException
	 * @throws URISyntaxException
	 */
	@Test
	public void connect_get() throws IOException, URISyntaxException {
		//--获取 环境变量对象  
		Configuration conf = new Configuration();
		//--可以通过此对象来设定环境,通过代码设定的优先级要高于配置文件的
		//优先级  代码设定的是局部变量
		conf.set("dfs.repliaction", "1");
		//连接HDFS文件系统,此ip地址是master服务器的IP地址,根据你自己的地址修改
		FileSystem system =FileSystem.get(new URI("hdfs://10.211.55.6:8020"), conf);
		//--获取指定文件的输入流,HDFs中必须有/park02/4.txt文件
		InputStream in =system.open(new Path("/park02/4.txt"));
		//--获取本地文件输出流,下载到项目的根目录中,刷新下项目就出来了。
		OutputStream out =new FileOutputStream(new File("data.txt"));
		//--通过hadoop提供的工具类,完成数据传输
		IOUtils.copyBytes(in, out, conf);
	}
	@Test
	public void put() throws IOException, URISyntaxException {
		//--获取 环境变量对象  
				Configuration conf = new Configuration();
				//--可以通过此对象来设定环境,通过代码设定的优先级要高于配置文件的
				//优先级  代码设定的是局部变量
				conf.set("dfs.repliaction", "1");
				//连接HDFS文件系统
				FileSystem system =FileSystem.get(new URI("hdfs://10.211.55.6:8020"), conf);
			    //获取hdfs文件的输出流
				OutputStream out =system.create(new Path("/park03/1.txt"));
				//--获取本地文件袋额输入流
				InputStream in =new FileInputStream(new File("data.txt"));
				IOUtils.copyBytes(in, out, conf);

	}
//@Test
	public void other() throws IOException, URISyntaxException {
		//--获取 环境变量对象  
		Configuration conf = new Configuration();
		//--可以通过此对象来设定环境,通过代码设定的优先级要高于配置文件的
		//优先级  代码设定的是局部变量
		conf.set("dfs.repliaction", "1");
		//连接HDFS文件系统
		FileSystem system =FileSystem.get(new URI("hdfs://10.211.55.6:8020"), conf);
		//--删除指定目录或者文件 ,true 是递归删除
//		system.delete(new Path("/park02"), true);
		system.rename(new Path("/park04"), new Path("/park05"));
	}
	@Test
	public void getBlockLocation() throws IOException, URISyntaxException {
		//--获取 环境变量对象  
				Configuration conf = new Configuration();
				//--可以通过此对象来设定环境,通过代码设定的优先级要高于配置文件的
				//优先级  代码设定的是局部变量
				conf.set("dfs.repliaction", "1");
				//连接HDFS文件系统
				FileSystem system =FileSystem.get(new URI("hdfs://10.211.55.6:8020"), conf);
				//查看块的位置方法
				//第一个参数文件路径  第二个参数start控制的是查看块的起始位置
				//第三个参数length:块的终止位置
				BlockLocation[] blks = system.getFileBlockLocations(new Path("/park05/NOTICE.txt"), 0, 0);
				for (BlockLocation blk : blks) {
					System.out.println(blk);
				}
	}
}

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值