大数据技术基础实验四:HDFS实验——读写HDFS文件

这篇具有很好参考价值的文章主要介绍了大数据技术基础实验四:HDFS实验——读写HDFS文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大数据技术基础实验四:HDFS实验——读写HDFS文件

一、前言

在前面的实验中我们进行了HDFS的部署,并设置了一键启动HDFS操作,本期实验我们将使用HDFS开发环境进行HDFS写、读的编写,以及程序的运行,了解HDFS读写文件的调用流程,理解HDFS读写文件的原理。

好啦废话不多说,我们开始今天的实验操作。

二、实验目的

  1. 会在Linux环境下编写读写HDFS文件的代码
  2. .会使用jar命令打包代码
  3. 会在master服务器上运行HDFS读写程序
  4. 会在Windows上安装Eclipse Hadoop插件
  5. 会在Eclipse环境编写读写HDFS文件的代码
  6. 会使用Eclipse打包代码
  7. 会使用Xftp工具将实验电脑上的文件上传至master服务器

三、实验原理

1、Java Classpath

Classpath设置的目的是告诉Java执行环境,在哪些目录下可以找到所要执行的Java程序所需要的类或者包。

Java执行环境本身就是一个平台,执行于这个平台上的程序是已编译完成的Java程序(文件后缀为.class)。如果将Java执行环境比喻为操作系统,如果设置Path变量是为了让操作系统找到指定的工具程序(以Windows来说就是找到.exe文件),则设置Classpath的目的就是让Java执行环境找到指定的Java程序(也就是.class文件)。

我们来设置一下Classpath:

在设置中打开环境变量,然后点击新建

大数据技术基础实验四:HDFS实验——读写HDFS文件

每一路径中间必须以英文;作为分隔。

大数据技术基础实验四:HDFS实验——读写HDFS文件

2、Eclipse Hadoop插件下载

我们通过在Eclipse上下载Hadoop插件来开发Hadoop相关程序

因为我们学校的虚拟机集群环境是hadoop2.7.1,所以就只需要下载2。7.1版本插件。
我在网上找了很久的hadoop-eclipse-plugin插件,如果你们没找到可以留下你们的邮箱我单独发给你们。

安装插件在后面具体实验步骤的时候再来说明。

四、实验步骤

1、配置master服务器classpath

在终端输入如下命令:

vi /etc/profile

进入文件进行编辑,在该文件的最后加上如下信息:

JAVA_HOME=/usr/local/jdk1.7.0_79/
export HADOOP_HOME=/usr/cstor/hadoop
export JRE_HOME=/usr/local/jdk1.7.0_79//jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

大数据技术基础实验四:HDFS实验——读写HDFS文件

添加成功之后保存文件,然后再执行如下命令,让刚才设置的环境变量生效:

source /etc/profile

2、在master服务器编写HDFS写程序

在终端执行如下命令,然后编写HDFS写文件程序:

vi WriteFile.java

在文件内写入如下java程序代码然后保存退出。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class WriteFile {
public static void main(String[] args)throws Exception{
Configuration conf=new Configuration();
FileSystem hdfs = FileSystem.get(conf);
Path dfs = new Path("/weather.txt");
FSDataOutputStream outputStream = hdfs.create(dfs);
outputStream.writeUTF("nj 20161009 23\n");
outputStream.close();
}
}

大数据技术基础实验四:HDFS实验——读写HDFS文件

3、编译并打包HDFS写程序

使用javac编译刚刚编写的java代码,并使用jar命令打包为hdpAction.jar。

编译代码:

javac WriteFile.java

打包代码:

jar -cvf hdpAction.jar WriteFile.class

大数据技术基础实验四:HDFS实验——读写HDFS文件

4、 执行HDFS写程序

在master虚拟机上使用如下命令执行hdpAction.jar:

hadoop jar ~/hdpAction.jar WriteFile

然后输入如下命令查看是否生成weather.txt文件:

hadoop fs -ls /

大数据技术基础实验四:HDFS实验——读写HDFS文件

可以看出已经生成成功,我们来查看一下文件内容是否正确:

hadoop fs -cat /weather.txt

大数据技术基础实验四:HDFS实验——读写HDFS文件

OK,结果是对的,我们继续下一步。

5、在master服务器编写HDFS读程序

直接在终端执行如下命令进行编写HDFS读文件程序操作:

vi ReadFile.java

然后填入如下java程序:

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class ReadFile {
  public static void main(String[] args) throws IOException {
    Configuration conf = new Configuration();
    Path inFile = new Path("/weather.txt");
    FileSystem hdfs = FileSystem.get(conf);
    FSDataInputStream inputStream = hdfs.open(inFile);
    System.out.println("myfile: " + inputStream.readUTF());
    inputStream.close();
  }
}

大数据技术基础实验四:HDFS实验——读写HDFS文件

6、编译并打包HDFS读程序

再次使用刚刚的javac命令编译刚编写的java代码:

javac ReadFile.java

然后再次使用jar命令打包为hdpAction.jar:

jar -cvf hdpAction.jar ReadFile.class

大数据技术基础实验四:HDFS实验——读写HDFS文件

7、 执行HDFS读程序

再次在master虚拟机上使用hadoop.jar命令执行hdpAction.jar,查看程序运行结果:

hadoop jar ~/hdpAction.jar ReadFile

大数据技术基础实验四:HDFS实验——读写HDFS文件

8、安装与配置Eclipse Hadoop插件

现在我们开始之前的插件安装步骤,将我们下载的jar包放在Eclipse下载路径的插件包下面,如图:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后我们需要在本地配置Hadoop环境,用于加载hadoop目录中的jar包,我们需要下载这个文件:

大数据技术基础实验四:HDFS实验——读写HDFS文件

可以去官网下载,我是在学校大数据平台上面直接下载的,比较方便。

然后解压该文件到自己指定的路径。

然后我们需要验证是否可以用Eclipse新建Hadoop项目,打开Eclipse软件,按照如下操作选择:

大数据技术基础实验四:HDFS实验——读写HDFS文件

点击之后查看是否有Map/Reduce Project的选项。

大数据技术基础实验四:HDFS实验——读写HDFS文件

这里如果没有出现这个选项的话,需要去eclipse安装路径下的configuration文件中把org.eclipse.update删除,这是因为在 org.eclipse.update 文件夹下记录了插件的历史更新情况,它只记忆了以前的插件更新情况,而你新安装的插件它并不记录,之后再重启Eclipse就会出现这个选项了。

第一次新建Map/Reduce Project项目时需要指定hadoop解压后的位置:

大数据技术基础实验四:HDFS实验——读写HDFS文件

大数据技术基础实验四:HDFS实验——读写HDFS文件

9、使用Eclipse开发并打包HDFS写文件程序

紧接着上面输入项目名:WriteHDFS,创建一个Map/Reduce项目。

然后新建WriteFile类并填入如下java代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class WriteFile {
public static void main(String[] args)throws Exception{
Configuration conf=new Configuration();
FileSystem hdfs = FileSystem.get(conf);
Path dfs = new Path("/weather.txt");
FSDataOutputStream outputStream = hdfs.create(dfs);
outputStream.writeUTF("nj 20161009 23\n");
outputStream.close();
}
}

如果你出现报错的话,就需要进行导包操作并且配置设置文件,在项目目录下面创建jar或者lib文件夹,添加如下两个包,如果你找不到的话我可以发给你们,留下邮箱就行:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后在Eclipse左侧导航栏里右击该项目,选择导出,然后选择java,选择JAR 文件:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后填写导出文件的路径和文件名,自定义:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后点击下一步,再点击下一步,然后配置程序主类,这里必须要选择主类,我被这里坑了好久一直报错,学校大数据平台实验指导书和实验视频错了,必须要选择主类,不然后面上传到服务器就会一直报错。

大数据技术基础实验四:HDFS实验——读写HDFS文件

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后选择完成就打包完成。

10、上传HDFS写文件程序jar包并执行

我们使用Xftp工具将刚刚生成的jar包上传至master服务器上:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后在master服务器上使用如下命令执行hdpAction.jar:

hadoop jar ~/hdpAction.jar WriteFile

然后查看是否生成了weather.txt文件:

hadoop fs -ls /

大数据技术基础实验四:HDFS实验——读写HDFS文件

如果已经生成,然后再查看文件内容是否正确:

hadoop fs -act /weather.txt

大数据技术基础实验四:HDFS实验——读写HDFS文件

11、使用Eclipse开发并打包HDFS读文件程序

这里建项目的方法和前面的一样,我就不再详细的描述了。

新建项目名为ReadHDFS,然后再新建ReadFile类并编写如下代码:

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class ReadFile {
  public static void main(String[] args) throws IOException {
    Configuration conf = new Configuration();
    Path inFile = new Path("/weather.txt");
    FileSystem hdfs = FileSystem.get(conf);
    FSDataInputStream inputStream = hdfs.open(inFile);
    System.out.println("myfile: " + inputStream.readUTF());
    inputStream.close();
  }
}

然后和前面一样进行导包操作,再次强调要选择主类!

12、上传HDFS读文件程序jar包并执行

然后再次使用Xftp工具将包上传至master服务器上,并在master服务器上使用hadoop jar命令执行上传的包,查看程序运行结果:

大数据技术基础实验四:HDFS实验——读写HDFS文件

五、补充一点

学校大数据平台实验视频说,因为大数据集群是使用的jdk1.7版本,必须要使用相同版本才行,如果你是jdk1.8版本,也不用重新配置1.7版本,只需要在Eclipse切换执行环境就行,具体操作如下:

右击项目然后依次选择选项:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后将你们一开始的这个库移除,再点击添加库,这里我已经切换好了:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后选择JRE系统库,点击下一步:

大数据技术基础实验四:HDFS实验——读写HDFS文件

然后选择要切换的库版本,最后点击完成即可:

大数据技术基础实验四:HDFS实验——读写HDFS文件

六、最后我想说

本期的实验到这里就结束了,因为中间出现了各种报错,所以这个实验做了很久,最后在不断摸索中终于是完成了。

通过本次实验我深刻明白了大数据环境的各种配置是真的麻烦,各种烦人的要求,哈哈哈,真的是太绝了,你们做大数据实验的时候一定要注意细节,仔细一点,不然很容易踩各种坑。

大概就说这么多了,一定要多去实战,不然你们都不知道会收获多少经验(坑),如果你们在实验过程中遇见了什么问题,欢迎大家来提问,我们一起讨论学习交流。

最后,后续我仍会继续更新有关大数据的实验,虽然过程比较辛苦,但收获满满。文章来源地址https://www.toymoban.com/news/detail-415576.html

到了这里,关于大数据技术基础实验四:HDFS实验——读写HDFS文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

    这是我们大数据专业开设的第二门课程——大数据编程,使用的参考书是《Spark编程基础》,这门课跟大数据技术基础是分开学习的,但这门课是用的我们自己在电脑上搭建的虚拟环境进行实验的,不是在那个平台上,而且搭建的还是伪分布式,这门课主要偏向于有关大数据

    2024年04月10日
    浏览(54)
  • 头歌Educoder云计算与大数据——实验三 分布式文件系统HDFS

    本关任务:使用Hadoop命令来操作分布式文件系统。 为了完成本关任务你需要了解的知识有:1.HDFS的设计,2.HDFS常用命令。 HDFS的设计 点点点…题目省略,懒得写了,下同 分布式文件系统 NameNode与DataNode HDFS的常用命令 在右侧命令行中启动Hadoop,进行如下操作。 在HDFS中创建

    2024年02月13日
    浏览(60)
  • 《大数据技术原理与应用(第3版)》期末复习——第三章分布式文件系统HDFS习题

    分布式文件系统的结构 1、 名称节点 (“主节点”): 负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块之间的映射关系。 2、 数据节点 (“从节点”): 负责数据的存储和读取。在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应

    2024年02月12日
    浏览(50)
  • 【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)

    文件系统最后都需要以一定的格式存储数据文件,常见的文件存储布局有行式存储、列式存储以及混合式存储三种,不同的类别各有其优缺点和适用的场景,在目前的大数据分析系统中,列式存储和混合式存储方案因其特殊优点被广泛采用 在传统关系型数据库中,行式存储被

    2024年02月16日
    浏览(55)
  • HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究

    最近在调研使用WebHDFS进行HDFS文件读写的相关调查,因此需要对WebHDFS的整个读写流程进行探究,其中涉及到的必要的http重定向的整个流程必须搞清楚。 同时,由于HDFS涉及到大量的流式写和大文件读,因为我们比较关心WebHDFS对Chunked Transfer Coding的支持,我们对WebHDFS的这个特性

    2024年01月16日
    浏览(41)
  • 大数据技术原理与应用 概念、存储、处理、分析和应用(林子雨)——第三章 分布式文件系统HDFS

    大数据要解决数据存储问题,所以有了分布式文件系统(DFS),但可能不符合当时的一些应用需求,于是谷歌公司开发了GFS(Google file System)。GFS是闭源的,而HDFS是对GFS的开源实现。 1.GFS和DFS有什么区别? GFS(Google File System)和DFS(Distributed File System)都是分布式文件系统,

    2024年02月03日
    浏览(84)
  • Web前端技术基础实验报告三之超链接与多媒体文件应用

    目录 Web前端技术基础实验报告 实验题目:超链接与多媒体文件应用 实验目的:熟悉超链接与多媒体文件的插入的相关标签 实验内容 : 实验过程及结果 实验题目:超链接与多媒体文件应用 实验目的:熟悉超链接与多媒体文件的插入的相关标签 实验内容 : 项目1  设计简易

    2023年04月16日
    浏览(89)
  • Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

    主节点和副本节点通常指的是Hadoop分布式文件系统(HDFS)中的NameNode和DataNode。 NameNode(主节点):NameNode是Hadoop集群中的一个核心组件,它负责管理文件系统的命名空间和元数据。它记录了文件的目录结构、文件的块分配信息以及每个文件块所在的DataNode等关键信息。NameNo

    2024年02月14日
    浏览(54)
  • 实验二、熟悉常用的HDFS操作(HDFS JavaAPI之读取/上传/删除文件)

    理解HDFS在Hadoop体系结构中的角色 熟练使用HDFS操作常用的shell命令 熟悉HDFS操作常用的Java API 操作系统:CentOS 8 Hadoop版本:3.3.1 jdk版本:1.8 Java IDE:Eclipse 1. 使用Hadoop命令操作分布式文件系统。 新建目录 在本地和hadoop中分别创建文件夹: 在本地创建目录: Hadoop创建目录: 上

    2023年04月08日
    浏览(59)
  • 大数据 HDFS 的历史、特性、适用场景 运行机制、数据布局、读写流程、容错机制等

    作者:禅与计算机程序设计艺术 大数据的快速增长、高并发、海量数据、多样化的数据源、动态变化的数据特征,给数据的分析、挖掘带来了巨大的挑战。而HDFS就是存储大数据的一个关键组件。HDFS是一个分布式文件系统,主要用来存储和处理超大规模的数据集。HDFS可以方便

    2024年02月08日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包