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读写文件操作的更多相关文章

  1. Hadoop开发第6期---HDFS的shell操作

    一.HDFS的shell命令简介 我们都知道HDFS 是存取数据的分布式文件系统,那么对HDFS 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...

  2. HDFS常用文件操作

    put 上传文件    hadoop fs -put wordcount.txt   /data/wordcount/ text 查看文件内容   hadoop fs -text /output/wo ...

  3. hdfs基本文件操作

    编程实现下列要求: 1.创建一个自己姓名首字母的文件夹 2.在文件夹下创建一个hdfstext1.txt文件,项文件内输入“班级学号姓名HDFS课堂测试”的文字内容: 3.在文件夹下在创建一个好的fs ...

  4. 【Hadoop离线基础总结】HDFS的API操作

    HDFS的API操作 创建maven工程并导入jar包 注意 由于cdh版本的所有的软件涉及版权的问题,所以并没有将所有的jar包托管到maven仓库当中去,而是托管在了CDH自己的服务器上面,所以我 ...

  5. node.js的fs核心模块读写文件操作 -----由浅入深

    node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...

  6. c++中读写文件操作

    读写文件这个,不常用,每次用的时候都会百度一下,每次写法还都不一样,所有总是记混.今天利用点时间总结下之前工程中用过的.以后就安照这种方法写了. 搞acmicpc的时候喜欢用freopen(),这个是 ...

  7. HDFS读写文件流程

    读取: 写入:https://www.imooc.com/article/70527

  8. 一步一步跟我学习hadoop(7)----hadoop连接mysql数据库运行数据读写数据库操作

        为了方便 MapReduce 直接訪问关系型数据库(Mysql,Oracle).Hadoop提供了DBInputFormat和DBOutputFormat两个类.通过DBInputFormat ...

  9. HDFS 中文件操作的错误集锦

    问题1  Java ApI执行追加写入时:无法写入 问题描述: ①当前数据节点无法写入,②追加文件需要再次请求. 问题2  命令行执行追加写入时:无法写入 问题描述: 当前数据节点无法写入 问题3   ...

随机推荐

  1. [推荐]WebService开发知识介绍

    [推荐]WebService开发知识介绍 WebService开发手册  http://wenku.baidu.com/view/df3992ce050876323112128a.html WebSe ...

  2. LPC4370 ACDHS speed and DMA

    LPC4370 ACDHS speed AHB clock BASE_M4_CLK CLK_M4_ADCHS up to 204 MHz. For register interface. ADCHS ...

  3. 【转】JAVA 接口

    1.定义接口    使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] inter ...

  4. Nginx开发从入门到精通 学习目录分享学习 (阿里著作)

    Nginx开发从入门到精通   缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部 ...

  5. 解决Electron加载带jquery的项目报错问题

    <!-- Insert this line above script imports --> <script>if (typeof module === 'object') { ...

  6. SDN论坛看到BW的问题及相关解答

    SDN论坛看到BW的问题及相关解答 链接: http://blog.sina.com.cn/s/blog_5c58e3c70100r1ou.html 现在有一个 QUERY 运行十分慢 , 所以我想在 ...

  7. Window Server IIS6.0部署webservice请求调用提示请求失败

    在一台window server 2003机器上部署了一个webservice,iis为6.0,奇怪的是.在服务器本机调用webservice成功了,可是在其它client调用却反馈失败.详细什么原因 ...

  8. JVM -Xss调整Stack Space的大小 【转】

    Java程序中,每个线程都有自己的Stack Space.这个Stack Space不是来自Heap的分配.所以Stack Space的大小不会受到-Xmx和-Xms的影响,这2个JVM参数仅仅是影响 ...

  9. Strategy策略设计模式

    1.策略模式和状态模式的区别和联系(本部分转载自:http://letscoding.cn/java%E4%B8%AD%EF%BC%8C%E7%8A%B6%E6%80%81%E6%A8%A1%E5%B ...

  10. 如何做好IT运营.

    定义IT管理的重点在于业务策略与 IT 部门提供的服务之间的一致性.IT 管理可建立必要的管理机制来确保可预测的 IT 服务交付,从而确保业务流程和 IT 流程之间的联系.IT 管理传统上属于CIO. ...