2020.9.25 Hdfs进行API操作时遇到wintuils和log4j相关错误问题

问题描述:在搭配好复杂的hadoop完全分布式版的配置后进行一个简单的测试demo:

package com.demo.bigdata.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.log4j.BasicConfigurator;
import org.junit.Test;
import java.io.IOException;

public class HdfsTest {
    /*
    * 写文件操作
    * */
    @Test
    public void testWriteFile() throws IOException {
        //BasicConfigurator.configure(); //自动快速地使用缺省Log4j环境。
        //创建配置对象
        Configuration conf=new Configuration();
        //conf.set("fs.defaultFS", "hdfs://demo01:8020");
        //创建文件系统对象
        FileSystem fs=FileSystem.get(conf);
        System.out.println(fs+"test");
        Path path=new Path("/test01.txt");
        FSDataOutputStream fsDataOutputStream=fs.create(path,true);
        fsDataOutputStream.write("hello,hadoop".getBytes());
        fsDataOutputStream.flush();
        fsDataOutputStream.close();
    }
}

完成hdfs 的API操作之写文件,其中首先遇到了log4j配置文件问题

解决方案:在pom.xml中配置lg4j:

<!-- 添加log4j日志相关jar包:共3个jar-->
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>

其次遇到了搞了半天都没解决的问题:

在windows端本地我并未保存相关hadoop的文件夹,于是重新找到了hadoop-2.4.6的文件夹放在D盘,而这个问题是什么原因造成的,简言之就是在hadoop\bin\目录下缺少两个配置文件:

网上只需找到对应版本的hadoop.dll(最好大于等于当前版本,不要跳跃太大如2到3),还有winutils.exe放进去

链接:https://github.com/srccodes/hadoop-common-2.2.0-bin/tree/master/bin

然后配置HADOOP_HOME环境变量:

然后重启。即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值