【笔记】大数据技术之Hadoop概要(二)

Hadoop简介

  1. 解决了如何用大量计算机实现分布式计算
  2. GFS 分布式文件系统
  3. MapReduce 分布式并行编程框架
  4. 特性
    • 可靠性,不会阻断
    • 高效性,多计算机并行计算
    • 可扩展性强,扩展节点
    • 成本低,可以用普通的PC机构成集群
    • 支持多种编程语言
  5. 应用:
    • facebook、中国移动等
    • 离线分析
    • HIVE Pig
    • MR
    • 实时查询
    • Solr Redis
    • HBase
    • Mahout

Hadoop2.0相对于1.0

  1. Hadoop2.0进行了全新构架,将原负责资源调动的部分抽取成YARN框架,同时MapReduce专门负责数据处理,Spark等都在YARN框架之上
  2. NN Federation新技术进行数据目录服务

选择Hadoop

  • 是否开源 √
  • 是否有稳定版 √
  • 是否经实践检验 √
  • 是否有强大的社区支持:易用性 √

Hadoop安装相关

  1. shell命令

  2. sudo命令

  3. shift:切换中英文;复制粘粘命令透

  4. 单机模式:单Java进程

  5. 伪分布式模式

  6. 分布式模式

  7. ctrl alt t 终端窗口

集群部署和使用

  1. -> NameNode(数据目录) -> DataNode(存储数据)
  2. JobTracker,TaskTracker
  3. NameNode:管理各种元数据并提供服务;很多元数据都是直接存入内存

测验

  1. Hadoop MapReduce针对谷歌MapReduce的开源实现,通常用于大规模数据集的并行计算;Hadoop2.0增加了NameNode HA 和Wire-compatibility两个重大特性;Hadoop核心是HDFS和MapReduce
  2. Google生态系统组件
    • 核心:HDFA & MapReduce
    • ZoopKeeper:Yahoo!针对谷歌Chubby的一个开源实现,是高效可靠的协同工具系统
    • HBase:提供高可靠性、高性能、分布式的列式数据库,是Google BigTable的开源实现
    • Hive:基于Hadoop数据仓库工具,用于对Hadoop文件的数据集进行数据整理、特殊查询和分析存储
    • Pig
    • Mahout
    • Sqoop
    • Flume
    • Ambar

实际操作

附上厦大实验室的博客传送门

优化与发展

  • 局限和不足
    • 抽象层次低,人工编码
    • 表达能力有限
    • 难以看到程序整体逻辑
    • 开发者自己管理作业之间的依赖关系
    • 迭代操作效率第
    • 实时性差
    • 资源浪费
  • 改进和提升
    • 自身两大核心组件:MapReduce & HDFS
      【笔记】大数据技术之Hadoop概要(二)
      【笔记】大数据技术之Hadoop概要(二)
    • 增加新的组件:Pig、Tez、Spark、Kafka
      【笔记】大数据技术之Hadoop概要(二)

HDFS2.0

  • HDFS
    • HDFS HA

    • HDFS Federation
      【笔记】大数据技术之Hadoop概要(二)

    • 存在问题:

      • 单点故障
      • 不可以水平扩展
      • 系统整体性能受限于单个名称节点的吞吐量
      • 单个名称节点难以提供不同程序之间的隔离性
      • HDFS HA是热备份,提供高可用性,但是无法解决可扩展性、系统性能和隔离性
  • MapReduce 1.0 与 YARN
    • MP存在缺陷
      • 存在单点故障
      • JobTracker负载过重
      • 容易出现内存溢出(内存不足)
      • 资源划分不合理
    • YARN
      • 解决JobTracker:

        • 三大功能拆分
          【笔记】大数据技术之Hadoop概要(二)
      • 在Hadoop2以后:

        • MapR成为一个YARN之上的纯粹的计算框架,YARN成为专门管理资源的框架
      • 体系结构

        • ResourceManager
          • 处理客户端请求
          • 启动/监控AM,监控NM
          • 资源分配与调动
          • 两大组件
            • 调动器
            • 应用程序管理器
        • ApplicationMaster
          • 为应用程序申请资源并分配给内部任务
          • 任务调动、监控与容错
            • 当用户作业提交时,Application与ResourceManager协商获取资源
            • 获得资源进行二次分配
            • 与NM保持交互通信,进行应用程序的启动、运行、监控和停止
            • 定时向RM发送心跳信息,报告资源的使用情况和应用进度
            • 作业完成时向RM注销容器执行周期完成
        • NodeManager
          • 单个节点上的资源管理
          • 处理来自RM的命令
          • 处理AM命令
          • 主要负责管理抽象容器,不会具体负责每个任务自身状态的管理
      • 工作流程

        • 用户编写客户端应用程序向YARN提交应用程序
        • RM接受和处理来自客户端的请求,分配容器并启动
        • Application被创建会首先向RM注册
        • AM轮询向RM申请资源
        • 容器中启动任务:运行环境和脚本
        • 向AM汇报工作进度
        • AM向RM管理器注销并关闭自己
      • 与MP1.0对比

        • 大大减少中心服务RM资源消耗
        • AM需要大量资源消耗的任务调动和监控
        • 多个作业对应多个AM实现监控分布化
        • MP1.0即是一个计算框架,又是资源调度框架,但是只能支持MR编程模型
      • 发展目标

        • 一个集群多个框架
        • MR实现离线批处理
        • Impala实现交互式查询分析
        • Storm实现流式数据实时分析
        • Spark实现迭代计算

新组件

Pig

  • Apache开源
  • 代码量少
  • 作用
    • LOAD读取
    • 转换语句进行处理
    • 通过STORE语句把处理结果输出到文件上去/DUMP结果展示
  • 过程
    • 数据收集
    • 数据加工
    • 数据仓库

Tez

  • 去除连续两个作业之间的写入HDFS
  • 去除每个工作流中多余的Map
  • (Tez+Hive)与Impala、Dremel&Drill的区别:
    • 解决Hive、Pig延迟大,性能低等问题

Spark

  • 延迟搞
  • 每次都要从磁盘读数据
  • 单线程

Kafka

  • 高吞吐量的分布式发布订阅消息系统,用户可以发布大量消息,同时也能订阅消费信息
  • 同时满足在线实时处理和批量离线处理