大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互
最近在看厦大林子雨老师的mooc,3.6讲使用Eclipse开发环境与HDFS进行交互,我比较喜欢IDEA的风格,这篇blog记录了在使用IDEA时踩过的坑。
配置Maven环境
- Maven是什么?
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。(我的理解:通过pom.xml自动下载jar包并优化协作开发共享包的插件,而不用手动去导入jar包) - 下载 Maven
- 单步执行以下命令
$ cd Downloads #进入下载文件夹 $ sudo tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /usr/local #解压 $ cd /usr/local #进入解压后的目录 $ sudo mv apache-maven-3.6.1 maven #重命名 $ sudo gedit ~/.bashrc #添加环境变量
- 环境变量中添加
#maven export M2_HOME=/usr/local/maven export CLASSPATH=$CLASSPATH:$M2_HOME/lib export PATH=$PATH:$M2_HOME/bin
如图出现版本号则安装成功$ source ~/.bashrc #刷新环境变量配置 $ mvn -v #查看Maven版本
创建Maven工程
- IDEA中NewProject创建Maven
- pom.xml中填入以下内容(需要Maven加载的jar包集合)
<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.1</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> <mainClass>cn.itcast.hdfs.TestHdfsClient</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build>
- 右下角开始导入
导入HDFS配置文件
将Hadoop目录中(usr/local/hadoop/etc/hadoop
)core-site.xml
、hdfs-site.xml
复制到工程中的resources
下
创建测试类``
该测试类的功能是测试HDFS中user/hadoop
下是否存在test.txt
文件,目前是不存在的
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HadoopTest {
public static void main(String[] args) {
try {
String filename = "hdfs://localhost:9000/user/hadoop/test.txt";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
if(fs.exists(new Path(filename))){
System.out.println("文件存在");
}else{
System.out.println("文件不存在");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
测试结果:
上传test.txt
至hdf的user/hadoop
下:
重新运行HadoopTest:
结语:使用Maven能高效的管理项目中所需要的jar包,免去手动导入的麻烦。