




-  第三次作业-  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 {// 将本地文件上传至 HDFSfs.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 过程则对相同单词的计数进行累加,最终得到每个单词的总出现次数。 
 
-  
 
-