Hadoop+Spark大数据技术 第三次作业

  • 第三次作业

    • 1.简述HDFS Shell三种操作命令hadoop fs、hadoop dfs、hdfs dfs的异同点。

      • 相同点

        • 用于与 Hadoop 分布式文件系统(HDFS)交互。可以执行各种文件系统操作,如文件复制、删除、移动等。

      • 不同点

        • hadoop fs、hadoop dfs已弃用,新版本推荐使用hdfs dfs。

    • 2.简述常用HDFS Shell 用户命令及其功能,简述HDFS 管理员命令的作用。

      • 2.3.2 HDFS常用的Shell 操作

        • 1.创建目录——mkdir 命令

        • 2.列出指定目录下的内容——ls命令

        • 3.上传文件——put命令

        • 4.从HDFS中下载文件到本地文件系统——get命令

        • 5.复制文件——cp命令

        • 6.查看文件内容——cat命令

        • 7.在HDFS目录中移动文件——mv命令

        • 8、显示文件大小——du命令

        • 9.追加文件内容——appendToFile命令

        • 10.从本地文件系统中复制文件到HDFS——copyFromLocal命令

        • 11.从HDFS中复制文件到本地文件系统—copyToLocal命令

        • 12.从HDFS中删除文件和目录——rm命令

      • 管理员命令(dfsadmin)

        • 1.查看文件系统的基本信息和统计信息——report命令

          • 查看HDFS状态,比如有哪些DataNode、每个DataNode的情况

        • 2.安全模式——safemode命令

    • 3.简述HDFS文件操作主要涉及的Java类和FileSystem对象的常用方法。

      • 主要涉及的Java类

        • org.apache.hadoop.con.Configuration

          • 作用该类的对象封装了客户端或者服务器的配置

        • org.apache.hadoop.fs.FileSystem

          • 该类的对象是一个文件系统对象,可以用该对象的一些方法对文件进行操作。

        • org.apache.hadoop.fs.FileStatus

          • 用于向客户端展示系统中文件和目录的元数据,具体包括文件大小、数据块大小、副本信息、所有者、修改时间等。

        • org.apache.hadoop.fs.FSDatalnputStream

          • 文件输入流,用于读取Hadoop文件

        • org.apache.hadoop.fs.FSDataOutputStream

          • 文件输出流,用于写人Hadoop文件

        • org.apache.hadoop.fs.Path

          • 用于表示Hadoop文件系统中的文件或者目录的路径

      • 通过FileSystem 对象的一些方法可以对文件进行操作,常用方法如

        • copyFromLocalFile(Path src, Path dst)

          • 从本地文件系统复制文件到HDFS

        • copyToLocalFile(Path src, Path dst)

          • 从HDFS复制文件到本地文件系统

        • mkdirs(Path f)

          • 建立子目录

        • rename(Path src, Path dst)

          • 重命名文件或文件夹

        • delete(Path f)

          • 删除指定文件

    • 4.编写利用Java API实现上传文件至HDFS的Java程序。

      import org.apache.hadoop.conf.Configuration;
      import org.apache.hadoop.fs.FileSystem;
      import org.apache.hadoop.fs.Path;
      import java.io.IOException;
      
      public class HdfsFileUploader {
      
          public static void main(String[] args) {
              // 设置 Hadoop 配置信息
              Configuration conf = new Configuration();
              // 设置 HDFS 地址
              conf.set("fs.defaultFS", "hdfs://localhost:9000");
      
              // 创建 HDFS 文件系统对象
              FileSystem fs = null;
              try {
                  fs = FileSystem.get(conf);
                  // 本地文件路径
                  Path srcPath = new Path("local/path/to/your/file.txt");
                  // HDFS 目标路径
                  Path destPath = new Path("/path/in/hdfs/destination/file.txt");
                  
                  // 调用文件上传方法
                  uploadFile(fs, srcPath, destPath);
                  System.out.println("文件上传成功!");
              } catch (IOException e) {
                  e.printStackTrace();
                  System.out.println("文件上传失败:" + e.getMessage());
              } finally {
                  // 关闭 FileSystem 对象
                  if (fs != null) {
                      try {
                          fs.close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
          }
      
          // 文件上传方法
          public static void uploadFile(FileSystem fs, Path srcPath, Path destPath) throws IOException {
              // 将本地文件上传至 HDFS
              fs.copyFromLocalFile(srcPath, destPath);
          }
      }
      

    • 5.简述MapReduce并行编程模型的基本特点。

      • Cluster Infrastructure:

        • MapReduce 提供了一个基于集群的高性能并行计算平台,可以利用普通商用服务器构建分布式计算集群,规模从数十到数千个节点不等。

      • Software Framework:

        • 作为并行计算与运行软件框架,MapReduce 提供了一个设计精良的框架,自动处理并行化计算任务、数据划分、任务分配和结果收集等复杂细节,大大减轻了开发人员的负担。

      • Programming Model & Methodology:

        • MapReduce 借鉴了函数式编程语言 Lisp 的设计思想,提供了一种简便的并行程序设计模型与方法。开发人员可以利用 Map 和 Reduce 这两个函数实现并行计算任务,使用抽象的操作和接口完成大规模数据的编程和计算处理。

      • 分而治之策略:

        • MapReduce 采用了“分而治之”的策略,将大规模数据集切分成多个独立的小数据集,即分片,然后由多个 Map 任务并行处理,从而实现高效的数据处理。

      • 计算向数据靠拢:

        • MapReduce 设计中的一个理念是“计算向数据靠拢”,通过将计算任务部署在存储节点附近,减少了数据传输开销,提高了集群的网络带宽利用效率。

    • 6.通过教材中图3-6 – 图3-10,说明WordCount程序的Map和Reduce过程。

      • Map 过程:

        • 输入:Map 过程的输入是一组键-值对,其中键表示输入文本中的行号,值表示文本中的一行内容。

        • 映射:对于每个输入键-值对,Map 过程将其分解为单词,并为每个单词生成一个新的键-值对,其中键是单词,值为 1(表示单词出现一次)。

        • 输出:Map 过程生成一组新的键-值对,其中键是单词,值为 1。

      • Reduce 过程:

        • 输入:Reduce 过程的输入是一组键-值对,其中键是单词,值是该单词在输入文本中出现的次数。

        • 汇总:Reduce 过程对相同的单词进行汇总,将它们的值相加,得到单词出现的总次数。

        • 输出:Reduce 过程生成一组新的键-值对,其中键是单词,值是该单词在输入文本中出现的总次数。

      • 简言之,Map 过程将文本划分为单词,并为每个单词标记计数为 1,而 Reduce 过程则对相同单词的计数进行累加,最终得到每个单词的总出现次数。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值