边学边写,持续更新中 配合目录用
1. 环境配置
- 下载并解压Maven到
/opt 目录下,配置环境变量 在/etc/profile.d 路径下创建一个 maven.sh 文件,写入以下代码 source /etc/profile ,用 mvn -v 查看是否安装成功,如图
export MAVEN_HOME=/opt/apache-maven-3.0.5
export PATH=$PATH:${MAVEN_HOME}/bin
2. 更换maven源 vim /opt/apache-maven-3.0.5/conf/settings.xml ,在指定位置写入以下代码,如图
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
2. 测试
- 创建Maven工程
在 /opt 目录下,创建一个文件夹,进入该文件夹 mkdir workspace 在workspace文件夹下,创建项目,如图 mvn archetype:generate -DgroupId=com.root 默认回车执行,创建一个maven样例工程 输入项目名称,定义版本号-默认回车,检查-默认回车。如图 - 用
tree hdfs-mkdir/ 查看结构。若提示 tree not found ,按提示安装tree。如图 - 打包
mvn package , 输出hello world 在 hdfs-mkdir 目录下,执行mvn package ,再用 tree hdfs-mkdir/ 会增加如下内容 运行该打包文件,在/hdfs-mkdir 目录下。结果如图 java -cp target/hdfs-mkdir-1.0-SNAPSHOT.jar com.root.App - 导入依赖。更改 pom.xml ,写入以下代码,并在如图所示加入版本号
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<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>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
- 清理上次运行的结果
mvn clean 再次运行 mvn package 运行打包的文件,成功输出 java -cp target/hdfs-mkdir-1.0-SNAPSHOT.jar com.root.App
3. 样例
每一次运行java程序之前都要 clean 和 package 一遍
- 修改pom.xml 文件,加入以下代码,,如图,注意对齐
完成后执行 mvn clean 和 mvn package
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.young</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 防止日志报警。在src/main/resources路径下添加日志配置文件log4j.properties,并写入以下代码
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
package com.root;
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;
public class App
{
public static void main( String[] args ) throws IOException, Exception, URISyntaxException
{
Configuration conf = new Configuration();
//1 获取hdfs客户端对象
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop1:9000"), conf, "root");
//2 在hdfs上创建路径
fs.mkdirs(new Path("/0x00/usr"));
//3 关闭资源
fs.close();
System.out.println( "HDFS mkdir!" );
}
}
|