购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6
winutils

Hadoop通常运行在Linux上,而开发程序通常是Windows,执行代码时,为了看到更多的日志信息,需要添加log4j.properties或log4j2的log4j2.xml。

通过查看hadoop-client-3.2.2依赖可知,系统中已经包含了log4j 1.2的日志组件,如图2-11所示。

图2-11

此时只需要添加一个log4j与slf4j整合的依赖即可,所以添加以下依赖:

 
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.26</version>
    </dependency>

同时添加日志文件。直接在classpath下创建log4j.properties文件,即在项目的main/resources目录下添加log4j.properties文件即可:

 
     log4j.rootLogger = debug,stdout
     log4j.appender.stdout = org.apache.log4j.ConsoleAppender
     log4j.appender.stdout.Target = System.out
     log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
     log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:
ss,SSS} method:%l%n%m%n

再次运行上面访问HDFS的代码,将出现以下问题:

 
    java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset

意思为HADOOP_HOME和hadoop.home.dir没有设置。虽然出现上述问题,但程序仍然可以执行成功。出现上述问题的原因是本地没有Hadoop的程序。

此时,我们需要在本地,即Windows上解压一个相同的Hadoop版本,并配置HADOOP_HOME环境变量,如笔者将Hadoop 3.2.2也同时解压到Windows系统的D:/program目录下,则配置环境变量为:

 
    HADOOP_HOME=D:\program\hadoop-3.2.2
    hadoop.home.dir=D:\program\hadoop-3.2.2

如果不想配置环境变量,也可以在上述的Java代码中,添加上述变量到System中,如下所示:

 
    System.setProperty("HADOOP_HOME", "D:/program/hadoop-3.2.2");
    System.setProperty("hadoop.home.dir", "D:/program/hadoop-3.2.2");

同时还需要添加winutils,可以从GitHub或Gitee网站上找到相关版本的winutils。将下载的文件放到D:\program\hadoop-3.2.2\bin中即可。再次运行,就没有任何警告信息了。从本书的附带资源中也可以找到相关资源,其位置为chapter02/软件/wintuils。 mdLVz7K6qORXktXmoIYoMIEm9Alo/PxH304VKeI2yk6Yt3E/U3Sq9bIPf9qJP225

点击中间区域
呼出菜单
上一章
目录
下一章
×