淘先锋技术网

首页 1 2 3 4 5 6 7

版本介绍

TYPEASCII
HADOOP 版本3.2.1
JAVA版本1.8
编辑器IDEA

开发是在window上使用IDEA, 连接腾讯云购买的云主机, 云主机安装了HADOOP的环境;

代码展示

package com.imooc.bigdata.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 使用JAVA API 操作HDFS文件系统
 */
public class HDFSApp {
    public static void main(String[] args) throws IOException {
        try {
            Configuration configuration = new Configuration();
            FileSystem fileSystem = FileSystem.get(new URI("hdfs://181.42.34.105:8020"), configuration,"hadoop");
            Path path = new Path("/hdfsapi/test");
            boolean result = fileSystem.mkdirs(path);

            System.out.println(result);
        } catch (URISyntaxException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

踩坑1

windows java客户端运行异常

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

网上查阅资料可知window需要在本地安装配置Hadoop的客户端环境, 并配置相关的环境变量;
具体解决办法:

 1. 下载相关版本的Hadoop依赖包
 2. 找到hadoop.dll, winutils.exe两个文件, 放到bin目录下
 3. WINDOWS添加系统变量$HADOOP(对应HADOOP安装包的解压路径)
 4. WINDOWS添加环境变量$PATH(将HADOOP_HOME添加当中)
 6. 重启系统

详细可以参考这两位大佬的文章:
文章1
文章2

踩坑2

第一次修改后再次执行报错:

RPC response exceeds maximum data length

原因是云主机hadoop的配置文件etc/hadoop/core-site.xml 的configuration配置没有配置完善, 重新添加该配置

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://181.42.34.105:8020</value>
    </property>
</configuration>

FileSystem.get方法中的URI应该同property的value一致;

DONE