1. commons
    1. 为其他Hadoop模块提供基础??
  2. hdfs
    1. 结构
      1. DataNode
        1. 执行响应client文件读写
        2. Block (文件分块处理)
          1. 大小
          2. 一般128M
          3. 看平均的处理文件大小,普遍过大甚至可以取到G
          4. 2的倍数
          5. 最大考虑内存大小??
          6. hdfs-site.xml配置
          7. 默认每个块共有三个副本
          8. 包括自己
          9. 副本存放策略
          10. 两机架
          11. 三节点
        3. 就近的节点保存标准
      2. NameNode
        1. 存储元数据
          1. edits——fsimage
          2. edits保存了hdfs的历史命令
          3. 编辑日志
          4. fsimage保存节点的信息
          5. 文件系统镜像
          6. 加载edits和fsimage合并到内存中
          7. 元数据
          8. datanode的文件信息
          9. 一个block = 0.15k
        2. fs-cluster 访问入口
          1. 外端50070
          2. 内部8020
        3. 监听DataNode
          1. 存活时间:3s+10min
        4. SecondaryNameNode
          1. 辅助NameNode,进行fsimage和edits合并
          2. 避免Namenode下一次合并时间过长问题
    2. 执行流程
      1. 一次写入多次读取
      2. 顺序
        1. 1.访问NameNode
          1. 加载fsimage,重新执行edits 加载到内存
          2. Q
          3. edits过大,合并过慢,不符合效益?
          4. SecondaryNameNode
          5. 不是热备
          6. 等待DataNode发送(block report)块报告
          7. 等待过程中进入安全模式
          8. 99.9%
        2. 2.根据NameNode指示,下到DataNode
        3. 3.响应用户读取到DataNode里的块
      3. eg
        1. 具体文件读入发现只有 1M的时候怎么办?
          1. 实际占用和逻辑空间
    3. 特点
      1. 多台服务器组成
        1. 工作中由商务机代替
      2. 分布式文件系统
        1. 高可靠
        2. 高吞吐量
  3. MapReduce
    1. 结构
      1. Reduce
        1. 结构键值对输入输出
        2. (Map阶段数据汇总)数据分析
      2. Map
        1. 数据分组
        2. 结构键值对输入输出
          1. 输入固定
          2. Key-每行偏移量
          3. value-每行字符串
          4. 输出自定义
          5. 要求同样是键值对类型(map)
      3. 驱动
    2. 流程
      1. 1、client向集群提交job任务,resourcemanager接收到任务请求
      2. 2、resourcemanager收到请求以后,会选择一台nodemanager启动一个applicationmaster
      3. 3、applicationmaster向resourcemanager申请资源(运行当前job任务需要哪些nodemanager、每个nodemanager需要多少CPU、MEM...)
      4. 4、resourcemanager把对应资源信息响应给applicationmaster
      5. 5、applicationmaster收到以后,调度指挥其他nodemanager运行任务
      6. 6、相关nodemanager接受任务并运行任务(map\reduce)
      7. 7、nodemanager任务运行结束以后会向applicationmaster报告
      8. 8、applicationmaster向resourcemanager报告,并反馈结果给client
    3. 特点
      1. 分布式离线并行计算模型
      2. 只有相关任务启动才有相应线程
    4. 用途
      1. 周期性数据
  4. Yarn
    1. 特点
      1. Hadoop操作系统
      2. 任务调度和资源管理
      3. Hadoop2.x后才出现
    2. 启动流程
      1. ResourceManager 一个
      2. NodeManager多个
        1. 运行具体的MapReduce任务
      3. 服务启动 RM和NM
        1. 一个端口只能被一个服务监听
    3. 架构
      1. resourcemanager
        1. 子主题 1
        2. 子主题 2
        3. 子主题 3
      2. nodemanager
        1. 子主题 1
        2. 子主题 2
        3. 子主题 3
      3. applicationmaster
        1. 子主题 1
        2. 子主题 2
        3. 子主题 3
        4. 子主题 4
      4. Container
        1. 子主题 1