HDFS编程实践(Hadoop3.1.3)

这篇具有很好参考价值的文章主要介绍了HDFS编程实践(Hadoop3.1.3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、利用Shell命令与HDFS进行交互

1.目录操作

在HDFS中为hadoop用户创建一个用户目录

cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop

显示HDFS中与当前用户hadoop对应的用户目录下的内容:

 ./bin/hdfs dfs -ls .

创建一个input目录:

 ./bin/hdfs dfs -mkdir input

可以使用rm命令删除一个目录

./bin/hdfs dfs -rm -r input

上面命令中,“-r”参数表示如果删除“input”目录及其子目录下的所有内容,如果要删除的一个目录包含了子目录,则必须使用“-r”参数,否则会执行失败。

2.文件操作

使用如下命令把本地文件系统的“/home/hadoop/myLocalFile.txt”上传到HDFS中的当前用户目录的input目录下,也就是上传到HDFS的“/user/hadoop/input/”目录下:

./bin/hdfs dfs -put /home/hadoop/myLocalFile.txt  input

Shell 命令

可以使用ls命令查看一下文件是否成功上传到HDFS中,具体如下:

./bin/hdfs dfs -ls input

下面使用如下命令查看HDFS中的myLocalFile.txt这个文件的内容:

./bin/hdfs dfs -cat input/myLocalFile.txt

下面把HDFS中的myLocalFile.txt文件下载到本地文件系统中的“/home/hadoop/下载/”这个目录下,命令如下:

./bin/hdfs dfs -get input/myLocalFile.txt  /home/hadoop/下载

最后,了解一下如何把文件从HDFS中的一个目录拷贝到HDFS中的另外一个目录。比如,如果要把HDFS的“/user/hadoop/input/myLocalFile.txt”文件,拷贝到HDFS的另外一个目录“/input”中(注意,这个input目录位于HDFS根目录下),可以使用如下命令:

./bin/hdfs dfs -cp input/myLocalFile.txt  /input

二、利用Web界面管理HDFS

HDFS编程实践(Hadoop3.1.3)

三、利用Java API与HDFS进行交互

1. 在IDEA中创建项目

使用IDEA在/home/hadoop下创建工作区workspace

HDFS编程实践(Hadoop3.1.3)

2. 为项目添加需要用到的JAR包

(1)“/usr/local/hadoop/share/hadoop/common”目录下的所有JAR包,包括hadoop-common-3.1.3.jar、hadoop-common-3.1.3-tests.jar、haoop-nfs-3.1.3.jar和haoop-kms-3.1.3.jar,注意,不包括目录jdiff、lib、sources和webapps;
(2)“/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的所有JAR包,注意,不包括目录jdiff、lib、sources和webapps;
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。

HDFS编程实践(Hadoop3.1.3)

3. 编写Java应用程序

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("\n"+"路径:" + 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();
    }
}

4. 编译运行程序

首先要确保HDFS的“/user/hadoop”目录下已经存在file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,每个文件里面有内容。这里,假设文件内容如下:
file1.txt的内容是: this is file1.txt
file2.txt的内容是: this is file2.txt
file3.txt的内容是: this is file3.txt
file4.abc的内容是: this is file4.abc
file5.abc的内容是: this is file5.abc

开始运行程序。程序运行结束后,会在底部的面板中显示运行结果信息(如下图所示)。同时,面板中还会显示一些似“log4j:WARN…”的警告信息,可以不用理会。

HDFS编程实践(Hadoop3.1.3)

如果程序运行成功,这时,可以到HDFS中查看生成的merge.txt文件,比如,可以在Linux终端中执行如下命令:

cd /usr/local/hadoop
./bin/hdfs dfs -ls /user/hadoop
./bin/hdfs dfs -cat /user/hadoop/merge.txt

5. 应用程序的部署

在IDEA-文件-项目结构-工件中添加工件

HDFS编程实践(Hadoop3.1.3)

选择主类并点击确定

HDFS编程实践(Hadoop3.1.3)

然后点击构建-构建工件,生成jar包,将jar包移动至usr/local/hadoop/myapp

由于之前已经运行过一次程序,已经生成了merge.txt,因此,需要首先执行如下命令删除该文件:

cd /usr/local/hadoop./bin/hdfs dfs -rm /user/hadoop/merge.txt

现在,就可以在Linux系统中,使用hadoop jar命令运行程序,命令如下:

cd /usr/local/hadoop./bin/hadoop jar ./myapp/HDFSExample.jar

上面程序执行结束以后,可以到HDFS中查看生成的merge.txt文件,比如,可以在Linux终端中执行如下命令:

cd /usr/local/hadoop./bin/hdfs dfs -ls /user/hadoop./bin/hdfs dfs -cat /user/hadoop/merge.txt

可以看到如下结果:文章来源地址https://www.toymoban.com/news/detail-412464.html

this is file1.txt
this is file2.txt
this is file3.txt

到了这里,关于HDFS编程实践(Hadoop3.1.3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop框架---HDFS的Shell命令操作

    有2种等效的语法格式分别为: case1: hadoop fs 具体命令 case2: hdfs dfs 具体命令 实际使用时根据 个人喜好 自由选择以上任意一种语法格式。 其有很多命令,但在生产环境中我们经常使用的命令并没有那么多,因此需要时再回头查阅上图中的命令即可。 3.1.1 启动Hadoop集群 在使用

    2024年02月05日
    浏览(38)
  • hadoop基础:通过 Shell 命令访问 HDFS

    HDFS Shell 是由一系列类似 Linux Shell 的命令组成的。命令大致可分为 操作命令 、 管理命令 、 其他命令 三类 操作命令是以“ hdfs dfs ”开头的命令。通过这些命令,用户可以完成 HDFS 文件的 复制、删除和查找 等操作,Shell 命令的一般格式如下。 hdfs dfs [通用选项] 其中,hdfs

    2023年04月08日
    浏览(33)
  • 【大数据基础】Hadoop3.1.3安装教程

    来源: https://dblab.xmu.edu.cn/blog/2441/ 前言:重装解决一切bug!事实上,问题中的绝大部分衍生问题都可以通过重装解决。 创建Hadoop用户 首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 : 接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码: 可为

    2024年02月09日
    浏览(52)
  • Hadoop3.1.3完全分布式安装配置

    1. 将hadoop-3.1.3.tar.gz复制到虚拟机/opt/software目录下: 2.在/opt/software目录下使用tar命令解压hadoop-3.1.3.tar.gz到/opt/module目录下:  执行结果如下: 3.在/opt/module目录下修改文件夹名称: 执行结果如下:  4.打开环境变量: 执行结果如下: 5.将光标移至文件底部,按“i”键编辑并作

    2024年02月08日
    浏览(36)
  • Hadoop大数据技术-通过shell命令访问HDFS

    HDFS shell大致可以分为操作命令、管理命令、其他命令三类。 注意:当命令以“$”开头时,当前用户为普通用户;以“#”开头时,当前用户为root用户。 操作命令是以“ hdfs dfs ”开头的命令,用户可以通过执行这些命令,完成对文件的查找、上传、删除等操作。 [-p]:表示如

    2023年04月11日
    浏览(31)
  • Hadoop3.1.3安装教程单机伪分布式配置

    本教程使用 Ubuntu 18.04 64位 作为系统环境(或者Ubuntu 14.04,Ubuntu16.04 也行,32位、64位均可),请自行安装系统。装好了 Ubuntu 系统之后,在安装 Hadoop 前还需要做一些必备工作。 创建hadoop用户 如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用

    2024年02月04日
    浏览(41)
  • 用户行为分析遇到的问题-ubantu16,hadoop3.1.3

    用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小数据集 - CSDN App 手把手教你做厦门大学用户行为分析-小数据集-操作

    2024年02月04日
    浏览(24)
  • Hadoop的安装和使用,Windows使用shell命令简单操作HDFS

    目录 1,Hadoop简介 2,分布式文件系统HDFS 1. HDFS简介 2.HDFS体系结构 3,Hadoop的安装 1.使用WEB管理页面操作HDFS 2.使用命令操作HDFS  4,HDFS的基本使用方法 1)启动hadoop,为当前登录的Windows用户在HDFS中创建用户目录 2)在用户名user/zhangna下创建test目录 3)将windows操作系统本地的一个

    2024年02月04日
    浏览(40)
  • 实操Hadoop大数据高可用集群搭建(hadoop3.1.3+zookeeper3.5.7+hbase3.1.3+kafka2.12)

    前言 纯实操,无理论,本文是给公司搭建测试环境时记录的,已经按照这一套搭了四五遍大数据集群了,目前使用还未发现问题。 有问题麻烦指出,万分感谢! PS:Centos7.9、Rocky9.1可用 集群配置 ip hostname 系统 CPU 内存 系统盘 数据盘 备注 192.168.22.221 hadoop1 Centos7.9 4 16 250G 19

    2024年02月03日
    浏览(32)
  • 大数据-安装 Hadoop3.1.3 详细教程-伪分布式配置(Centos7)

    **相关资源:**https://musetransfer.com/s/q43oznf6f(有效期至2023年3月16日)|【Muse】你有一份文件待查收,请点击链接获取文件 1.检查是否安装ssh (CentOS 7 即使是最小化安装也已附带openssh 可跳过本步骤) 若已安装进行下一步骤 若未安装 请自行百度 本教程不做过多讲解 2.配置ss

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包