Hadoop集群环境下HDFS实践编程过滤出所有后缀名不为“.abc”的文件时运行报错:java.net.ConnectException: 拒绝连接;

一、问题描述

搭建完Hadoop集群后,在Hadoop集群环境下运行HDFS实践编程使用Eclipse开发调试HDFS Java程序(文末有源码):

假设在目录“hdfs://localhost:9000/user/hadoop”下面有几个文件,分别是file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,这里需要从该目录中过滤出所有后缀名不为“.abc”的文件,对过滤之后的文件进行读取,并将这些文件的内容合并到文件“hdfs://localhost:9000/user/hadoop/merge.txt”中。

在执行上述任务时,运行代码后报错:

Exception in thread "main" java.net.ConnectException: Call From Master/192.168.52.136 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

二、解决办法

将代码中“localhost”修改为自己的主节点的主机名

修改之前:

修改之后:

修改完成后再次运行即可成功:

查看HDFS家目录下的内容:

查看hdfs.txt中的内容:

如上,证明程序正常运行且运行成功。

至此,问题解决!!!

三、问题分析及可能出现的问题

1.问题分析

出现 "Exception in thread "main" java.net.ConnectException: Call From Master/192.168.52.136 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接" 错误通常表示无法建立到Hadoop的NameNode(通常在localhost:9000)的连接。这可能是由以下原因导致的:

1. Hadoop服务未启动:请确保已经正确启动了Hadoop集群中的所有必要服务,包括NameNode。您可以通过运行`jps`命令来检查所需的Hadoop进程是否正在运行。

2. 网络连接问题:请确保主节点(Master/192.168.52.136)可以与NameNode服务器正常通信。可以尝试使用telnet命令验证是否能够连接到localhost的9000端口,例如:`telnet localhost 9000`。如果无法连接,请检查网络配置并确保端口未被防火墙阻止。

3. Hadoop配置错误:请检查Hadoop的核心配置文件(如`core-site.xml`和`hdfs-site.xml`)中的相关属性,特别是`fs.defaultFS`和`dfs.namenode.rpc-address`。确保它们正确的设置为NameNode的地址和端口。

4. 资源不足:如果系统资源不足,可能会导致Hadoop服务运行异常。请确保集群节点具有足够的内存和处理能力来支持Hadoop运行。

5.权限问题:请确保具有足够的权限来访问Hadoop集群。检查在运行Eclipse时使用的用户是否具有适当的权限。

此处是因为未访问到正确的地址端口导致无法与hdfs建立连接而导致的问题。

2.可能出现的问题

若出现“Exception in thread "main" java.io.FileNotFoundException: Path is not a file: /user/hadoop/input”的问题,可参考:

Hadoop集群环境下HDFS实践编程过滤出所有后缀名不为“.abc”的文件时运行报错:Path is not a file: /user/hadoop/input-CSDN博客Hadoop集群环境下HDFS实践编程过滤出所有后缀名不为“.abc”的文件时运行报错:Path is not a file: /user/hadoop/input的解决办法及问题分析https://blog.csdn.net/qq_67822268/article/details/135396792

四、源码

执行的任务是:假设在目录“hdfs://localhost:9000/user/hadoop”下面有几个文件,分别是file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,这里需要从该目录中过滤出所有后缀名不为“.abc”的文件,对过滤之后的文件进行读取,并将这些文件的内容合并到文件“hdfs://localhost:9000/user/hadoop/merge.txt”中。

现附上源码如下:

import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
 
/**
 * 过滤掉文件名满足特定条件的文件 
 */
class MyPathFilter implements PathFilter {
     String reg = null; 
     MyPathFilter(String reg) {
          this.reg = reg;
     }
     public boolean accept(Path path) {
        if (!(path.toString().matches(reg)))
            return true;
        return false;
    }
}
/***
 * 利用FSDataOutputStream和FSDataInputStream合并HDFS中的文件
 */
public class MergeFile {
    Path inputPath = null; //待合并的文件所在的目录的路径
    Path outputPath = null; //输出文件的路径
    public MergeFile(String input, String output) {
        this.inputPath = new Path(input);
        this.outputPath = new Path(output);
    }
    public void doMerge() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://localhost:9000");
          conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
        FileSystem fsSource = FileSystem.get(URI.create(inputPath.toString()), conf);
        FileSystem fsDst = FileSystem.get(URI.create(outputPath.toString()), conf);
                //下面过滤掉输入目录中后缀为.abc的文件
        FileStatus[] sourceStatus = fsSource.listStatus(inputPath,
                new MyPathFilter(".*\\.abc")); 
        FSDataOutputStream fsdos = fsDst.create(outputPath);
        PrintStream ps = new PrintStream(System.out);
        //下面分别读取过滤之后的每个文件的内容,并输出到同一个文件中
        for (FileStatus sta : sourceStatus) {
            //下面打印后缀不为.abc的文件的路径、文件大小
            System.out.print("路径:" + sta.getPath() + "    文件大小:" + sta.getLen()
                    + "   权限:" + sta.getPermission() + "   内容:");
            FSDataInputStream fsdis = fsSource.open(sta.getPath());
            byte[] data = new byte[1024];
            int read = -1;
 
            while ((read = fsdis.read(data)) > 0) {
                ps.write(data, 0, read);
                fsdos.write(data, 0, read);
            }
            fsdis.close();          
        }
        ps.close();
        fsdos.close();
    }
    public static void main(String[] args) throws IOException {
        MergeFile merge = new MergeFile(
                "hdfs://localhost:9000/user/hadoop/",
                "hdfs://localhost:9000/user/hadoop/merge.txt");
        merge.doMerge();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302003.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PySimpleGUI主题窗口样式

说明 PySimpleGUI是一个基于Tthinter的简单GUI框架,可以作为python下跨平台的轻量级UI来使用。我看到示例代码里有设置主题的代码,所以找官方文档看了下,可以预览素有主题,方法是: import PySimpleGUI as sg sg.them…

微信公众号-订阅通知

第一步: 公众号需要实名认证,完成以后! 设置-开发里找到基本配置: 开发者ID(AppID):xxxxxxxxxxxxxxxxxxxxxxxxx 开发者密码(AppSecret):xxxxxxxxxxxxxxxxxxxxxxxxx 白名单IP也要填写上你的服务器IP哦! 第二步&am…

Hadoop-HA高可用

一、集群规划 二、HDFS高可用 官方地址 在opt目录下创建一个ha文件夹&#xff0c;将/opt/module/下的 hadoop-3.1.3拷贝到/opt/ha目录下&#xff08;记得删除data 和 log目录&#xff09; 配置core-site.xml hdfs-site.xml <configuration><!-- NameNode数据存…

【无标题】山姆奥特曼喊话AI创业者

这里写自定山姆奥特曼充满激情地向创业者们发出呼吁&#xff0c;他表示AI是一个可以媲美互联网早期机遇的巨大机会。与此相关的人士认为&#xff0c;现在是互联网和移动互联网创业者们行动起来的时候了&#xff01;他们应该全面拥抱大模型的应用层创业。第一波红利期在6-8个月内…

电子实验室设备:从零开始配置实验室(一)

本文译自 Electronics Lab Equipment: Kitting out a Lab from Scratch 随着多次国际迁徙以及在几家公司&#xff08;或其分支机构&#xff09;工作&#xff0c;尤其是在没有强大电子工程团队的情况下&#xff0c;我不得不为自己和客户设置多个电子实验室。那些计划进行内部测试…

Vue3+TS+Vite 构建自动导入开发环境

关注⬆️⬆️⬆️⬆️ 专栏后期更新更多前端内容 在一个使用 Vue 3、Vite 和 TypeScript 的项目中,配置 unplugin-auto-import 和 unplugin-vue-components 插件可以极大地提高开发效率,因为它们可以自动导入 Vue 相关的 API 和 Vue 组件,从而减少了手动导入的需要。 文章目…

【leetcode】力扣算法之有效的数独【中等难度】

题目描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&…

【Android Studio】创建第一个APP工程及生成APK安装包

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本文详细介绍创建Android Studio第一个APP工程及打包生成APK安装包。 如下两个博客我记录了第一次创建项目时出现的问题&#xff0c;若你也遇见了同样的问题&#xff0c;可参考&#…

【Linux基础】Linux权限

目录 前言1.shell命令以及运行原理2.Linux权限的概念2.1什么是权限2.2权限的本质 3.Linux权限管理3.1文件访问者的分类&#xff08;人&#xff09;3.2文件类型和访问权限&#xff08;事物属性&#xff09;3.3文件权限值的表示方法3.4文件访问权限的相关设置方法a)chmodb)chownc…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制&#xff0c;通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

值得一试的国产效率神器

当谈到国产小众工作效率软件时&#xff0c;以下是我为您推荐的四款应用。它们可能不太被大众所熟知&#xff0c;但它们各自都有独特的功能和特点&#xff0c;可以帮助您提高工作效率。 首先是“有道云笔记”。作为一款国内知名的笔记应用&#xff0c;有道云笔记提供了强大的笔…

俄罗斯“沙虫”侵入乌克兰电信巨头Kyivstar内网长达数月

去年12月&#xff0c;乌克兰最大的电信运营商Kyivstar遭到了一次严重的网络攻击&#xff0c;约2400万用户受到了网络中断的影响。据乌克兰安全情报局网络负责人透露&#xff0c;此次攻击由俄罗斯黑客组织"沙虫"&#xff08;Sandworm&#xff09;所为。 该黑客组织成…

[DM8] 达梦8配置兼容Oracle

查看版本信息 select *&#xff0c;id_code from v$version; 查询解释&#xff1a; DM Database Server 64 V8 1-1-190-21.03.12-136419-ENT 64 版本位数标识&#xff0c;64表示为64位版本&#xff0c;无64则表示为32位版本 V8 大版本号&#xff0c;目前主要是V7、V8 1-1-190…

不用写一行代码!Python最强自动化神器!-palywright

不用写一行代码!Python最强自动化神器! 1、Playwright介绍 Playwright是一个由Microsoft开发的开源自动化测试工具,它可以用于测试Web应用程序。Playwright支持多种浏览器,包括Chrome、Firefox和WebKit,同时也支持多种编程语言,如JavaScript、TypeScript、Python和C#。 2…

【已解决】Pytorch RuntimeError: expected scalar type Double but found Float

本文作者&#xff1a; slience_me 文章目录 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a; 项目场景&#xff1a; 在训练模型时候&#xff0c;将数据集输入到网络中去&#xff0c;在执行卷积nn.conv1d()的时候&#xff0c;报出此错误 问题描述 报错…

Taro+vue3 电影H5 选择座位的时候 判断当前的座位是否 旁边留空 或者中间座位留空

const onConfirm () > {const area_arr selectedSeat.value.map((item) > {return item.areaId;});const abc isRepeat(area_arr);if (!abc) {Taro.showToast({title: "请选择同一价格的座位&#xff0c;暂不支持跨区域选座~~",icon: "none",dura…

二叉树-遍历-单独精讲

遍历:遍历每个元素。 寻常遍历root只会指一次。 而二叉树遍历每个元素则会指三次。 中序遍历-节点的中序 void traveres(TreeNode* root){if(!root)return;traveres(root->left);cout << root->val << endl;traveres(root->right);}中序遍历亦叫节点的中…

安防视频云平台/可视化监控云平台ARM版EasyCVR无法下载录像文件,如何解决?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。GB28181视频监控/AI智能大数据视频分析EasyCVR平台已经广泛应用在工地…

Python办公自动化 – 对数据进行正则表达式匹配

Python办公自动化 – 对数据进行正则表达式匹配 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – …

我是内网灵活的狗之渗透之红日靶场 stack之用户域渗透

接上回 我们现在准备对域内的用户靶机进行一下扫描 因为对所有的端口进行扫描的话 会导致扫描时间过长 我们这里只对部分重要端口进行扫描 看见445端接口开着&#xff0c;所以我们尝试连接445 的漏洞 用永恒之蓝漏洞连接后&#xff0c;尝试用这个漏洞&#xff0c;添加新的用…