HDFS实验报告
目录:
一、三个实验总结步骤
二、三个实验具体步骤
三、实验心得
一、三个实验总结步骤
(1)测试例子1.编译代码读取HDFS文件内容
在/app/hadoop-1.1.2目录下建立myclass和input目录,
在hdfs中建立目录/class4;
input目录下建立并编写quangle.txt文件,
将本地quangle.txt文件复制到class4目录下;
myclass目录下建立、编写并编译FileSystemCat.java代码文件,
使用编译代码读取class4目录下的quangle.txt文件。
(2)测试例子2.编译代码读取本地文件并将本地文件的部分内容写到HDFS
myclass目录下建立、编写并编译LocalFile2Hdfs.java代码文件;
input目录下建立并编写local2hdfs.txt文件;
使用编译代码将local2hdfs.txt文件的部分内容上传到HDFS,
成为class4目录下的新文件local2hdfs_part.txt;
读取local2hdfs_part.txt文件内容验证是否上传成功。
(3)测试例子3.编译代码读取HDFS中文件并将HDFS中文件的部分内容写到本地
myclass目录下建立、编写并编译Hdfs2LocalFile.java代码文件;
input目录下建立并编写hdfs2local.txt文件,
将该hdfs2local.txt文件复制到class4目录下;
使用编译代码将class4目录下hdfs2local.txt文件的部分内容写入本地,
成为input目录下的新文件hdfs2local_part.txt;
读取hdfs2local_part.txt文件内容验证是否成功。
二、三个实验具体步骤
3.1 测试例子1内容
在Hadoop集群中编译并运行《权威指南》中的例3.2,读取HDFS文件内容
3.3 实现过程
3.3.1 创建代码目录
1.配置主机名为hadoop;
2.启动Hadoop;
3.在/app/hadoop-1.1.2目录下建立myclass和input目录;
3.3.2 建立例子文件上传到HDFS中
1.进入/app/hadoop-1.1.2/input目录,在该目录中建立并编辑quangle.txt文件
2.在hdfs中建立目录/class4
(hadoop fs -mkdir /class4)
3.把例子文件上传到hdfs的/class4文件夹中
(
$ cd /app/hadoop-1.1.2/input
$ hadoop fs -copyFromLocal quangle.txt /class4/quangle.txt
$ hadoop fs -ls /class4
)
3.3.3 配置本地环境
对/app/hadoop-1.1.2/conf目录中的hadoop-env.sh进行配置,如下所示:
(
$ cd /app/hadoop-1.1.2/conf
$ sudo vi hadoop-env.sh
)
加入对HADOOP_CLASPATH变量值,值为/app/hadoop-1.1.2/myclass,设置完毕后编译该配置文件,使配置生效
(export HADOOP_CLASSPATH=/app/hadoop-1.1.2/myclass)
3.3.4 编写代码
进入/app/hadoop-1.1.2/myclass目录,在该目录中建立FileSystemCat.java代码文件,命令如下:
$ cd /app/hadoop-1.1.2/myclass/
$ vi FileSystemCat.java
3.3.5 编译代码
在/app/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:
$ javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java
3.3.6 使用编译代码读取HDFS文件
使用如下命令读取HDFS中/class4/quangle.txt内容:
$ hadoop FileSystemCat /class4/quangle.txt
4 测试例子2
4.1 测试例子2内容
在本地文件系统生成一个大约100字节的文本文件,写一段程序读入这个文件并将其第101-120字节的内容写入HDFS成为一个新文件。
4.3 实现过程
4.3.1 编写代码
进入/app/hadoop-1.1.2/myclass目录,在该目录中建立LocalFile2Hdfs.java代码文件,命令如下:
cd /app/hadoop-1.1.2/myclass/
vi LocalFile2Hdfs.java
4.3.2 编译代码
在/app/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:
javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.java
4.3.3 建立测试文件
进入/app/hadoop-1.1.2/input目录,在该目录中建立local2hdfs.txt文件
cd /app/hadoop-1.1.2/input/
vi local2hdfs.txt
4.3.4 使用编译代码上传文件内容到HDFS
使用如下命令读取local2hdfs第101-120字节的内容写入HDFS成为一个新文件:
cd /app/hadoop-1.1.2/input
hadoop LocalFile2Hdfs local2hdfs.txt /class4/local2hdfs_part.txt
4.3.5 验证是否成功
使用如下命令读取local2hdfs_part.txt内容:
hadoop fs -cat /class4/local2hdfs_part.txt
5 测试例子3
5.1 测试例子3内容
测试例子2的反向操作,在HDFS中生成一个大约100字节的文本文件,写一段程序读入这个文件,并将其第101-120字节的内容写入本地文件系统成为一个新文件。
5.3 实现过程
5.3.1 编写代码
进入/app/hadoop-1.1.2/myclass目录,在该目录中建立Hdfs2LocalFile.java代码文件,命令如下:
cd /app/hadoop-1.1.2/myclass/
vi Hdfs2LocalFile.java
5.3.2 编译代码
在/app/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:
javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.java
5.3.3 建立测试文件
进入/app/hadoop-1.1.2/input目录,在该目录中建立hdfs2local.txt文件
cd /app/hadoop-1.1.2/input/
vi hdfs2local.txt
在/app/hadoop-1.1.2/input目录下把该文件上传到hdfs的/class4/文件夹中
hadoop fs -copyFromLocal hdfs2local.txt /class4/hdfs2local.txt
hadoop fs -ls /class4/
5.3.4 使用编译代码把文件内容从HDFS输出到文件系统中
使用如下命令读取hdfs2local.txt第101-120字节的内容写入本地文件系统成为一个新文件:
hadoop Hdfs2LocalFile /class4/hdfs2local.txt hdfs2local_part.txt
三、实验心得
通过本次实验对HDFS有了更深一步的理解。
不仅了解到HDFS的读写操作的基本流程,
借助open()、read()方法执行HDFS读操作,
借助create()、write()方法执行HDFS写操作,
两种操作最后都借助close()关闭读或写。
还理解了存在本地指的是文件存储在linux的某个目录下,
提交到HDFS指的是文件存储在分布式文件系统的DN里。