首页 > 其他分享 >HDFS操作02(遇到的问题和解决)

HDFS操作02(遇到的问题和解决)

时间:2024-12-26 14:41:24浏览次数:1  
标签:02 HDFS fs java 遇到 hadoop 文件 import

编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。

 

查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。

 

 

 

 

实验内容与完成情况:

 

编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。

编程代码:

package hdfs;

 

import hdfs.HDFSConfig;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

 

public class MyFSDataInputStream extends FSDataInputStream {

    private final BufferedReader bufferedReader;

 

    public MyFSDataInputStream(FSDataInputStream fsDataInputStream) {

        super(fsDataInputStream.getWrappedStream());

        this.bufferedReader = new BufferedReader(new InputStreamReader(fsDataInputStream));

    }

 

    /**

     * 按行读取HDFS文件内容的方法。

     *

     * @return 文件中的一行内容,如果到达文件末尾则返回 null。

     * @throws IOException 读取文件过程中可能出现的异常。

     */

    public String hdfsReadLine() throws IOException {

        return bufferedReader.readLine();

    }

 

    @Override

    public void close() throws IOException {

        bufferedReader.close();

        super.close();

    }

 

    public static void main(String[] args) {

        try {

            // 初始化 HDFS 文件系统

            FileSystem fs = HDFSConfig.getFileSystem();

            Path filePath = new Path("/user/hadoop/movedTestFile.txt");

 

            // 检查文件是否存在

            if (!fs.exists(filePath)) {

                System.out.println("文件未找到: " + filePath);

                return;

            }

 

            // 打开文件

            FSDataInputStream fsDataInputStream = fs.open(filePath);

            MyFSDataInputStream myFSDataInputStream = new MyFSDataInputStream(fsDataInputStream);

 

            // 按行读取文件

            String line;

            System.out.println("按行读取文件内容:");

            while ((line = myFSDataInputStream.hdfsReadLine()) != null) {

                System.out.println(line);

            }

 

            // 关闭流

            myFSDataInputStream.close();

            fs.close();

 

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

 

 

 

 

(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。

package hdfs;

 

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.URL;

public class HDFSFileViewer {

 

    public static void showFileContentFromHDFS(){

        try {

            String remotePath="/user/hadoop/movedTestFile.txt";

            URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

            InputStream inputStream = new URL("hdfs","192.168.70.143",8020,remotePath.toString()).openStream();

            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

            String line = null;

            while ((line = bufferedReader.readLine()) != null){

                System.out.println(line);

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

    public static void main(String[] args) {

        showFileContentFromHDFS();

    }

}

 

 

 

出现的问题:

  1. 编程1时运行出错:

     

  2. put: /hdfs/destination/path': No such file or directory: hdfs://node1:8020/hdfs/destination/path'
  3. put: /local/file/path': No such file or directory
  4. 其实遇到最多的问题就是在本地文件系统中找不到指定的文件路径
  5. 这是一个和此实验内容无关,但是不解决还不行的问题。远程连接的问题,finalshell拒绝连接。我还试了shell发现也不行,最后找到了问题,在解决方案中写出。

 

 

解决方案(列出遇到的问题和解决办法,列出没有解决的问题):

  1. 路径问题:

 

 

如同实验1 中的方法,先用命令找到路径再根据自己虚拟机的路径调整。

  1. 编程问题:

这个问题我搜索了好多以往的博客,看了很多步骤,这个解决过程没有截图,所以直接来说一下我的思路:我一开始以为是master传过来的值为空的问题,设置了一些节点,验证之后发现不是代码的问题。然后我想过是路径的问题进行了一些修改,最后我发现是我的权限+路径问题拒绝连接,还是用户的权限不够后来我通过chat询问解决了权限的问题,在这个过程中还有偶尔忘记启动的情况。

  1. 远程连接失败:

先来说一下我开始去搜索的时候我找到的方法,但是这几个方法不是我需要的:

服务端的防火墙打开了,检查您的CentOS 7服务器是否已经安装并运行了SSH服务,计算机与CentOS 7服务器在同一局域网内。请检查两台设备的IP地址是否在同一个网段,例如192.168.101.x。

后来我发现了产生这个问题的原因是我有两个集群,但是我没有显卡不可以同时有两个同时用。这里我学到了两个方法,我后期更换集群的时候会用第二种。

1).修改本地主机的配置

 

 

 

 

 

 

 

 

 2.虚拟机网络编辑器:

 

 

 

标签:02,HDFS,fs,java,遇到,hadoop,文件,import
From: https://www.cnblogs.com/aixin52129211/p/18632790

相关文章

  • 2024年免费项目管理软件大盘点——20款必备优秀工具推荐
    在当今快节奏的商业环境中,项目管理软件已成为团队协作和项目成功的关键工具。无论是初创企业还是大型企业,选择合适的项目管理软件都能显著提高工作效率、优化资源分配并确保项目按时完成。随着技术的不断进步,2024年涌现出许多优秀的免费项目管理工具,它们不仅功能强大,而且易于使用......
  • 2025知识库工具搭建攻略:塑造知识管理新范式
    在当今这个信息爆炸的时代,知识已然成为个人与组织发展的核心驱动力。随着2025年的临近,如何搭建一套高效、智能的知识库工具,塑造全新的知识管理范式,成为众多有识之士关注的焦点。一、明确搭建知识库工具的目标在开启搭建之旅前,精准锚定目标至关重要。对于企业而言,是期望通......
  • 2025最全大数据工程师学习路线(建议收藏)
      找工作、写论文、项目实训以及实战项目课程学习私信我哟【不要错过文末彩蛋】申明:本文旨在为【大数据自学者|大数据专业学生|工资低的程序员(Java/Python等)】提供一个从入门到入职的的大数据技术学习路径,不适合5年以上大数据工程师的进阶学习。前言:一、个人介绍二、......
  • C++杂记02 指针
    好久没有更新推文了,最近换了工作,时间相对多了一点,有一点时间把过去的一些笔记内容给整理一下。能坚持学习和整理是一件很难的事情,当下大多数人的生活都相当碎片化,很多事做着做着就中断了,希望我能把我学习C++和OpenFOAM的一些内容写完。指针在OpenFOAM里面是一个很常见的内容,例如......
  • FastReport 2024年回顾与2025年展望:创新与跨平台发展之路
    2024年对于FastReport来说是充满挑战和收获的一年。FastReport在多个领域取得了重要突破和创新成果,不仅不断优化现有产品,还推出了一些令人振奋的新功能和新产品。接下来,FastReport将总结今年的关键成就,并展望未来的发展。FastReport的报表生成器(无论VCL平台还是.NET平台),跨平台......
  • 「省选联考 2023」人员调度
    离独立想出正解只差一步了。我的做法是使用网络流武器,抛弃了贪心的思考。虽然没有锻炼到贪心能力,但是加深了对网络流的理解吧。考虑撤销可以用线段树分治,故只考虑加入的情况。我们发现这个模型很像费用流,于是考虑建模。源点向所有员工连边,容量为\(1\),费用为其能力值。所......
  • 2024.12.26 os lab3
    2024.12.26oslab3原代码地址:https://github.com/BUPT-OS/easy_lab/tree/lab3运行未修改的代码,并且注释掉cout时发生错误:malloc():corruptedtopsize如果不注释cout,可以正常运行1.不注释cout时堆内存的详细分析1.程序启动阶段在程序启动时,堆的初始状态为空,堆顶指......
  • 【安全就业】2024年网络安全技术技能人才职业能力图谱+电子数据取证
    电子数据取证,是指利用科学和法律方法对电子设备中的数据进行搜集、分析、保存和报告的过程,以确保这些信息在法律程序中能够作为线索或证据使用。电子数据取证工作,一般需要取证人员具备电子数据提取、电子数据恢复、数据库系统取证、电子数据治理、程序功能分析、现场勘查、案件支......
  • 2024年10款小团队首选的项目管理软件
    在当今快速变化的商业环境中,小团队的项目管理工具选择至关重要。无论是初创公司还是小型企业,高效的项目管理工具不仅能提升团队协作效率,还能确保项目按时交付并控制成本。2024年,市场上涌现了许多专为小团队设计的项目管理工具,它们各具特色,能够满足不同团队的需求。本文将为您推荐1......
  • (即插即用模块-特征处理部分) 十六、(AAAI 2023) WavePooling 波叠加启发池化
    文章目录1、WavePooling2、代码实现paper:WSiP:WaveSuperpositionInspiredPoolingforDynamicInteractions-AwareTrajectoryPredictionCode:https://github.com/Chopin0123/WSiP1、WavePooling论文先分析了目前在轨迹预测领域的一些问题,即现有的轨迹预......