写点什么

架构师训练营第 12 周学习总结

用户头像
菜青虫
关注
发布于: 2021 年 01 月 09 日

* 大数据技术发展史

    * Google 2004: GFS / MapReduce / BigTable

    * Doug Cutting 2006: HDFS / MapReduce

    * Apache 2008: Hadoop 成为 Apache 顶级项目

    * Pig/Hive: 简化 MapReduce 编程的脚本语言和类 SQL 语言

    * 2012: Yarn 把 MapReduce 里面的执行引擎和资源调度独立出来

    * UC Berkeley AMP 2012: 比 MapReduce 更加高效的 Spark 分布式计算引擎

    * 大数据实时计算:Storm / Flink / Spark Streaming

* 分布式文件系统 HDFS

    * HDFS 系统架构

        * NameNode:存储文件元数据信息,Client 读写文件需要先询问 NameNode

        * DataNode:存储具体数据,默认存储三份,每个数据块大小是 64M

        * 适合场景:大文件、流式数据访问、一次写入多次读取

    * 高可用设计

        * DataNode 磁盘挂了

            * 通知 NameNode 坏掉的磁盘的数据块

        * DataNode 机器挂了

            * NameNode10 分钟没有收到 DataNode 发送的心跳,认为 DataNode 已经挂了,会重新复制上面存储的数据块

        * NameNode 挂了

            * 持久化元数据:操作日志 / Fsimage

            * 主主复制:通过 Zookeeper 记录主 NameNode 服务器

        * Client 挂了

            * 当写入数据超过一个块后,新的 reader 可以看见第一个块,reader 不能看见当前正在写入的块

        * 跨机架备份数据

* 大数据计算框架 MapReduce

    * 核心原则

        * 移动计算比移动数据更划算

        * 分而治之

    * 架构

        * 集群只有一台 Job Tracker 服务器

        * JobScheduler 调度资源,创建 JobInProcess 作业任务数

        * TaskTracker 同时也是 DataNode,在心跳通信中领取 task 任务,一般会领取处理本地数据的任务

    * InputFormat 接口抽象 MapReduce 作业的输入,获取分片数据

    * OutputFormat 接口是 MapReduce 作业结果的抽象,默认实现类 TextOutputFormat 是 tab 分割的键值对文本文件

    * Partitioner 对 Key 进行分区,默认 HashPartitioner

    * JobTracker 内部实现

        * 作业监控层 JIP、任务控制层 TIP、任务执行层

        * JobTracker 宕机会导致未完成 Job 失败,通常采取重启未完成的 Job

    * TaskTracker 容错

        * 10 分钟未汇报心跳,则移除

        * 监控 TaskTracker 性能,如果太差会被暂停调度

    * Task 容错

        * 允许部分 task 失败

        * 设置任务重试次数

* 大数据集群资源管理系统 Yarn

    * 资源管理器

    * 节点管理器

* 大数据仓库 Hive

    * Hive 编译器

        * Parser: convert into AST

        * Semantic Analyzer: convert into block-base internal query (QB)

        * Logic Plan Generator: operator tree

        * Logical Optimizer: rewrite plans into more optimized plans

        * Physical Plan Generator: convert into MapReduce jobs (task tree)

        * Physical Optimizer: adopt join strategy

    * Hive Metastore

        * 通常用一个关系数据库实现,Debian / MySQL

        * 记录表名、字段名、字段类型、关联 HDFS 文件路径等数据库 Meta 信息



用户头像

菜青虫

关注

还未添加个人签名 2017.11.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 12 周学习总结