前提:在虚拟机中安装好Hadoop

参考文章:HDFS编程实践(Hadoop3.1.3)_厦大数据库实验室博客 (xmu.edu.cn)

目录

实验要求

实验步骤

小贴士

实验中遇到的问题及解决方法


实验要求

编写shell与Java代码检验分布式系统HDFS上是否存在一个input.txt,并对代码进行详细注释,通过流程图阐述数据查找过程。

实验步骤

1. 做好前提准备

        ①启动Hadoop

②使用Hadoop内的hdfs创建文件夹用于存储文件,可以实现对照

        使用的命令为:./bin/hdfs/dfs -mkdir /input

        ③上传本地文件到hdfs中

        使用的命令为:./bin/hdfs dfs -put /usr/local/hadoop/input/txt /input

 

        2. 使用shell编程实现判断文件是否存在,如存在就输出文件的内容。

        ①命令行直接实现

./bin/hdfs dfs -test -e /input/input.txt
echo $?

如果输出为 0 代表文件存在;如果输出为1,代表文件不存在。

        ②通过shell编程实现文字版的输出

        3. 使用java代码判断文件是否存在,如存在就输出文件的内容。

import java.io.BufferedReader;//java读取文件的相关包
import java.io.InputStreamReader;
//导入相关包
import org.apache.hadoop.conf.Configuration;//这个包是专门管理配置文件的
//这个包中包含了hadoop中所有关于文件管理的类,所有的都是继承它
import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;//可以读取url路径
import org.apache.hadoop.fs.FSDataInputStream;
//FileSystem对象中的open()方法返回的是FSDataInputStream对象,这个类是继承了java.io.DataInputStream接口的一个特殊类
//支持随机访问,可以从流中的任意位置读取数据public class Hdfs {public static void main(String[] args){try{String fileName = "/input/input.txt";//文件的路径//加载配置项Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.43.100:8020");//文件系统的路径(这个需要看自己在配置core-site.xml时使用的路径)//DistributedFileSystem是在HDFS客户端的节点上,负责与HDFS集群进行交互,如在NameNode上读写元数据,在DataNode节点上读写数据等conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");//创建文件系统实例FileSystem fs = FileSystem.get(conf);//判断文件是否存在if(fs.exists(new Path(fileName))){ //如果文件存在就打印输出System.out.println("文件存在");//打印输出文本内容Path file = new Path(fileName); FSDataInputStream getIt = fs.open(file);//缓冲区读取,避免了乱码现象BufferedReader d = new BufferedReader(new InputStreamReader(getIt));String line = null;System.out.println("文件的内容为:");while((line = d.readLine()) != null) {  System.out.println(line);  }  d.close(); //关闭文件}else{System.out.println("文件不存在");}//如果报错的话,就打印输出错误信息}catch (Exception e){e.printStackTrace();}}
}

结果输出


小贴士

1. 在Ubuntu中安装eclipse

教程:打开底部的软件安装软件-->搜索eclipse-->安装

2. 创建Java project

将Hadoop相关的库导入

3. 将Hadoop配置文件中的core-site.xml以及hdfs-site.xml复制到创建好的java project的bin目录下(要不然会报错的)


实验中遇到的问题及解决方法

1. 实验中导包问题

在实验的过程中,按照林子雨老师的教程,只是把那几个Hadoop包导入进去就OK的,但是在实际中,还需要导入其他的库,其他库分别分布在Hadoop其他目录下,需要自己找一下。

(可能是我在安装Hadoop的时候放乱了)

贴一些因为jar包没导入而报的错

贴一些解决方法(其他库分别分布在Hadoop其他目录下,需要自己找一下)

Exception in thread “main” java.lang.NoClassDefFoundError: com/google/common/base/Preconditions_五道口纳什的博客-CSDN博客

org.apache.hadoop.util.PlatformName_鱿鱼ing的博客-CSDN博客

2. 上传文件提示失败

这是因为DataNode节点没有启动成功

可以看另外一篇文章的文末

大数据技术原理与应用-实验一-Hadoop的安装与使用_临粤的博客-CSDN博客

3. Caused by: java.net.ConnectException: 网络不可达 (connect failed)

解决方法:看java代码中连接hdfs的链接是否跟配置core-site.xml中hdfs的路径一致。我们在配置hdfs-site.xml时,里面可能填写的是IP地址+8020,但是在Java代码中我们填写了localhost+9000,两者不一致,导致连接不上。


实验参考厦门大学老师的hdfs编程教程

如果有什么错漏的地方,请各位大佬指教[抱拳]

实验二-HDFS编程相关推荐

  1. ZUCC_大数据计算技术_实验三 HDFS编程实践

    实验三 HDFS编程实践 课程名称 大数据计算技术 实验项目名称 实验三 HDFS编程实践 启动hadoop 一.利用Shell命令与HDFS进行交互 1. 目录操作 新建家目录 可以看到新建目录内无 ...

  2. 计算机网络 | 实验二 WINPCWP编程

    实验二 WINPCWP编程 班级 xxx 实验环境 Win10 Pro 1709(64位) 姓名 xxx 开发环境 Visual Studio 2013 学号 xxx 软件版本 WinPcap 4.1 ...

  3. 用matlab解单纯形法,实验二MATLAB编程单纯形法求解

    <实验二MATLAB编程单纯形法求解>由会员分享,可在线阅读,更多相关<实验二MATLAB编程单纯形法求解(11页珍藏版)>请在人人文库网上搜索. 1.北京联合大学 实验报告 ...

  4. 实验二 HDFS的Shell命令操作,和HDFS的API操作

    文章目录 实验目的 一. 实验原理 二.实验准备 实验内容 步骤 项目1 HDFS常见命令练习 列出HDFS当前用户家目录下的文件及文件夹: 列出HDFS文件下名为directory的文件夹中的文件: ...

  5. 实验二 HDFS实验操作

    一.实验目的 理解HDFS在Hadoop体系结构中的角色 熟练使用HDFS操作常用的Shell命令 熟悉HDFS操作常用的Java API 二.实验平台 操作系统:ubuntu18 Hadoop版本: ...

  6. java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...

    20155317 <Java程序设计>实验五网络编程与安全实验报告 遇到问题 在刚开始启动客户端或者服务端时,出现了一系列的错误情况,总是提示异常信息 后来经过询问同学,反应将端口号修改一 ...

  7. 实验二:熟悉常用的HDFS操作

    实验目的 1.理解HDFS在Hadoop体系结构中的角色 2.熟悉使用HDFS操作常用的Shell命令 3.熟悉HDFS操作常用的Java API 实验平台 1.操作系统:Windows 2.Hado ...

  8. 2017-2018-2 1723《程序设计与数据结构》第八周作业 实验二 第一周结对编程 总结...

    作业地址 第八周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1847 (作业界面已评分,可随时查看,如果对自己的评分有意 ...

  9. Java图形编程实验总结_实验二java图形界面编程2015级.doc

    实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...

最新文章

  1. ASP.NET虚拟主机的重大安全隐患
  2. iOS 中 load 和 initialize的实现顺序
  3. vue中使用promise
  4. .net core ef mysql 的使用
  5. 利用helloworld来检测VPS的对外端口是否打开
  6. java解析json_JAVA解析JSON数据
  7. javascript:使用canvas绘图2D图形
  8. 游戏安全报告(2017 - 2018全年)
  9. 学习linux/unix编程方法的建议-转
  10. Attribute 和 Parameter 的区别
  11. layer弹出层笔记
  12. 【转】BLE开发的各种坑
  13. 程序设计导引及在线实践之大整数乘法
  14. 产品需求分析神器:KANO模型分析法
  15. 软件测试面试中90%会遇到的问题;你会搭建测试环境吗?
  16. 开发一个在线Excel系统?SpreadJS让开发如此简单
  17. 来到 “鹅厂” 的 2019
  18. 前段时间的世界互联网大会
  19. 初学J2ME时,看过的好文章(三)
  20. 量化交易(二)---------海龟交易法则

热门文章

  1. 序列检测器(三段式状态机)
  2. 推荐两套开源完整的物流仓储管理系统 WMS源码
  3. 局域网联机_MC联机教程
  4. 27 《给人好印象的秘诀:如何让别人信任你、喜欢你、帮助你》 -豆瓣评分6.6
  5. HTML基本语法学习
  6. RHCSA——第八天
  7. 机器学习-11.神经网络
  8. 20221122非累加的m3u8的ts切片列表的补全步骤
  9. 苹果cmsV10仿B站风模板源码
  10. eclipse中写html文件路径,eclipse动态web项目文件位置