IDEA配置hdfs遇到的问题

通过网上教程看到的一个查询hdfs中是否有某文件的java程序:

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


public class test {
    public static void main(String[] args){
        try {
            String filename = "hdfs://localhost:9000/123.txt"; #这是检查hdfs中的根目录中是否有123.txt
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            if (fs.exists(new Path(filename))){
                System.out.println("exist");
            }else {
                System.out.println("not exist");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

想在IDEA中试一试,但是IDEA和ECLIPSE在配置的时候有些不同,所以踩了不少坑。
1.导入jar包
IDEA中导入jar的流程是File-Projiect Structure-Modules(eclipse中是Libraries)

然后点击选中对应的项目,我的是test,点击右侧的加号:
在这里插入图片描述
选中hadoop所在位置,hadoop中的jar包都在hadoop/share/hadoop/中,选中common/lib,加载其中的包。
在这里插入图片描述
2.将hadoop/etc/hadoop中的core-site.xml和hdfs-site.xml复制到test/src中即该工程的src目录下(eclipse是放在bin目录下):
在这里插入图片描述
否则会出现:
在这里插入图片描述

3.运行程序中出现log4j问题的解决方法解决:log4j:WARN No appenders could be found for logger
两种办法:
第一种:在src文件中添加相关文件
第二种:在主函数中加入一句代码:BasicConfigurator.configure();参考:其中还有该问题出现的具体原因

4.出现:org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme “hdfs”
是因为导入的jar包不全,建议把hadoop/share/hadoop/common/lib中的包全部导入

5.每次启动hadoop都要格式化namenode的问题
首先在home目录下建立一个hadoop_tmp目录
sudo mkdir ~/hadoop_tmp
然后修改hadoop/etc/hadoop目录里面的core-site.xml文件,加入以下节点:

hadoop.tmp.dir
/home/zcsc/hadoop_tmp
A base for other temporary directories.

注意:我的用户是zcsc所以目录是/home/zcsc/hadoop_tmp
格式化一下namenode
hadoop namenode -format
给hadoop_tmp权限:
sudo chmod -R 777 /home/zcsc/hadoop_tmp
然后启动hadoop
start-all.sh
执行下JPS命令就可以看到NameNode了

发布了5 篇原创文章 · 获赞 0 · 访问量 514

猜你喜欢

转载自blog.csdn.net/pursuingparadise/article/details/103887866
今日推荐