前提:
所有的操作操作都是在自建的完全分布式下进行操作的(即通过虚拟机搭建的完全分布式)。
使用IDEA创建maven工程,在此工程下进行操作,在运行程序前要保证已经将依赖包全部导入完毕。
一,上传Windows文件到hdfs系统中。
Configuration类:为Yarn、HSFS、MapReduce、NFS、调度器等提供参数的配置、配置文件的分布式传输(实现了Writable接口)等重要功能。
public class Text2 {
public static void main(String[] args) throws Exception {
Configuration conf=new Configuration();
//配置NameNode地址
//配置hdfs系统的ip地址,此地址是虚拟机的地址
URI uri=new URI("hdfs://192.168.10.102:9000");
//对文件进行操作,get()方法:获取文件信息,指定用户名
FileSystem fs=FileSystem.get(uri,conf,"root");
//windows本地的目录和文件,Path类:指定路径
Path srcPath = new Path("F:\\Hadoop\\hadoop-2.7.4.tar.gz");
Path dstPath = new Path("/text/"); //HDFS建立的新目录和文件对象
System.out.println("开始上传文件......");
//使用FileSystem类自带的接口上传文件
fs.copyFromLocalFile(srcPath,dstPath);
fs.close();
System.out.println("上传文件成功!!!");
}
}
二、上传虚拟机文件到完全分布式系统
上传Linux文件(即虚拟机中的文件)到hdfs中需要将下面的程序打包成jar包,然后上传到虚拟机中,上传完毕后,在该文件所在的目录下运行命令: hadoop jar jar包名。然后开始运行此程序。(提示:hdfs系统逻辑上独立于Linux系统,相等于一个独立的文件系统,不用认为上传文件是将文件上传到Linux目录下)。
public class Text3 {
public static void main(String[] args) throws Exception {
Configuration conf=new Configuration();
FileSystem fs = null;
System.setProperty("HADOOP_USER_NAME", "root");
fs = FileSystem.get(conf);
System.out.println("初始化结束");
// 输出文件所在的路径
System.out.println(fs.getHomeDirectory());
System.out.println(fs.getWorkingDirectory());
System.out.println("上传开始....");
//Linux的文件地址
Path src = new Path("/root/redis6");
// 要上传到hdfs的目标路径
Path dst = new Path("/text/");
// 上传文件方法
fs.copyFromLocalFile(src, dst);
// 关闭资源
fs.close();
System.out.println("上传结束");
}
}
三、导入依赖包
在此项目下创建 lib 包,然后将jar包全部复制到该lib包中,最后添加依赖。
Hadoop环境所需要的依赖包:
链接:https://pan.baidu.com/s/1obowwIjbXV9a16GIWKi7Iw
提取码:zshn