考试时间120分钟 满分100分题型选择题理论题程序题综合体分值30分32分24分14分一、选择题每题2分共15题计30分请从四个选项中选出最合适的一项。在Hadoop集群中负责整个集群资源管理和作业调度的组件是 。A. NameNode B. DataNode C. YARN D. SecondaryNameNodeHDFS中默认的数据块Block大小是 。A. 64MB B. 128MB C. 256MB D. 512MB下列哪个命令用于查看HDFS根目录下的文件列表 A. hadoop fs -cat / B. hadoop fs -ls / C. hadoop fs -mkdir / D. hadoop fs -put /Hive中删除外部表时以下说法正确的是 。A. 元数据和实际数据都被删除B. 只删除元数据不删除实际数据C. 只删除实际数据不删除元数据D. 两者都不删除MapReduce过程中将Map的输出按照Key进行分组、排序并传输给Reducer的机制称为 。A. Split B. Shuffle C. Combine D. PartitionHDFS中存储文件元数据如文件与数据块映射的组件是 。A. NameNode B. DataNode C. SecondaryNameNode D. JournalNode在Linux系统中将文件test.txt的权限设置为所有者可读写执行、组用户可读执行、其他用户可读执行的命令是 。A. chmod 755 test.txt B. chmod 777 test.txt C. chmod 644 test.txt D. chmod 555 test.txt关于Hive分区表下列说法错误的是 。A. 分区字段可以是表中已有的字段B. 分区可以提高查询效率C. 分区字段在表结构中单独列出D. 分区表可以同时使用多个分区字段YARN ResourceManager的默认Web UI端口是 。A. 9870 B. 8088 C. 50070 D. 9000在HDFS中一个文件被写入成功后NameNode会收到来自 的块报告。A. 客户端 B. DataNode C. SecondaryNameNode D. ResourceManager以下哪种Hive存储格式最适合列式存储和高压缩比 A. TEXTFILE B. SEQUENCEFILE C. ORC D. CSV在Hadoop集群启动前必须执行一次的命令是 。A. start-all.sh B. hdfs namenode -format C. jps D. hdfs dfsadmin -report关于HDFS副本策略默认情况下每个数据块有几个副本 A. 1 B. 2 C. 3 D. 4在MapReduce单词统计程序中Map阶段的输出是 。A. 单词, 出现次数 B. 单词, 1 C. 行号, 单词 D. 偏移量, 单词使用Shell脚本统计/data/logs目录下文件数量的命令是 。A. ls /data/logs | wc -l B. ls -l /data/logs | wc -c C. find /data/logs -type f | wc -l D. count /data/logs二、理论题每题8分共4题计32分1. 简述HDFS的写入流程以客户端写入一个200MB文件为例说明与NameNode、DataNode的交互过程以及Pipeline复制机制和确认机制。2. 解释Hive中内部表与外部表的区别包括创建方式、数据存储位置、删除时的行为差异。并举例说明什么场景适合使用外部表。3. 描述MapReduce中Shuffle机制的作用并结合单词统计例子输入“hello world hello hadoop”写出Map阶段的完整输出、Shuffle后的中间结果以及Reduce阶段的最终输出。4. 假设你要部署一个微型Hadoop集群1台Master2台Slave请列出至少三个核心配置文件名称并简要说明格式化NameNode的时机和启动集群的关键命令。如何验证集群正常工作三、程序题每题8分共3题计24分1. HiveQL操作现有学生表结构如下字段名类型描述stu_idINT学号stu_nameSTRING姓名deptSTRING院系ageINT年龄reg_dateSTRING注册日期请完成以下任务创建一个内部表student_info字段分隔符为逗号存储格式为TEXTFILE。2分向表中插入两条记录(1001,赵六,计算机系,22,2024-09-01) 和 (1002,钱七,数学系,21,2024-09-02)。2分查询2024年及以后注册的学生信息并按年龄降序排列。2分统计每个院系的学生人数和平均年龄。2分2. Java HDFS API编程请编写一个完整的Java程序实现从HDFS路径/user/data/input.txt下载文件到本地路径/home/user/local/。要求列出需要导入的主要Hadoop包至少3个。2分展示获取FileSystem实例的代码。2分展示核心下载代码使用copyToLocalFile。2分添加异常处理try-catch。2分3. Shell脚本操作请写出实现以下功能的Shell命令或脚本片段判断HDFS目录/user/test是否存在若不存在则创建。2分将本地当前目录下所有以data_开头的文件上传到HDFS的/user/test目录中。2分递归列出HDFS目录/user/test下的所有文件和子目录。2分统计本地目录/var/log下普通文件的数量不包括子目录。2分四、综合体共14分题目HDFS读写流程与集群配置综合共3小题分值分别为6分、4分、4分某公司需要搭建一个Hadoop集群来处理日志数据集群规模为1台NameNode兼ResourceManager3台DataNode兼NodeManager。现有一个500MB的日志文件需要上传至HDFS进行分析。6分 请详细描述客户端上传该500MB文件的完整流程包括客户端与NameNode的交互过程文件如何被切分成数据块默认128MB并说明每个块的大小数据块通过Pipeline复制到多个DataNode的具体过程写入完成后NameNode如何确认并更新元数据。4分 假设你在配置该集群时需要修改以下参数请写出它们通常在哪个配置文件中设置并简要说明其含义dfs.replication副本数dfs.namenode.name.dirNameNode元数据存储路径yarn.nodemanager.resource.memory-mbNodeManager可用内存4分 集群启动后你发现无法通过Web UI访问NameNode默认端口9870请列举至少两种可能的故障原因及对应的排查命令或解决方法。—— 试卷结束 ——参考答案一、选择题C 2. B 3. B 4. B 5. B 6. A 7. A 8. A 9. B 10. B 11. C 12. B 13. C 14. B 15. A (或C取决于是否包含子目录标准答案为A)二、理论题要点1. HDFS写入流程客户端向NameNode请求创建文件NameNode检查权限、是否存在通过后返回可写入的DataNode列表。客户端将200MB文件切分为两个Block128MB72MB。对每个Block客户端将其发送给第一个DataNode第一个DataNode转发给第二个第二个转发给第三个形成Pipeline。每个DataNode写入完成后向NameNode发送块报告客户端收到所有确认后通知NameNodeNameNode更新元数据。2. 内部表 vs 外部表内部表默认创建数据存储在/user/hive/warehouse删除时元数据和数据均删除。外部表使用CREATE EXTERNAL TABLE可指定LOCATION删除时只删元数据数据保留。场景数据需要被多个工具共享时如Pig、Spark适合用外部表。3. Shuffle机制与单词统计Map输出hello,1, world,1, hello,1, hadoop,1Shuffle后分组hello,[1,1], world,[1], hadoop,[1]Reduce输出hello,2, world,1, hadoop,14. 集群部署配置文件core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,workers。格式化仅首次启动前执行hdfs namenode -format。启动命令start-dfs.sh和start-yarn.sh。验证jps查看进程访问http://master:9870和http://master:8088运行示例程序。三、程序题1. HiveQLsql-- (1) 建表 CREATE TABLE student_info ( stu_id INT, stu_name STRING, dept STRING, age INT, reg_date STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- (2) 插入数据 INSERT INTO TABLE student_info VALUES (1001,赵六,计算机系,22,2024-09-01), (1002,钱七,数学系,21,2024-09-02); -- (3) 查询2024年及以后按年龄降序 SELECT * FROM student_info WHERE reg_date 2024-01-01 ORDER BY age DESC; -- (4) 分组统计 SELECT dept, COUNT(*) AS cnt, AVG(age) AS avg_age FROM student_info GROUP BY dept;2. Java HDFS APIjavaimport org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.net.URI; public class HDFSDownload { public static void main(String[] args) { Configuration conf new Configuration(); try { FileSystem fs FileSystem.get(new URI(hdfs://master:9000), conf, hadoop); Path src new Path(/user/data/input.txt); Path dst new Path(/home/user/local/); fs.copyToLocalFile(false, src, dst); fs.close(); System.out.println(Download success.); } catch (Exception e) { e.printStackTrace(); } } }所需包hadoop-common,hadoop-hdfs,hadoop-client。3. Shell脚本bash# 1. 判断并创建目录 hdfs dfs -test -d /user/test || hdfs dfs -mkdir -p /user/test # 2. 上传以data_开头的文件 hdfs dfs -put ./data_* /user/test/ # 3. 递归列出目录 hdfs dfs -ls -R /user/test # 4. 统计本地普通文件数量不含子目录 find /var/log -maxdepth 1 -type f | wc -l # 或 ls -l /var/log | grep ^- | wc -l四、综合体1. 写入流程客户端请求NameNode创建文件NameNode检查后返回可写入的DataNode列表例如DN1、DN2、DN3。500MB文件被切分为4个Block128MB、128MB、128MB、116MB。对于每个Block客户端将其发送给DN1DN1边收边转发给DN2DN2转发给DN3形成Pipeline。数据以packet为单位传输。每个DataNode写入完成后向NameNode发送块报告客户端收到所有DN确认后通知NameNodeNameNode更新元数据。2. 配置文件dfs.replication→hdfs-site.xml设置副本数。dfs.namenode.name.dir→hdfs-site.xml设置NameNode元数据存储路径。yarn.nodemanager.resource.memory-mb→yarn-site.xml设置NodeManager可用物理内存。3. 故障排查可能原因1NameNode进程未启动。→ 使用jps查看是否有NameNode进程若无则执行hdfs namenode启动。可能原因2防火墙阻止了9870端口。→ 使用systemctl stop firewalld临时关闭防火墙或开放端口。可能原因3配置文件hdfs-site.xml中dfs.http.address未正确设置。→ 检查并重启服务。可能原因4浏览器访问地址错误。→ 确认主机名/IP正确使用curl http://localhost:9870测试。
《Hadoop与大数据技术》模拟考试卷
发布时间:2026/6/20 0:09:01
考试时间120分钟 满分100分题型选择题理论题程序题综合体分值30分32分24分14分一、选择题每题2分共15题计30分请从四个选项中选出最合适的一项。在Hadoop集群中负责整个集群资源管理和作业调度的组件是 。A. NameNode B. DataNode C. YARN D. SecondaryNameNodeHDFS中默认的数据块Block大小是 。A. 64MB B. 128MB C. 256MB D. 512MB下列哪个命令用于查看HDFS根目录下的文件列表 A. hadoop fs -cat / B. hadoop fs -ls / C. hadoop fs -mkdir / D. hadoop fs -put /Hive中删除外部表时以下说法正确的是 。A. 元数据和实际数据都被删除B. 只删除元数据不删除实际数据C. 只删除实际数据不删除元数据D. 两者都不删除MapReduce过程中将Map的输出按照Key进行分组、排序并传输给Reducer的机制称为 。A. Split B. Shuffle C. Combine D. PartitionHDFS中存储文件元数据如文件与数据块映射的组件是 。A. NameNode B. DataNode C. SecondaryNameNode D. JournalNode在Linux系统中将文件test.txt的权限设置为所有者可读写执行、组用户可读执行、其他用户可读执行的命令是 。A. chmod 755 test.txt B. chmod 777 test.txt C. chmod 644 test.txt D. chmod 555 test.txt关于Hive分区表下列说法错误的是 。A. 分区字段可以是表中已有的字段B. 分区可以提高查询效率C. 分区字段在表结构中单独列出D. 分区表可以同时使用多个分区字段YARN ResourceManager的默认Web UI端口是 。A. 9870 B. 8088 C. 50070 D. 9000在HDFS中一个文件被写入成功后NameNode会收到来自 的块报告。A. 客户端 B. DataNode C. SecondaryNameNode D. ResourceManager以下哪种Hive存储格式最适合列式存储和高压缩比 A. TEXTFILE B. SEQUENCEFILE C. ORC D. CSV在Hadoop集群启动前必须执行一次的命令是 。A. start-all.sh B. hdfs namenode -format C. jps D. hdfs dfsadmin -report关于HDFS副本策略默认情况下每个数据块有几个副本 A. 1 B. 2 C. 3 D. 4在MapReduce单词统计程序中Map阶段的输出是 。A. 单词, 出现次数 B. 单词, 1 C. 行号, 单词 D. 偏移量, 单词使用Shell脚本统计/data/logs目录下文件数量的命令是 。A. ls /data/logs | wc -l B. ls -l /data/logs | wc -c C. find /data/logs -type f | wc -l D. count /data/logs二、理论题每题8分共4题计32分1. 简述HDFS的写入流程以客户端写入一个200MB文件为例说明与NameNode、DataNode的交互过程以及Pipeline复制机制和确认机制。2. 解释Hive中内部表与外部表的区别包括创建方式、数据存储位置、删除时的行为差异。并举例说明什么场景适合使用外部表。3. 描述MapReduce中Shuffle机制的作用并结合单词统计例子输入“hello world hello hadoop”写出Map阶段的完整输出、Shuffle后的中间结果以及Reduce阶段的最终输出。4. 假设你要部署一个微型Hadoop集群1台Master2台Slave请列出至少三个核心配置文件名称并简要说明格式化NameNode的时机和启动集群的关键命令。如何验证集群正常工作三、程序题每题8分共3题计24分1. HiveQL操作现有学生表结构如下字段名类型描述stu_idINT学号stu_nameSTRING姓名deptSTRING院系ageINT年龄reg_dateSTRING注册日期请完成以下任务创建一个内部表student_info字段分隔符为逗号存储格式为TEXTFILE。2分向表中插入两条记录(1001,赵六,计算机系,22,2024-09-01) 和 (1002,钱七,数学系,21,2024-09-02)。2分查询2024年及以后注册的学生信息并按年龄降序排列。2分统计每个院系的学生人数和平均年龄。2分2. Java HDFS API编程请编写一个完整的Java程序实现从HDFS路径/user/data/input.txt下载文件到本地路径/home/user/local/。要求列出需要导入的主要Hadoop包至少3个。2分展示获取FileSystem实例的代码。2分展示核心下载代码使用copyToLocalFile。2分添加异常处理try-catch。2分3. Shell脚本操作请写出实现以下功能的Shell命令或脚本片段判断HDFS目录/user/test是否存在若不存在则创建。2分将本地当前目录下所有以data_开头的文件上传到HDFS的/user/test目录中。2分递归列出HDFS目录/user/test下的所有文件和子目录。2分统计本地目录/var/log下普通文件的数量不包括子目录。2分四、综合体共14分题目HDFS读写流程与集群配置综合共3小题分值分别为6分、4分、4分某公司需要搭建一个Hadoop集群来处理日志数据集群规模为1台NameNode兼ResourceManager3台DataNode兼NodeManager。现有一个500MB的日志文件需要上传至HDFS进行分析。6分 请详细描述客户端上传该500MB文件的完整流程包括客户端与NameNode的交互过程文件如何被切分成数据块默认128MB并说明每个块的大小数据块通过Pipeline复制到多个DataNode的具体过程写入完成后NameNode如何确认并更新元数据。4分 假设你在配置该集群时需要修改以下参数请写出它们通常在哪个配置文件中设置并简要说明其含义dfs.replication副本数dfs.namenode.name.dirNameNode元数据存储路径yarn.nodemanager.resource.memory-mbNodeManager可用内存4分 集群启动后你发现无法通过Web UI访问NameNode默认端口9870请列举至少两种可能的故障原因及对应的排查命令或解决方法。—— 试卷结束 ——参考答案一、选择题C 2. B 3. B 4. B 5. B 6. A 7. A 8. A 9. B 10. B 11. C 12. B 13. C 14. B 15. A (或C取决于是否包含子目录标准答案为A)二、理论题要点1. HDFS写入流程客户端向NameNode请求创建文件NameNode检查权限、是否存在通过后返回可写入的DataNode列表。客户端将200MB文件切分为两个Block128MB72MB。对每个Block客户端将其发送给第一个DataNode第一个DataNode转发给第二个第二个转发给第三个形成Pipeline。每个DataNode写入完成后向NameNode发送块报告客户端收到所有确认后通知NameNodeNameNode更新元数据。2. 内部表 vs 外部表内部表默认创建数据存储在/user/hive/warehouse删除时元数据和数据均删除。外部表使用CREATE EXTERNAL TABLE可指定LOCATION删除时只删元数据数据保留。场景数据需要被多个工具共享时如Pig、Spark适合用外部表。3. Shuffle机制与单词统计Map输出hello,1, world,1, hello,1, hadoop,1Shuffle后分组hello,[1,1], world,[1], hadoop,[1]Reduce输出hello,2, world,1, hadoop,14. 集群部署配置文件core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,workers。格式化仅首次启动前执行hdfs namenode -format。启动命令start-dfs.sh和start-yarn.sh。验证jps查看进程访问http://master:9870和http://master:8088运行示例程序。三、程序题1. HiveQLsql-- (1) 建表 CREATE TABLE student_info ( stu_id INT, stu_name STRING, dept STRING, age INT, reg_date STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- (2) 插入数据 INSERT INTO TABLE student_info VALUES (1001,赵六,计算机系,22,2024-09-01), (1002,钱七,数学系,21,2024-09-02); -- (3) 查询2024年及以后按年龄降序 SELECT * FROM student_info WHERE reg_date 2024-01-01 ORDER BY age DESC; -- (4) 分组统计 SELECT dept, COUNT(*) AS cnt, AVG(age) AS avg_age FROM student_info GROUP BY dept;2. Java HDFS APIjavaimport org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.net.URI; public class HDFSDownload { public static void main(String[] args) { Configuration conf new Configuration(); try { FileSystem fs FileSystem.get(new URI(hdfs://master:9000), conf, hadoop); Path src new Path(/user/data/input.txt); Path dst new Path(/home/user/local/); fs.copyToLocalFile(false, src, dst); fs.close(); System.out.println(Download success.); } catch (Exception e) { e.printStackTrace(); } } }所需包hadoop-common,hadoop-hdfs,hadoop-client。3. Shell脚本bash# 1. 判断并创建目录 hdfs dfs -test -d /user/test || hdfs dfs -mkdir -p /user/test # 2. 上传以data_开头的文件 hdfs dfs -put ./data_* /user/test/ # 3. 递归列出目录 hdfs dfs -ls -R /user/test # 4. 统计本地普通文件数量不含子目录 find /var/log -maxdepth 1 -type f | wc -l # 或 ls -l /var/log | grep ^- | wc -l四、综合体1. 写入流程客户端请求NameNode创建文件NameNode检查后返回可写入的DataNode列表例如DN1、DN2、DN3。500MB文件被切分为4个Block128MB、128MB、128MB、116MB。对于每个Block客户端将其发送给DN1DN1边收边转发给DN2DN2转发给DN3形成Pipeline。数据以packet为单位传输。每个DataNode写入完成后向NameNode发送块报告客户端收到所有DN确认后通知NameNodeNameNode更新元数据。2. 配置文件dfs.replication→hdfs-site.xml设置副本数。dfs.namenode.name.dir→hdfs-site.xml设置NameNode元数据存储路径。yarn.nodemanager.resource.memory-mb→yarn-site.xml设置NodeManager可用物理内存。3. 故障排查可能原因1NameNode进程未启动。→ 使用jps查看是否有NameNode进程若无则执行hdfs namenode启动。可能原因2防火墙阻止了9870端口。→ 使用systemctl stop firewalld临时关闭防火墙或开放端口。可能原因3配置文件hdfs-site.xml中dfs.http.address未正确设置。→ 检查并重启服务。可能原因4浏览器访问地址错误。→ 确认主机名/IP正确使用curl http://localhost:9870测试。