实验三 HDFS实验:读写HDFS文件:学习使用Java读写HDFS文件

编写了HDFS写、读代码;在master机上执行了该写、读程序。通过实验了解HDFS读写文件的调用流程,理解HDFS读写文件的原理。

实验目的

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

步骤1配置client服务器环境变量

使用ssh工具登录master服务器,执行命令vi /etc/profile,编辑该文件,将末尾的如下几行:

JAVA_HOME=/usr/local/jdk1.7.0_79/
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
export HADOOP_HOME=/usr/cstor/hadoop
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"

用下列行进行替换:

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"

执行命令source /etc/profile,使刚才的环境变量修改生效:

[root@master ~]# source /etc/profile

步骤2在client编写HDFS写程序

创建一个write目录:

[root@master ~]# mkdir write

进入目录:

[root@master ~]#cd write
[root@master write]#

编写HDFS写文件程序
在目录下执行vi WriteFile.java建立一个名为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();
}
}

添加完成保存退出
查看当前目录是否存在WriteFile.java文件:

[root@master write]# ls
WriteFile.java

编译并打包HDFS写程序
使用javac编译刚刚编写的代码,并使用jar命令打包为hdpAction.jar:

[root@master write]# javac WriteFile.java
[root@master write]# jar -cvf hdpAction.jar WriteFile.class
added manifest
adding: WriteFile.class(in = 833) (out= 489)(deflated 41%)

步骤3在client执行HDFS写程序

在master服务器上使用hadoop jar命令执行hdpAction.jar:

[root@master write]# hadoop jar  hdpAction.jar  WriteFile

查看是否已生成weather.txt文件,若已生成,则查看文件内容是否正确:

[root@master ~]# hadoop fs -ls /
Found 2 items
-rw-r--r--   3 root supergroup         29 2016-12-05 12:28 /machines
-rw-r--r--   3 root supergroup         17 2016-12-05 14:54 /weather.txt
[root@master ~]# hadoop fs -cat /weather.txt
nj 20161009 23

浏览器查看文件:

http://10.30.216.15:50070

3-3.PNG

步骤4在client编写HDFS读程序

创建一个read目录:

[root@master ~]# mkdir read

进入目录:

[root@master ~]#cd read
[root@master read]#

编写HDFS读文件程序
在当前目录下执行vi ReadFile.java
建立一个名为ReadFile.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();
  }
}

添加完成保存退出
查看当前目录是否存在ReadFile.java文件:

[root@master read]# ls
ReadFile.java

编译并打包HDFS读程序
使用javac编译刚刚编写的代码,并使用jar命令打包为hdpAction.jar

[root@master read]# javac ReadFile.java
[root@master read]# jar -cvf hdpAction.jar ReadFile.class
added manifest
adding: ReadFile.class(in = 1093) (out= 597)(deflated 45%)

步骤5在client执行HDFS读程序

在master服务器上使用hadoop jar命令执行hdpAction.jar,查看程序运行结果:

[root@master read]# hadoop jar  hdpAction.jar  ReadFile
myfile: nj 20161009 23

[root@master read]#

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

仅有一条评论

  1. 分布式文件系统HDFS

添加新评论

选择表情

  近期动态

近段时间可能都不怎么更新,回老家了。老家那个网。。。5G都快出来了。咋们老家还停留在3G。。唉
--- 发布日期 2019年7月30日

  关于博主

多数人都拥有自己不了解的能力和机会,都有可能做到未曾梦想的事情。

  近期评论

  •  YOLEN: 友链:Leelon 更改为:优乐博客 链接:leelon.cn 更改为:https://yol...
  •  马丁:
  •  浪客小苏: 以添加,请尽快添加本站,谢谢。
  •  Mkre: 分布式文件系统HDFS
  •  limm: https://www.cwtseo.com/
  •  hb: 谢谢 亲。遇见你很幸运,有你这个一直不老的朋友更是我的福气。 也祝我们的友谊天长地久。 很喜欢...

只有脚踏实地的人,才能够说:路,就在我的脚下。

无论你选择做什么,追求完美的程度决定你成就的高度。

这个世界最脆弱的是生命,身体健康,很重要。

上帝说:你要什么便取什么,但是要付出相当的代价。

现在站在什么地方不重要,重要的是你往什么方向移动。