Windows中Maven的安装

1.将Maven解压到一个目录

2.配置环境变量

首先没配之前 使用cmd命令 mvn -v是不生效的

maven项目文件带了一个J maven fileset_maven项目文件带了一个J


然后

maven项目文件带了一个J maven fileset_hadoop_02


maven项目文件带了一个J maven fileset_Maven的安装_03


关掉原先的cmd窗口 重新打开一个 生效了

maven项目文件带了一个J maven fileset_Maven的安装_04


3.配置setting.xml文件 指定本地仓库位置

然后配置本地仓库的位置

D:\install\apache-maven-3.3.9\conf

打开Maven安装目录下的conf里面的setting文件

找到这一行

从注释里面拿出来 顺便改下地址

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_05


maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_06


这个文件夹自己建一个然后将路径改上4.和java编译工具整合

这里以eclipse做工具

打开工具栏的window 的Preference

maven项目文件带了一个J maven fileset_Java读取hdfs文件_07


maven项目文件带了一个J maven fileset_hadoop_08


maven项目文件带了一个J maven fileset_maven项目文件带了一个J_09


然后记得将setting也设置我们安装目录下的conf的setting路径

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_10


注意最下方的目录使我们刚刚配置的本地仓库目录

这样我们的编译器就和Maven整合上了


这样我们来建一个Maven项目
依次点击 Flie New MavenProject Next 选择 quickstart 然后Next 起名字 然后finish

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_11


maven项目文件带了一个J maven fileset_hadoop_12


maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_13

然后我就创建失败了

这里我出了一个问题 这个setting这个设置 第二个路径没有配 应该和第一句一样(虽然我不知啥意思)

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_10


即这样

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_15


然后啊 还是有错误


根据这个 弄了半天

maven项目文件带了一个J maven fileset_Maven的安装_16


maven项目文件带了一个J maven fileset_hadoop_17


maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_18


maven项目文件带了一个J maven fileset_hadoop_19


完了我重启eclipse

新建第一次时是All Catalogs是空的 结果 我又点了install 才找到quickstart 然后再次点击All 竟然出现了所有的 找不到quick 不得已又点开了install 才找到

然后下一步创建

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_20


maven项目文件带了一个J maven fileset_maven项目文件带了一个J_21


然后继续一步一步创建 成功了

maven项目文件带了一个J maven fileset_hadoop_22


然后打开后才和视频中比对发现少了好多东西

maven项目文件带了一个J maven fileset_hadoop_23


maven项目文件带了一个J maven fileset_Java读取hdfs文件_24


准确的说少了JRE system Library 和Maven dependencies

百度后

好像是第一次使用 没有这些东西 需要下载 然后我操作了一下

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_25


maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_26


maven项目文件带了一个J maven fileset_Maven的安装_27


找到了Progress 果然没有下载

maven项目文件带了一个J maven fileset_Java读取hdfs文件_28


这里吧 我有百度 说是什么把setting的mirror设置成阿里云的镜像比较快

还是啥的 反正一堆设置 需要自行百度

我啥也没改

一边百度一边等着 等了大概半个小时

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_29


这个progress结束了

我的左侧的这几个包也出现了

开心

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_30


下一步

在配置pox.xml文件了

好像是为了导包 hadoop的jar包

我们登录这个网址 搜索hadoop

点击hdfs

https://mvnrepository.com

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_31


我们现在用的hadoop 2.7.1版本 找到点进去点Maven 复制内容

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_32


就是这么个弄法 还有其他的 也可以从这里找相关配置

这里我们先弄几个(其实我也没一个一个找 就是视频暂停后敲上的)

我直接整个复制过来的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>qf.com</groupId>
  <artifactId>QF_Online</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>QF_Online</name>
  <url>http://maven.apache.org</url>
    <!-- 自定义变量 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hadoop.version>2.7.1</hadoop.version>
  </properties>
    <!-- 项目jar包的依赖 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- jdk依赖 -->
    <dependency>
        <groupId>jdk.tools</groupId>
        <artifactId>jdk.tools</artifactId>
        <version>1.7</version>
        <scope>system</scope>
        <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
    </dependency>
    <!-- hadoop start -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-hdfs</artifactId>
	    <version>${hadoop.version}</version>
	</dependency>
	<!-- hadoop end -->
  </dependencies>
</project>

设置完成后 保存后 我们看到progress这个窗口 会进行下载 应该就是导入包的过程

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_33


emmm…就这样 我等了一个多小时 还没下载完 出去跑了个步回来了都

没办法 修改镜像mirrors

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_34


在mirrors里面添加mirror那段代码

<mirror>         
      <id>alimaven</id>
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror>

重启eclipse
然后 …我去
一分钟左右吧 就好了 气死我了

①将hdfs文件系统内文件打印到控制台

然后创建一个类 写个基本的读取文件

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_35


然后写代码 一定注意导入的包是不是hadoop下面的

文件路径 要确认下是否存在该文件

maven项目文件带了一个J maven fileset_hadoop_36

package qf.com.hdfs;



import java.io.IOException;

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

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	public static void main(String[] args) throws IOException {
		readFileToConsole("/test/if.sh");
	}
	//读取hdfs文件系统的文件
	public static void readFileToConsole(String path) throws IOException {
		//获取配置
		Configuration conf = new Configuration();
		//配置name和value
		//第一个参数是我们以前配置过
		//第二个参数相当于总的hdfs系统的入口的地方 就是我们的命名空间
		conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
		//获取hdfs文件系统的操作对象
		FileSystem fs = FileSystem.get(conf);
		FSDataInputStream fis = fs.open(new Path(path));
		//IOUtils.copyBytes(in, out, conf, close);
		//四个参数 一个输入流 一个输出流(我们直接打印到控制台)
		//一个是块大小 这里我们使用4096 一个是完事后是否关闭这些流 我们选择是
		IOUtils.copyBytes(fis, System.out, 4096, true);
	}
}

运行前要将集群启动起来

运行成功

maven项目文件带了一个J maven fileset_Java读取hdfs文件_37


这是写到控制台上

我们还可以写到Windows下文件去

注意导入的包 还要注意是URI 不是URL

②将hdfs文件系统内文件下载到Windows

package qf.com.hdfs;

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

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

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
		//readFileToConsole("/test/if.sh");
		readFileToLocal("/test/if.sh");
	}
	//读取hdfs文件系统的文件打印到Windows
		public static void readFileToLocal(String path) throws IOException, InterruptedException, URISyntaxException {
			FSDataInputStream fis = null;
			OutputStream out = null;
			try {
				//获取配置
				Configuration conf = new Configuration();
				//配置name和value
				//conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
				//获取hdfs文件系统的操作对象 有七八种方法 我们再使用另外一种方法
				FileSystem fs = FileSystem.get(new URI("hdfs://192.168.37.111:9000"), conf, "root");
				fis = fs.open(new Path(path));
				out =  new FileOutputStream(new File("D:\\install\\hadoopdata\\test01.txt"));
				IOUtils.copyBytes(fis, out, 4096, true);
			} catch (Exception e) {
				// TODO: handle exception
			}finally {
				fis.close();
				out.close();
			}
		}
}

结果 原来是没有这个文件的

maven项目文件带了一个J maven fileset_Maven的安装_38

③上传文件到将hdfs文件系统内

package qf.com.hdfs;

import java.io.IOException;
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;

/*
*@author Shishuai E-mail:1198319583@qq.com
*@version Create time : 2019年5月22日下午8:48:47
*类说明:用java代码操作hdfs文件系统
*/
public class HdfsTest {
	static FileSystem fs = null;
	static {
		// 获取配置
		Configuration conf = new Configuration();
		// 配置name和value
		// conf.set("fs.defaultFS", "hdfs://192.168.37.111:9000");
		// 获取hdfs文件系统的操作对象 有七八种方法 我们再使用另外一种方法
		try {
			fs = FileSystem.get(new URI("hdfs://192.168.37.111:9000"), conf, "root");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
		// readFileToConsole("/test/if.sh");
		//readFileToLocal("/test/if.sh");
		copyFromLocal();
	}

	
	
	// 上传文件到hdfs文件系统内
	// 这次我们改进下 将获取配置和配置对象提取出来 放到上面 在静态代码块中
	public static void copyFromLocal() throws IOException, InterruptedException, URISyntaxException {
		fs.copyFromLocalFile(new Path("D:\\\\install\\\\hadoopdata\\\\123.txt"), new Path("/test/123"));
		System.out.println("finished..");
	}
}

先确认下要上传的路径下没有重名文件

maven项目文件带了一个J maven fileset_Maven的安装_39


maven项目文件带了一个J maven fileset_Maven的安装_40


运行完成后 再查一遍 就有了123

maven项目文件带了一个J maven fileset_Java读取hdfs文件_41


查看一下具体内容 没有错误

maven项目文件带了一个J maven fileset_maven项目文件带了一个J_42

前面有个hdfs的shell命令忘记讲了

删除文件
hdfs dfs -rm [-R] /test/123

-R是递归删除

我们试一下 成功

maven项目文件带了一个J maven fileset_Java操作hdfs文件系统_43


试一下递归删除

maven项目文件带了一个J maven fileset_Maven的安装_44