实验三 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]#

仅有一条评论

  1. 分布式文件系统HDFS

添加新评论

选择表情

  近期动态

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

  关于博主

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

  近期评论

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

要铭记在心:每天都是一年中最美好的日子。

生活远没有咖啡那么苦涩,关键是喝它的人怎么品味!每个人都喜欢和向往随心所欲的生活,殊不知随心所欲根本不是生活。

如果错过了太阳时你流泪了,那么你也要错过群星了。

不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

我不明白为什么要那么在意别人的看法,评头论足只是无聊人的消遣,何必看得如临大敌。如果你不吃别人家的饭,就别太把别人的话放在心上。