分布式文件系统HDFS之利用Java API与HDFS进行交互

这篇具有很好参考价值的文章主要介绍了分布式文件系统HDFS之利用Java API与HDFS进行交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

一、环境要求

二、在Ubuntu中安装Eclipse

三、在Eclipse创建项目

四、为项目添加需要用到的JAR包

五、编写Java应用程序代码 

总结



前言

Hadoop不同的文件系统之间通过调用Java API进行交互,利用Java API进行交互,需要利用软件Eclipse编写Java程序。


一、环境要求

  • 已经配置好网络的Ubuntu系统的虚拟机
  • Ubuntu 16.04 64位
  • hadoop-3.1.3.tar,可在官网下载或者点击下载(提取码:0412)
  • jdk-8u162-linux-x64.tar

二、在Ubuntu中安装Eclipse

 利用Ubuntu左侧边栏自带的软件中心安装软件,在Ubuntu左侧边栏打开软件中心

分布式文件系统HDFS之利用Java API与HDFS进行交互

 打开软件中心后,在软件中心搜索栏输入“ec”,软件中心会自动搜索相关的软件,点击如下图中Eclipse,进行安装

分布式文件系统HDFS之利用Java API与HDFS进行交互

 安装需要管理员权限,Ubuntu系统需要用户认证,弹出“认证”窗口,请输入当前用户的登录密码

分布式文件系统HDFS之利用Java API与HDFS进行交互

等待安装,安装结束后安装进度条便会消失。

安装好后侧边栏就会出现eclipse图标。点击打开eclipse。

分布式文件系统HDFS之利用Java API与HDFS进行交互

三、在Eclipse创建项目

 第一次打开Eclipse,需要填写workspace(工作空间),用来保存程序所在的位置,这里按照默认,不需要改动,如下图

分布式文件系统HDFS之利用Java API与HDFS进行交互

 点击“OK”按钮,进入Eclipse软件。

可以看出,由于当前是采用hadoop用户登录了Linux系统,因此,默认的工作空间目录位于hadoop用户目录“/home/hadoop”下。
Eclipse启动以后,会呈现下图的界面

分布式文件系统HDFS之利用Java API与HDFS进行交互

 选择“File->New->Java Project”菜单,开始创建一个Java工程,会弹出下图界面。在“Project name”后面输入工程名称“HDFSExample”,选中“Use default location”,让这个Java工程的所有文件都保存到“/home/hadoop/workspace/HDFSExample”目录下。在“JRE”这个选项卡中,可以选择当前的Linux系统中已经安装好的JDK,比如java-8-openjdk-amd64。然后,点击界面底部的“Next>”按钮,进入下一步的设置。

分布式文件系统HDFS之利用Java API与HDFS进行交互

四、为项目添加需要用到的JAR包

进入下一步的设置以后,会出现如图界面

分布式文件系统HDFS之利用Java API与HDFS进行交互

 需要在这个界面中加载该Java工程所需要用到的JAR包,这些JAR包中包含了可以访问HDFS的Java API。这些JAR包都位于Linux系统的Hadoop安装目录下,对于本教程而言,就是在“/usr/local/hadoop/share/hadoop”目录下。点击界面中的“Libraries”选项卡,然后,点击界面右侧的“Add External JARs…”按钮,会弹出下图界面。

分布式文件系统HDFS之利用Java API与HDFS进行交互

 在该界面中,上面的一排目录按钮(即“usr”、“local”、“hadoop”、“share”、“hadoop”、“mapreduce”和“lib”),当点击某个目录按钮时,就会在下面列出该目录的内容。
为了编写一个能够与HDFS交互的Java应用程序,一般需要向Java工程中添加以下JAR包:
(1)"/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;
(2)/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。
比如,如果要把“/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar添加到当前的Java工程中,可以在界面中点击目录按钮,进入到common目录,然后,界面会显示出common目录下的所有内容。

分布式文件系统HDFS之利用Java API与HDFS进行交互

 请在界面中用鼠标点击选中hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar,然后点击界面右下角的“确定”按钮,就可以把这两个JAR包增加到当前Java工程中,出现的界面如图示。

 分布式文件系统HDFS之利用Java API与HDFS进行交互

 从这个界面中可以看出,hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar已经被添加到当前Java工程中。然后,按照类似的操作方法,可以再次点击“Add External JARs…”按钮,把剩余的其他JAR包都添加进来。需要注意的是,当需要选中某个目录下的所有JAR包时,可以使用“Ctrl+A”组合键进行全选操作。全部添加完毕以后,就可以点击界面右下角的“Finish”按钮,完成Java工程HDFSExample的创建。

分布式文件系统HDFS之利用Java API与HDFS进行交互

五、编写Java应用程序代码 

下面编写一个Java应用程序,用来检测HDFS中是否存在一个文件。
在Eclipse工作界面左侧的“Package Explorer”面板中,找到刚才创建好的工程名称“HDFSExample”,然后在该工程名称上点击鼠标右键,在弹出的菜单中选择“New->Class”菜单。

 分布式文件系统HDFS之利用Java API与HDFS进行交互

 在该界面中,只需要在“Name”后面输入新建的Java类文件的名称,这里采用名称“HDFSFileIfExist”,其他都可以采用默认设置,然后,点击界面右下角“Finish”按钮。

分布式文件系统HDFS之利用Java API与HDFS进行交互

 可以看出,Eclipse自动创建了一个名为“HDFSFileIfExist.java”的源代码文件,请在该文件中输入以下代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSFileIfExist {
    public static void main(String[] args){
        try{
            String fileName = "test";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://localhost:9000");
            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
            if(fs.exists(new Path(fileName))){
                System.out.println("文件存在");
            }else{
                System.out.println("文件不存在");
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

该程序用来测试HDFS中是否存在一个文件,其中有一行代码:

String fileName = "test"

这行代码给出了需要被检测的文件名称是“test”,没有给出路径全称,表示是采用了相对路径,实际上就是测试当前登录Linux系统的用户hadoop,在HDFS中对应的用户目录下是否存在test文件,也就是测试HDFS中的“/user/hadoop/”目录下是否存在test文件。

编译运行:

在开始编译运行程序之前,请一定确保Hadoop已经启动运行,如果还没有启动,需要打开一个Linux终端,输入以下命令启动Hadoop:

cd /usr/local/hadoop
./sbin/start-dfs.sh

Run As Java Application运行程序

由于目前HDFS的“/user/hadoop”目录下还没有test文件,因此,程序运行结果是“文件不存在”。同时,“Console”面板中还会显示一些类似“log4j:WARN…”的警告信息,可以不用理会。

分布式文件系统HDFS之利用Java API与HDFS进行交互


总结

本文参考林子雨老师Hadoop课程以及大数据技术原理与应用 第三章 分布式文件系统HDFS 学习指南,完成了自己的HDFS练习。文章来源地址https://www.toymoban.com/news/detail-420776.html


到了这里,关于分布式文件系统HDFS之利用Java API与HDFS进行交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Hadoop HDFS(分布式文件系统)

    一、Hadoop HDFS(分布式文件系统) 为什么要分布式存储数据 假设一个文件有100tb,我们就把文件划分为多个部分,放入到多个服务器 靠数量取胜,多台服务器组合,才能Hold住 数据量太大,单机存储能力有上限,需要靠数量来解决问题 数量的提升带来的是网络传输,磁盘读写,

    2024年02月06日
    浏览(40)
  • 头歌 分布式文件系统HDFS 答案

    第1关:HDFS的基本操作 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。 ”; 将 hello.txt 上传至 HDFS 的 /usr/output/ 目录下; 删除 HDFS 的 /user/hadoop 目录

    2023年04月27日
    浏览(36)
  • 【头歌实训】分布式文件系统 HDFS

    本关任务:使用 Hadoop 命令来操作分布式文件系统。 为了完成本关任务你需要了解的知识有:1. HDFS 的设计,2. HDFS 常用命令。 HDFS的设计 分布式文件系统 客户:帮我保存一下这几天的数据。 程序猿:好嘞,有多大呢? 客户: 1T 。 程序猿:好没问题,买个硬盘就搞定了。

    2024年04月15日
    浏览(50)
  • Hadoop:HDFS--分布式文件存储系统

    目录   HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir  查看目录内容 -ls  上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendToFile HDFS文件移动 -mv  删除HDFS文件 -rm  

    2024年02月09日
    浏览(40)
  • HDFS Hadoop分布式文件存储系统整体概述

    整体概述举例: 包括机架 rack1、rack2 包括5个Datanode,一个Namenode( 主角色 )带领5个Datanode( 从角色 ),每一个rack中包含不同的block模块文件为 分块存储模式 。块与块之间通过replication进行 副本备份 ,进行冗余存储,Namenode对存储的 元数据进行记录 。该架构可以概括为一个 抽象

    2024年02月16日
    浏览(48)
  • hadoop-hdfs分布式文件系统理论(一)

    可以更好的支持分布式计算。 hadoop distribute file system是一个分布式 文件系统,操作的是文件,增、删都是以文件为单位。 文件线性按字节切割成块(block),具有offset,id offset是指block的偏移量,比如block大小是10,offset可以是0,10,20,30。。。 id是block的名称,比如block1,block

    2024年02月11日
    浏览(42)
  • Hadoop的分布式文件存储系统HDFS组件的使用

    存储整个HDFS集群的元数据(metaData) —— 整个集群中存储的目录和文件的索引 管理整个HDFS集群 接收客户端的请求 负责节点的故障转移 存储数据,是以block块的形式进行数据的存放。 默认情况下block块的大小是128M。 blocksize大小的计算公式: 寻址时间:下载文件时找到文件

    2024年02月09日
    浏览(55)
  • Hadoop HDFS分布式文件系统(介绍以及基础操作命令)

    目录 一、为什么需要分布式存储? 二、分布式的基础架构分析  三、HDFS基础架构 1.HDFS简介 四、HDFS集群启停命令 1.一键启停脚本 2.单进程启停 五、HDFS基本操作命令 1.创建文件夹  2.查看指定目录下内容  3.上传文件到HDFS指定目录下  4.查看HDFS文件内容 5.下载HDFS文件  6.拷贝

    2024年02月05日
    浏览(40)
  • 分布式文件系统与HDFS的shell操作及查看元数据

      启动hadoop和hive的metastore 查看sbin的目录下的文件 执行./start-all.sh  查看相关的进程

    2024年02月16日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包