Eclipse 连接 HDFS开发环境整合
解压Hadoop
解压hadoop-2.6.5.tar.gz,将解压后的文件夹存放到自己软件目录
D:\ProgramFiles
替换bin文件夹中的内容(Linux→windows)
解压windows的hadoop的bin压缩包
将bin目录里的文件复制粘贴到刚才的hadoop-2.6.5目录里的bin目录里(覆盖重复文件)
粘贴到
D:\ProgramFiles\hadoop-2.6.5\bin
完成示意图:
将hadoop.dll 拷贝到System32
(windows独有的类型文件 – 动态链接库粘贴到 System32目录中)
设置HADOOP环境变量
如果没有配置JAVA_HOME这里也要配置一下
设置hosts
C:\Windows\System32\drivers\etc
解压Eclipse
将eclipse压缩包中的文件拷贝到软件安装目录
新建MapReduce连接
window → showview → other → MapReduce
鼠标右键 新建
连接名 主机名 端口号 用户名
下面两个只建立一个即可
看情况 选择 active 状态的namenode节点
port:8020 是在Linux hadoop配置文件中配置过的
通过eclipse连接hdfs
创建Hadoop项目
创建一个普通Java项目
jdk选择刚才安装的1.7
添加jar包
我们之前都是先建一个文件夹然后设成资源文件夹再导入jar包
因为hadoop的jar包太多我们使用另外的方法
用户自定义类库
项目右键Build Path → Configure Build Path → Library
→ Add Library →
书写java代码
准备自定义类库
新建一个hadoop-lib121文件夹
将121个jar包拷贝进去
将文件夹移动到合适位置
添加jar包
点击Add External JARs
全部选中
添加Junit4
项目右键Build Path → Configure Build Path → Librarys
→ Add Library → JUnit → JUnit4 → Finish
完成示意图:
添加配置文件
从虚拟机中拷贝出hadoop配置文件
core-site.xml 和 dhfs-site.xml
简单的测试代码示例:
package com.xxxxx.gy;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.sun.org.apache.xml.internal.security.Init;
public class HelloHdfs {
private Configuration configuration;
private FileSystem fileSystem;
@Test
public void Hello() throws IOException{
//创建路径path对象
Path path = new Path("/xxxxx/gy/harry.txt");
boolean flag = fileSystem.exists(path);
System.out.println(flag);
}
@Before
public void init() throws IOException{
//加载配置文件
Configuration configuration = new Configuration(true);
//获取文件系统
fileSystem = FileSystem.get(configuration);
}
@After
public void destroy(){
System.out.println("HelloHdfs.destroy(222)");
}
}
上传文件
//上传文件
@Test
public void Upload() throws IOException {
//创建路径的path对象
Path path = new Path("/xxxxx/gy/harry.txt");
OutputStream outputStream = fileSystem.create(path);
//获取本地文件输入流
InputStream inputStream = new FileInputStream("D://harry.txt");
//将输入流数据导入到输出流
IOUtils.copyBytes(inputStream, outputStream, configuration, true);
}