HDFS读写文件操作
2017-04-08 21:09
423 查看
1 运行环境说明1.1 硬软件环境1.2 机器网络环境2 书面作业1:编译并运行《权威指南》中的例3.22.1 书面作业1内容2.2 运行代码2.3 实现过程2.3.1 创建代码目录2.3.2 建立例子文件上传到hdfs中2.3.3 配置本地环境2.3.4 编写代码2.3.5 编译代码2.3.6 使用编译代码读取文件3 书面作业2:写入HDFS成为一个新文件3.1 书面作业2内容3.2 运行代码3.3 实现过程3.3.1 编写代码3.3.2 编译代码3.3.3 建立测试文件3.3.4 使用编译代码上传文件内容到hdfs3.3.5 验证是否成功4 书面作业3:作业2反向操作4.1 书面作业2内容4.2 程序代码4.3 实现过程4.3.1 编写代码4.3.2 编译代码4.3.3 建立测试文件4.3.4 使用编译代码把文件内容从hdfs输出到文件系统中4.3.5 验证是否成功
使用如下命令在hdfs中建立/usr/hadoop/文件夹hadoop fs -mkdir /usr/hadoop/hadoop fs -ls /usr/
把例子文件上传到hdfs的/usr/hadoop/文件夹中hadoop fs -copyFromLocal ../input/quangle.txt /usr/hadoop/quangle.txthadoop fs -ls /usr/hadoop
加入对HADOOP_CLASPATH变量值,值为/usr/local/hadoop-1.1.2/myclass
输入代码内容:
输入代码内容:
输入代码内容:
把该文件上传到hdfs的/usr/hadoop/文件夹中cd /usr/local/hadoop-1.1.2/bin/hadoop fs -copyFromLocal ../input/hdfs2local.txt /usr/hadoop/hdfs2local.txthadoop fs -ls /usr/hadoop
1 运行环境说明
1.1 硬软件环境
l 主机操作系统:Windows 64 bit,双核4线程,主频2.2G,6G内存l 虚拟软件:VMware Workstation 9.0.0 build-812388l 虚拟机操作系统:CentOS 64位,单核,1G内存l JDK:1.7.0_55 64 bitl Hadoop:1.1.21.2 机器网络环境
该开发机器处于能连接互联网的局域网中,具体信息为:序号 | IP地址 | 机器名 | 类型 | 用户名 | 运行进程 |
1 | 10.88.147.220 | Hadoop0 | 单机节点 | hadoop | NN、SNNTaskTracer、DN、JobTracer |
2 书面作业1:编译并运行《权威指南》中的例3.2
2.1 书面作业1内容
在Hadoop集群中编译并运行《权威指南》中的例3.22.2 运行代码
import java.io.InputStream; import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.apache.hadoop.io.IOUtils; publicclass FileSystemCat { publicstaticvoid main(String[] args) throws Exception { String uri = args[0]; Configuration conf = new Configuration(); FileSystem fs = FileSystem. get(URI.create (uri), conf); InputStream in = null; try { in = fs.open( new Path(uri)); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } }}2.3 实现过程
在Hadoop集群中编译并运行《权威指南》中的例3.22.3.1创建代码目录
启动Hadoop,在/usr/local/hadoop-1.1.2目录下使用如下命令建立myclass和input目录:mkdir myclassmkdir input2.3.2建立例子文件上传到hdfs中
进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立quangle.txt文件,内容为:使用如下命令在hdfs中建立/usr/hadoop/文件夹hadoop fs -mkdir /usr/hadoop/hadoop fs -ls /usr/
把例子文件上传到hdfs的/usr/hadoop/文件夹中hadoop fs -copyFromLocal ../input/quangle.txt /usr/hadoop/quangle.txthadoop fs -ls /usr/hadoop
2.3.3配置本地环境
对/usr/local/hadoop-1.1.2/conf目录中的hadoop-env.sh进行配置,如下如所示:lsvi hadoop-env.sh加入对HADOOP_CLASPATH变量值,值为/usr/local/hadoop-1.1.2/myclass
2.3.4编写代码
进入/usr/local/hadoop-1.1.2/myclass目录,在该目录中建立FileSystemCat.java代码文件,命令如下:cd /usr/local/hadoop-1.1.2/myclass/vi FileSystemCat.java输入代码内容:
2.3.5编译代码
在/usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.javals2.3.6使用编译代码读取文件
使用如下命令读取quangle.txt内容:hadoop FileSystemCat /usr/hadoop/quangle.txt3 书面作业2:写入HDFS成为一个新文件
3.1 书面作业2内容
自行在本地文件系统生成一个大约100字节的文本文件,写一段程序(可以利用Java API或C API),读入这个文件,并将其第101-120字节的内容写入HDFS成为一个新文件,提供代码和执行结果演示抓图3.2 运行代码
注意:在编译前请先删除中文注释!import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.OutputStream;import java.net.URI; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;import org.apache.hadoop.util.Progressable; publicclass LocalFile2Hdfs { publicstaticvoid main(String[] args) throws Exception { // 获取读取源文件和目标文件位置参数 String local = args[0]; String uri = args[1]; FileInputStream in = null; OutputStream out = null; Configuration conf = new Configuration(); try { // 获取读入文件数据 in = new FileInputStream(new File(local)); // 获取目标文件信息 FileSystem fs = FileSystem.get(URI.create(uri), conf); out = fs.create(new Path(uri), new Progressable() { @Override publicvoid progress() { System.out.println("*"); } }); // 跳过前100个字符 in.skip(100); byte[] buffer = newbyte[20]; // 从101的位置读取20个字符到buffer中 int bytesRead = in.read(buffer); if (bytesRead >= 0) { out.write(buffer, 0, bytesRead); } } finally { IOUtils.closeStream(in); IOUtils.closeStream(out); } }}3.3 实现过程
3.3.1编写代码
进入/usr/local/hadoop-1.1.2/myclass目录,在该目录中建立LocalFile2Hdfs.java代码文件,命令如下:cd /usr/local/hadoop-1.1.2/myclass/vi LocalFile2Hdfs.java输入代码内容:
3.3.2编译代码
在/usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.javals3.3.3建立测试文件
进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立local2hdfs.txt文件,内容为:cd /usr/local/hadoop-1.1.2/input/vi local2hdfs.txt3.3.4使用编译代码上传文件内容到hdfs
使用如下命令读取local2hdfs第101-120字节的内容写入HDFS成为一个新文件:cd /usr/local/hadoop-1.1.2/bin/hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt3.3.5验证是否成功
使用如下命令读取local2hdfs_part.txt内容:hadoop fs -cat /usr/hadoop/local2hdfs_part.txt4 书面作业3:作业2反向操作
4.1 书面作业2内容
2的反向操作,在HDFS中生成一个大约100字节的文本文件,写一段程序(可以利用Java API或C API),读入这个文件,并将其第101-120字节的内容写入本地文件系统成为一个新文件,提供代码和执行结果演示抓图4.2 程序代码
4.3 实现过程
4.3.1编写代码
进入/usr/local/hadoop-1.1.2/myclass目录,在该目录中建立Hdfs2LocalFile.java代码文件,命令如下:cd /usr/local/hadoop-1.1.2/myclass/vi Hdfs2LocalFile.java输入代码内容:
4.3.2编译代码
在/usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.javals4.3.3建立测试文件
进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立hdfs2local.txt文件,内容为:cd /usr/local/hadoop-1.1.2/input/vi hdfs2local.txt把该文件上传到hdfs的/usr/hadoop/文件夹中cd /usr/local/hadoop-1.1.2/bin/hadoop fs -copyFromLocal ../input/hdfs2local.txt /usr/hadoop/hdfs2local.txthadoop fs -ls /usr/hadoop
4.3.4使用编译代码把文件内容从hdfs输出到文件系统中
使用如下命令读取hdfs2local.txt第101-120字节的内容写入本地文件系统成为一个新文件:hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txtls ../input4.3.5验证是否成功
使用如下命令读取hdfs2local_part.txt内容:cat ../input/hdfs2local_part.txt相关文章推荐
- hdfs——hadoop文件读写操作
- HDFS文件系统简单的Java读写操作
- Hadoop笔记四之Hdfs文件读写操作
- HDFS文件的读写操作理论解析
- 调用JAVA API对HDFS文件进行文件的读写、上传下载、删除等操作代码详解
- HDFS读写文件操作
- Hadoop—HDFS读写文件操作---练习4
- Hadoop第4周练习—HDFS读写文件操作
- HDFS中文件的读写操作
- 大数据笔记06:大数据之Hadoop的HDFS(文件的读写操作)
- Document/View的交互 -- 文件读写操作
- 文件随机读写操作
- 对于大文件的读写操作
- 含读写及替换字符的复制文件操作
- 对WEB.Config文件进行(读写操作)
- 读写文件操作
- 一个非常非常非常基础的程序,写的不好,但是一般的文件读写操作及字符处理函数都涉及到了..新手学习用的
- 第二十三课:PHP中文件读写操作
- 另一个文件读写操作
- VC++中,配置文件的读写操作