程序部署在Linux下即使是远程调用hadoop也不会需要环境变量(Hadoop-home,hadoop-conf-dir)

虚拟机-Linux-CentOS 7吐血安装Hadoop2.9.2搭建集群教程(详细图解)

    HDFS客户端环境搭建搞了好久,成功了赶紧来总结一下。 😐 😐

目录
配置Hadoop
配置winutils.exe和hadoop.dll
配置Maven
创建Maven工程
配置log4j.properties
编写测试用例
查看源码
配置Hadoop
把Hadoop的压缩包解压到指定的目录,比如我解压到 D:\hadoop-2.9.2

创建环境变量 HADOOP_HOME,路径是Hadoop解压的目录路径

在环境变量 PATH 中加上 %HADOOP_HOME%\bin
配置winutils.exe和hadoop.dll
winutils.exe(hadoop-2.6.5~hadoop-3.2.1)下载)(吐槽一下C**N的积分机制 😕 )

下载winutils.exe
将Hadoop对应版本目录下的bin下的winutils.exe和hadoop.dll复制到Hadoop根目录bin目录下(现在还不知道为什么需要在这两个文件 😦)网上说还要将hadoop.dll复制到C:\windows\system32目录下,但是我没复制。

配置Maven
    Maven3.6.3安装及eclipse配置Maven

    当然,你可以选择使用Eclipse内置的Maven,但建议把Maven配置文件的settings.xml里面的镜像改为阿里云镜像,这样下载速度会快一点。

创建Maven工程
打开Eclipse,左上角 File——new——other——Maven——Maven Project


    Group Id和Artifact Id随便写

打开 pom.xml,配置如下:
    你可能需要修改的地方有两处:
<Hadoop-Version>2.9.2</Hadoop-Version> :这里写上你的Hadoop版本,比如我的是2.9.2
最后一个 <dependency>的jdk.tools那里的<version>写上你的JDK版本,比如我的JDK版本是1.8.0_251,写1.8。要确保你的环境变量JAVA_HOME没有中文且是指向你JDK的安装目录!
这个时候你可能会报错Missing artifact jdk.tools:jdk.tools:jar:1.8,可以参考我下面这篇博客
maven报错Missing artifact jdk.tools:jdk.tools:jar:1.8,添加jdk.tools依赖依然报错

<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>com.hadoop</groupId>
    <artifactId>hadoop</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <Hadoop-Version>2.9.2</Hadoop-Version>
    </properties>
    
    <dependencies>
        <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>
        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
    </dependencies>
</project>

配置完pom.xml要按 Ctrl+s 保存,然后Maven会自动去仓库下载你需要的jar包及其依赖。
    这里有可能你项目的JRE System Library不是你的JDK版本,你可以做一下操作:


打开 Window——Java——Installed JREs,选择你的JDK,如果没有可以点击右边的 Add——Standard VM,选择你的JDK安装目录,Apply and Close


右击项目,点击 Properties——Java Build Path——Add Library——JRE System Library——Alternate JRE,添加你的JDK。然后Remove你原本的那个JRE System Library。
配置log4j.properties
在项目的 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:%L] - %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:%L] - %m%n

编写测试用例
    运行测试用例前确保你的hdfs和yarn已经开启且正常运行,还要看一下你的虚拟机服务VMware DHCP Service和VMware NAT Service是否开启。

public class HDFSClient {
    public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
        Configuration conf = new Configuration();
        //获取hdfs客户端对象
        FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "root");
        //在hdfs上创建路径
        fs.mkdirs(new Path("/file"));
        //fs.delete(new Path("/file"),true);
        //关闭资源
        fs.close();
        System.out.println("finish");
    }
}

    稍待片刻,程序正常运行完毕后,去 http://master:50070/ 看一下你的目录是否成功创建。

查看源码
    不出意外,大家可以直接通过Maven从仓库下载源码。但是我怎么弄也弄不了,源码下不了,如果有小伙伴知道怎么弄可以告诉我 😃.最后我从官网下载对应版本的源码,解压,然后再attach。

    到这里,Windows下HDFS客户端环境搭建成功,大家可以继续往下学习了 😃😃😃
 

参考:

https://blog.csdn.net/H_X_P_/article/details/105785911

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐