欢迎光临
我们一直在努力

Hadoop 与大数据技术考试重点复习提纲

第一部分:选择题与理论题高频考点 (对应资料一、二)

这部分主要考察对基本概念、组件功能和命令的记忆与理解。

  • Hadoop 核心组件

    • 集群资源管理调度:YARN (Yet Another Resource Negotiator)。

    • HDFS 架构:

      • NameNode:管理文件系统的命名空间(目录树)、元数据(文件与数据块映射),处理客户端的读写请求。

      • DataNode:负责存储实际的数据块(Block),执行数据的读写操作,定期向NameNode汇报块信息。

    • 可靠性保障:副本机制。默认副本数为3,合理配置需考虑机架感知,保证高可用。

  • HDFS 操作

    • 常用命令:hadoop fs -ls <path>(查看), -cat, -put(上传), -get(下载), -mkdir, -rm。

    • Web UI 端口:NameNode Web UI 默认端口 9870(旧版为 50070),用于查看集群状态、文件系统浏览等。YARN ResourceManager Web UI 默认端口 8088,用于查看应用程序运行状态。

  • Hive 核心概念

    • 数据存储格式:TEXTFILE(文本,通用)、SEQUENCEFILE(二进制键值对)、ORC/ PARQUET(列式存储,压缩率高,查询快)。需了解各自适用场景。

    • 内部表 vs 外部表:

      • 内部表 (Managed Table):由Hive管理数据生命周期。DROP表时,元数据和实际数据都会被删除。

      • 外部表 (External Table):数据位于Hive之外(如指定LOCATION)。DROP表时,只删除元数据,保留实际数据。

    • 分区表:按“省份”、“城市”等字段分区,提高查询效率。注意:分区字段不能与表内已有字段重名。

  • MapReduce 核心机制

    • Shuffle (洗牌):连接Map阶段和Reduce阶段的桥梁。作用是将Map的输出按照Key进行分组、排序,并将同一Key的所有Value传输给同一个Reducer进行处理。

    • 输入输出:Map阶段的输出是 <Key, Value>对,这个也是Reducer阶段的输入。Reducer的输入类型与Map的输出一致。

  • 其他

    • Linux 权限:chmod命令,如 chmod 755 file(所有者rwx,组rx,其他人rx)。

    • SSH 免密登录:使用 ssh-keygen生成密钥对,将公钥 (id_rsa.pub) 追加到目标机器的 authorized_keys文件中。

    • 查看节点状态:可通过 hdfs dfsadmin -report命令或Web UI查看NameNode和DataNode的健康状态。


  • 第二部分:程序题与综合体核心考点 (对应资料三、四)

    这部分侧重于流程理解和动手能力,需要能写出HQL、描述流程、完成简单的Java/Shell编程。

    考点1:HiveQL (HQL) 编程 (对应例2)
    • 建表:

      sql

      CREATE TABLE student (
      stu_no INT,
      stu_name STRING,
      stu_dept STRING,
      stu_age INT,
      stu_date STRING
      )
      ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' — 指定分隔符
      STORED AS TEXTFILE; — 指定存储格式

    • 插入数据:

      sql

      INSERT INTO TABLE student VALUES
      (2221001,'张三','信息工程系',18,'2022-9-12'),
      (2321002,'李四','数科系',19,'2023-9-15'),
      (2321002,'王五','信息工程系',20,'2023-9-17');

    • 条件查询与排序:

      sql

      SELECT * FROM student
      WHERE stu_date >= '2023-01-01'
      ORDER BY stu_age DESC; — 降序

    • 分组统计:

      sql

      SELECT
      stu_dept,
      COUNT(*) AS student_count,
      AVG(stu_age) AS avg_age
      FROM student
      GROUP BY stu_dept;

    考点2:HDFS 读写流程 (对应例3)
    • 写入流程 (以500MB文件为例):

    • 客户端请求:客户端向NameNode发起写文件请求。

    • 元数据检查:NameNode检查文件是否存在、权限等,通过后返回可写入的DataNode列表。

    • 文件切分:客户端将500MB文件切分成数据块 (Block)。默认128MB/块,所以会被切成4个完整的块 (128M*4=512M,最后一个块大小为116M)。

    • Pipeline (流水线) 复制:

      • 客户端将第一个Block发送给第一个DataNode。

      • 第一个DataNode接收一部分后,立即转发给第二个DataNode。

      • 第二个DataNode接收后,转发给第三个DataNode。

      • 数据以Packet包为单位在Pipeline中流动。

    • 确认机制:

      • 每个DataNode成功写入一个Block后,会向NameNode发送块报告 (Block Report)。

      • 所有DataNode都确认写入成功后,客户端通知NameNode写入完成。

      • NameNode更新元数据,记录新文件的块与DataNode的映射关系。

    • 读取流程:客户端向NameNode请求文件,NameNode返回文件所有块的位置信息(DataNode地址),客户端就近读取。

    考点3:MapReduce 原理与 Shuffle (单词统计案例)
    • 输入:student teacher student may can can may

    • Map 阶段输出:<"student", 1>, <"teacher", 1>, <"student", 1>, <"may", 1>, <"can", 1>, <"can", 1>, <"may", 1>

    • Shuffle 处理:对Map输出的键值对进行分区、排序、分组。结果为:<"can": [1, 1]>, <"may": [1, 1]>, <"student": [1, 1]>, <"teacher": [1]>

    • Reduce 阶段输出:<"can", 2>, <"may", 2>, <"student", 2>, <"teacher", 1>

    考点4:Hadoop 集群规划与部署
    • 场景:1台Master (NameNode + ResourceManager),2台Slave (DataNode + NodeManager)。

    • 核心配置文件:core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml, workers(或 slaves)。

    • 关键步骤:

    • 配置各文件。

    • 格式化NameNode:hdfs namenode -format(仅首次执行)。

    • 启动集群:start-dfs.sh(启动HDFS), start-yarn.sh(启动YARN)。

    • 验证:使用 jps命令查看进程;访问Web UI (master:9870, master:8088);运行一个简单的Hadoop示例程序(如WordCount)。

    考点5:Java 调用 HDFS API
    • 核心包:hadoop-common, hadoop-hdfs, hadoop-client。

    • 核心类:org.apache.hadoop.fs.FileSystem。

    • 核心代码片段 (下载文件):

      java

      import org.apache.hadoop.conf.Configuration;
      import org.apache.hadoop.fs.*;
      import java.net.URI;

      public class HDFSDemo {
      public static void main(String[] args) {
      Configuration conf = new Configuration();
      try {
      // 1. 获取FileSystem实例
      FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "your_user");

      // 2. 定义路径
      Path hdfsPath = new Path("/user/hive/warehouse/sample.txt"); // HDFS源路径
      Path localPath = new Path("/home/user/downloads/"); // 本地目标路径

      // 3. 下载文件
      fs.copyToLocalFile(false, hdfsPath, localPath);

      System.out.println("File downloaded successfully!");
      fs.close();
      } catch (Exception ex) {
      ex.printStackTrace(); // 获取具体错误信息
      }
      }
      }

      • 上传:使用 fs.copyFromLocalFile(localPath, hdfsPath)。

    考点6:Shell 批处理操作
    • 创建目录:hdfs dfs -mkdir -p /user/test

    • 判断并创建:hdfs dfs -test -d /user/test || hdfs dfs -mkdir -p /user/test

    • 上传匹配的文件:hdfs dfs -put ./demo* /user/test/(将所有以demo开头的文件上传)

    • 递归遍历:hdfs dfs -ls -R /user/test

    • 统计文件数量:ls /aaa/bbb | wc -l


    总结建议:

  • 理论与实践结合:不仅要记住概念,更要动手练习HQL、Java API和Shell命令。

  • 重点突破:MapReduce的Shuffle机制、HDFS读写流程、Hive内外部分区表、集群搭建步骤是重中之重。

  • 赞(0)
    未经允许不得转载:171主机测评 » Hadoop 与大数据技术考试重点复习提纲
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址