zoukankan      html  css  js  c++  java
  • Hadoop第4周练习—HDFS读写文件操作

    1    运行环境说明... 3

    1.1     硬软件环境... 3

    1.2     机器网络环境... 3

    2    书面作业1:编译并运行《权威指南》中的例3.2. 3

    2.1     书面作业1内容... 3

    2.2     运行代码... 3

    2.3     实现过程... 4

    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

    3    书面作业2:写入HDFS成为一个新文件... 7

    3.1    书面作业2内容... 7

    3.2    运行代码... 7

    3.3    实现过程... 8

    3.3.1   编写代码... 8

    3.3.2   编译代码... 9

    3.3.3   建立测试文件... 9

    3.3.4   使用编译代码上传文件内容到hdfs10

    3.3.5   验证是否成功... 10

    4    书面作业3:作业2反向操作... 10

    4.1    书面作业2内容... 10

    4.2    程序代码... 10

    4.3    实现过程... 11

    4.3.1   编写代码... 11

    4.3.2   编译代码... 11

    4.3.3   建立测试文件... 12

    4.3.4   使用编译代码把文件内容从hdfs输出到文件系统中... 12

    4.3.5   验证是否成功... 12

     

    1    运行环境说明

    1.1  硬软件环境

    l  主机操作系统:Windows 64 bit,双核4线程,主频2.2G6G内存

    l  虚拟软件:VMware® Workstation 9.0.0 build-812388

    l  虚拟机操作系统:CentOS 64位,单核,1G内存

    l  JDK1.7.0_55 64 bit

    l  Hadoop1.1.2

    1.2  机器网络环境

    该开发机器处于能连接互联网的局域网中,具体信息为:

    序号

    IP地址

    机器名

    类型

    用户名

    运行进程

    1

    10.88.147.220

    Hadoop0

    单机节点

    hadoop

    NNSNNTaskTracerDNJobTracer

    2    书面作业1:编译并运行《权威指南》中的例3.2

    2.1  书面作业1内容

    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目录下使用如下命令建立myclassinput目录:

    mkdir myclass

    mkdir input

    clip_image002

    2.3.2建立例子文件上传到hdfs

    进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立quangle.txt文件,内容为:

    clip_image004

    使用如下命令在hdfs中建立/usr/hadoop/文件夹

    hadoop fs -mkdir /usr/hadoop/

    hadoop fs -ls /usr/

    clip_image006

    把例子文件上传到hdfs/usr/hadoop/文件夹中

    hadoop fs -copyFromLocal ../input/quangle.txt /usr/hadoop/quangle.txt

    hadoop fs -ls /usr/hadoop

    clip_image008

    2.3.3配置本地环境

    /usr/local/hadoop-1.1.2/conf目录中的hadoop-env.sh进行配置,如下如所示:

    ls

    vi hadoop-env.sh

    clip_image010

    加入对HADOOP_CLASPATH变量值,值为/usr/local/hadoop-1.1.2/myclass

    clip_image012

    2.3.4编写代码

    进入/usr/local/hadoop-1.1.2/myclass目录,在该目录中建立FileSystemCat.java代码文件,命令如下:

    cd /usr/local/hadoop-1.1.2/myclass/

    vi FileSystemCat.java

    clip_image014

    输入代码内容:

    clip_image016

    2.3.5编译代码

    /usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:

    javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java

    ls

    clip_image018

    2.3.6使用编译代码读取文件

    使用如下命令读取quangle.txt内容:

    hadoop FileSystemCat /usr/hadoop/quangle.txt

    clip_image020

    3    书面作业2:写入HDFS成为一个新文件

    3.1  书面作业2内容

    自行在本地文件系统生成一个大约100字节的文本文件,写一段程序(可以利用Java APIC 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

    clip_image022

    输入代码内容:

    clip_image024

    3.3.2编译代码

    /usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:

    javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.java

    ls

    clip_image026

    3.3.3建立测试文件

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

    cd /usr/local/hadoop-1.1.2/input/

    vi local2hdfs.txt

    clip_image028

    clip_image030

    3.3.4使用编译代码上传文件内容到hdfs

    使用如下命令读取local2hdfs101-120字节的内容写入HDFS成为一个新文件:

    cd /usr/local/hadoop-1.1.2/bin/

    hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt

    clip_image032

    3.3.5验证是否成功

    使用如下命令读取local2hdfs_part.txt内容:

    hadoop fs -cat /usr/hadoop/local2hdfs_part.txt

    clip_image034

    4    书面作业3:作业2反向操作

    4.1  书面作业2内容

    2的反向操作,在HDFS中生成一个大约100字节的文本文件,写一段程序(可以利用Java APIC 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

    clip_image036

    输入代码内容:

    clip_image038

    4.3.2编译代码

    /usr/local/hadoop-1.1.2/myclass目录中,使用如下命令编译代码:

    javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.java

    ls

    clip_image040

    4.3.3建立测试文件

    进入/usr/local/hadoop-1.1.2/input目录,在该目录中建立hdfs2local.txt文件,内容为:

    cd /usr/local/hadoop-1.1.2/input/

    vi hdfs2local.txt

    clip_image042

    clip_image044

    把该文件上传到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

    clip_image046

    4.3.4使用编译代码把文件内容从hdfs输出到文件系统中

    使用如下命令读取hdfs2local.txt101-120字节的内容写入本地文件系统成为一个新文件:

    hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txt

    ls ../input

    clip_image048

    4.3.5验证是否成功

    使用如下命令读取hdfs2local_part.txt内容:

    cat ../input/hdfs2local_part.txt

    clip_image050

  • 相关阅读:
    import 和 from … import 模块的变量、方法引用差异
    python引入模块的五种方式与内置模块
    webdriver定位元素的方法和基础函数的使用
    mysql update语句 in执行效率优化
    服务器配置jupyter notebook
    安装CUDA和cuDNN
    Linux命令后台运行
    Ubuntu查看系统信息(CPU、GPU信息)
    Linux下scp用法简析
    如何解决“This app is damaged and can’t be opened. You should move it to the Trash”
  • 原文地址:https://www.cnblogs.com/shishanyuan/p/4172806.html
Copyright © 2011-2022 走看看