Hadoop第4周练习—HDFS读写文件操作
1 运行环境说明... 3
:编译并运行《权威指南》中的例3.2. 3
内容... 3
2.3.1 创建代码目录... 4
2.3.2 建立例子文件上传到hdfs中... 4
2.3.3 配置本地环境... 5
2.3.4 编写代码... 5
2.3.5 编译代码... 6
2.3.6 使用编译代码读取文件... 6
:写入HDFS成为一个新文件... 7
内容... 7
3.3.1 编写代码... 8
3.3.2 编译代码... 9
3.3.3 建立测试文件... 9
3.3.5 验证是否成功... 10
:作业2反向操作... 10
内容... 10
4.3.1 编写代码... 11
4.3.2 编译代码... 11
4.3.3 建立测试文件... 12
4.3.4 使用编译代码把文件内容从hdfs输出到文件系统中... 12
4.3.5 验证是否成功... 12
运行环境说明
1.1 硬软件环境
线程,主频2.2G,6G内存
l 虚拟软件:VMware® Workstation 9.0.0 build-812388
l 虚拟机操作系统:CentOS 64位,单核,1G内存
l JDK:1.7.0_55 64 bit
l Hadoop:1.1.2
1.2 机器网络环境
该开发机器处于能连接互联网的局域网中,具体信息为:
|
序号 |
IP地址 |
机器名 |
类型 |
用户名 |
运行进程 |
|
10.88.147.220 |
Hadoop0 |
单机节点 |
hadoop |
NN、SNNTaskTracer、DN、JobTracer |
书面作业1:编译并运行《权威指南》中的例3.2
内容
在Hadoop集群中编译并运行《权威指南》中的例3.2
2.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.2
2.3.1创建代码目录
启动Hadoop,在/usr/local/hadoop-1.1.2目录下使用如下命令建立myclass和input目录:
mkdir myclass
mkdir input

2.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.txt
hadoop fs -ls /usr/hadoop

2.3.3配置本地环境
对/usr/local/hadoop-1.1.2/conf目录中的hadoop-env.sh进行配置,如下如所示:
ls
vi hadoop-env.sh

加入对HADOOP_CLASPATH变量值,值为/usr/local/hadoop-1.1.2/conf/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.java
ls

2.3.6使用编译代码读取文件
使用如下命令读取quangle.txt内容:
hadoop FileSystemCat /usr/hadoop/quangle.txt

书面作业2:写入HDFS成为一个新文件
内容
字节的文本文件,写一段程序(可以利用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("*");
}
});
个字符
in.skip(100);
byte[] buffer = newbyte[20];
的位置读取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.java
ls

3.3.3建立测试文件
进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立local2hdfs.txt文件,内容为:
cd /usr/local/hadoop-1.1.2/input/
vi local2hdfs.txt


3.3.4使用编译代码上传文件内容到hdfs
使用如下命令读取local2hdfs第101-120字节的内容写入HDFS成为一个新文件:
cd /usr/local/hadoop-1.1.2/bin/
hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt

3.3.5验证是否成功
使用如下命令读取local2hdfs_part.txt内容:
hadoop fs -cat /usr/hadoop/local2hdfs_part.txt

书面作业3:作业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.java
ls

4.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.txt
hadoop fs -ls /usr/hadoop

4.3.4使用编译代码把文件内容从hdfs输出到文件系统中
使用如下命令读取hdfs2local.txt第101-120字节的内容写入本地文件系统成为一个新文件:
hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txt
ls ../input

4.3.5验证是否成功
使用如下命令读取hdfs2local_part.txt内容:
cat ../input/hdfs2local_part.txt

Hadoop第4周练习—HDFS读写文件操作的更多相关文章
- Hadoop开发第6期---HDFS的shell操作
一.HDFS的shell命令简介 我们都知道HDFS 是存取数据的分布式文件系统,那么对HDFS 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...
- HDFS常用文件操作
put 上传文件 hadoop fs -put wordcount.txt /data/wordcount/ text 查看文件内容 hadoop fs -text /output/wo ...
- hdfs基本文件操作
编程实现下列要求: 1.创建一个自己姓名首字母的文件夹 2.在文件夹下创建一个hdfstext1.txt文件,项文件内输入“班级学号姓名HDFS课堂测试”的文字内容: 3.在文件夹下在创建一个好的fs ...
- 【Hadoop离线基础总结】HDFS的API操作
HDFS的API操作 创建maven工程并导入jar包 注意 由于cdh版本的所有的软件涉及版权的问题,所以并没有将所有的jar包托管到maven仓库当中去,而是托管在了CDH自己的服务器上面,所以我 ...
- node.js的fs核心模块读写文件操作 -----由浅入深
node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...
- c++中读写文件操作
读写文件这个,不常用,每次用的时候都会百度一下,每次写法还都不一样,所有总是记混.今天利用点时间总结下之前工程中用过的.以后就安照这种方法写了. 搞acmicpc的时候喜欢用freopen(),这个是 ...
- HDFS读写文件流程
读取: 写入:https://www.imooc.com/article/70527
- 一步一步跟我学习hadoop(7)----hadoop连接mysql数据库运行数据读写数据库操作
为了方便 MapReduce 直接訪问关系型数据库(Mysql,Oracle).Hadoop提供了DBInputFormat和DBOutputFormat两个类.通过DBInputFormat ...
- HDFS 中文件操作的错误集锦
问题1 Java ApI执行追加写入时:无法写入 问题描述: ①当前数据节点无法写入,②追加文件需要再次请求. 问题2 命令行执行追加写入时:无法写入 问题描述: 当前数据节点无法写入 问题3 ...
随机推荐
- SourceTree - 正在检查源... When cloning a repository, "Checking Source" spins forever
I am trying to clone a repository, my OpenSSH is set up correctly and I can do everything fine in Gi ...
- 【Vegas原创】vlookup的使用方法
情景: 1,当月移动话单,没有姓名,只有手机号码:(用户费用sheet) 2,IT部自己整理的手机号历史记录,有姓名,有手机号码:(历史信息sheet) 3,要求:需要从历史记录中,透视出当月所有手机 ...
- Qt 调试时的错误——Debug Assertion Failed!
在VS2008中写qt程序时调试出现此问题,但在release模式下就不存在,在网上搜罗了一圈,是指针的问题. 问题是这样的: 需要打开两个文件,文件中数据类型是float,我使用QVector进行保 ...
- EXCELL中怎么将两列数据对比,找出相同的和不同的数据?
假设你要从B列中找出A列里没有的数据,那你就在C1单元格里输入“=IF(ISNA(VLOOKUP(B1,A:A,1,0)),"F","T")”显示T就表示有,F ...
- 绘制n边形:用两个以上的控件来控制矩形的颜色、大小、位置及空实心(程序代写)
绘制n边形:用两个以上的控件来控制矩形的颜色.大小.位置及空实心.(n由键盘输入) package lzy.di9zhang; import java.awt.BorderLayout;import ...
- [原创]android自定义动画的一点感悟
android提供了一系列的动画处理api,包括animator以及animation等.由于动画效果是根据人眼视觉残留原理形成的,因此动画过程中android需要不断频繁的更新view的相关属性,由 ...
- chm格式文件能打开,但看不到内容问题
是chm格式的能打开文件,也能看到左边的目录信息,但是无法显示右面的具体内容.报错:无法显示网页.错误页面的url是:res://C:WINDOWSsystem32shdoclc.dll/dnserr ...
- (原)win8下编译GLUT
1.到opengl官网下载glut源代码 2.修改glutwin32.mak下 # MSVC install directoriesLIBINSTALL = XXXXX\VC\lib //vs ...
- 疑难杂症 - SQL语句整理
一.关联子查询-查日期最新列 前天在工作中遇到一条非常有用的SQL语句,想了好久愣是没搞出来.今天将这个问题模拟出来:先看表 需求是,对于每个人,仅显示时间最新的那一条记录. 答案如下: select ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...