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 ...
随机推荐
- android: 文件存储
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑 关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在 存储设备中的数据是处于持久状态的,持久化 ...
- Android Studio使用小技巧:提取方法代码片段
http://www.jb51.net/article/65510.htm 今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再 ...
- maven eclipse miss required library解决
我是直接到C:\Users\admin\.m2\repository目录把所有的库包全删除,然后在项目里刷新一下,搞定!
- IE8以下版本iframe出现滚动条和内容空白问题
在网页中使用iframe引用了第三方的页面 $("#tianqi").html('<iframesrc="http://i.tianqi.com/index.php ...
- Mac OS 中设置VPN(pptp连接方式)
第一步:点击系统设置(如图) 第二步:点击网络,进入网络设置(如图) 第三步:点击+号-创建新服务,创建新的VPN网络连接(如图) 第四步:接口-中选-VPN, VPN类型-中选-PPTP,服务名称- ...
- 10分钟掌握XML、JSON及其解析
引言 NOKIA 有句著名的广告语:“科技以人为本”.任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个人穷其一生也未必能掌 ...
- AWVS漏洞测试-02节-添加一个简单的新闻系统
实现一个简单的新闻发布系统 有登录 注册 添加新闻 浏览新闻 评论新闻 新闻列表 这些基本功能 使用asp.net webform 首先是登录页 protected void Button1_Clic ...
- how to use javap command
SYNOPSIS javap [options] classes DESCRIPTION The javap command is called "disassembler" be ...
- Ehcache 使用
自从Ehcache 到了1.2+的版本,就支持分布式缓存了 Spring + Hibernate的结构 ,ehcache的对这几个框架的支持较好,就采用这个缓存方案 下面是配置文件: <ehca ...
- adb使用
一.使用adb删除系统应用,如Launcher.apk adb root 获取root权限 adb remount 挂载系统的读写权限 adb she ...