Skip to main content

《Hadoop 权威指南》读书笔记第一篇带你初步了解一下 Hadoop

1 初识Hadoop

Hadoop 是一个数据存储和分析的分布式系统

1.1 数据

大量数据

不仅仅是公司才面对着大量数据,对于个人来说,也是如此。最近心血来潮开始拍视频,然后 50G 存储空间都不够用了,换了 200G 的方案,希望可以永久一点,或者是,少产生点数据。

大量数据的好处

大数据的意义 > 好算法,大概就是全样本的优势了叭

1.2 数据的存储与分析

数据传输速度没有与时俱进,大容量的硬盘传输时间久

采用并行传输的思想,通过硬盘共享可以解决,有一定的可行性

多个硬盘并行进度读/写数据的问题

并行读写的问题

  • 硬件故障
    • 避免数据丢失 —— 复制 replication
    • 解决方法:HDFS Hadoop Distributed FileSystem
  • 数据分析需要结合多个硬盘的数据
    • 解决方法:MapReduce

Hadoop 提供了可靠可扩展的存储和分析平台

1.3 查询所有数据

MapReduce

  • 每个查询需要处理整个数据集或至少一个数据集的绝大部分
  • 可以在合理的时间范围内处理针对整个数据集的动态查询

1.4 不仅仅是批处理

MapReduce 是批处理系统,但是更适合那种没有用户在现场等待查询结果的离线场景,需要一定的等待时间,不适合交互式分析

Hadoop

  • 随着发展,超越了批处理本身
  • 指代一个更大的、多个项目(分布式计算、大规模数据处理)组成的生态系统
  • not only HDFS and MapReduce

Hadoop 的其他处理框架

  • 迭代处理
    • Spark
    • 因为很多机器学习都是迭代,内存中保存每次中间结果集,而不是每次迭代都从硬盘中加载
  • 流处理
    • Storm 、Spark Streaming 、 Samza
    • 数据流上运行实时、分布式的计算
  • 搜索
    • Solr
    • 搜索查询

MapReduce 的概念更具有通用性

  • 输入格式
  • 数据集分片

1.5 相较于其他系统的优势

关系型数据库管理系统

  • 硬盘寻址时间的提升远远不敌于传输速率的提升

  • 寻址:磁头移动到特定硬盘位置进行读/写的过程


    现在几乎没有机械硬盘来做数据库存储了,都是固态硬盘;固态硬盘不存在寻址的问题,而且速度非常快。


  • 如果更新一小部分记录,关系数据库的 B树 结构更有优势

  • 如果有大量数据需要更新,B树 的效率落后于MapReduce,因为需要 排序/合并 来重建数据库

  • Hadoop 和 关系型数据库的区别

    • 区别开始模糊
      • Hive 这样的 Hadoop 系统变得具有交互性(从MapReduce中脱离出来),而且增加了索引、事务,看起来更像传统的关系型数据库
    • 不同类型的数据处理
      • Hadoop 对于非结构化数据或半结构化数据非常有效(如:电子表格、纯文本、图像)
        • 结构化、半结构化、非结构化数据
          • 结构化数据
            • XML
          • 半结构化数据
            • 电子表格
            • 每个单元格的数据类型是不固定的
          • 非结构化数据
            • 纯文本、图像
    • 规范化
      • 关系型数据库是规范的 normalized,保证数据的完整性、不含冗余,满足 3NF/BCNF
      • 但是规范会给 Hadoop 处理带来问题,因为使得记录读取成为非本地操作

网格计算

  • 大规模数据处理
    • 主要采用类似于消息传递接口(Message Passing Interface)的 API

    • HPC 高性能计算 High Performance Computing

      • 将作业分散到集群的各台机器上,这些机器访问存储区域网络 SAN 所组成的共享文件系统
      • 适合计算密集型的作业
    • 网格计算 Grid Computing

    • Hadoop

      • 如果节点需要访问的数据量更庞大,很多计算节点就会因为网络带宽的瓶颈问题而不得不闲下来等数据 —> Hadoop

      网络带宽是什么?

      • 网络带宽是数据通道的最大承载量,例如 4G 最大速度是多少多少 Mbps,代表 1 秒内最多能传输这么多的数据,再多就堵车了
      • 运行效率的两大瓶颈,算力和带宽,大概可以用高速公路收费站来理解一下
      • 路相对带宽,收费站相对算力
      • 路太宽收费站不够就会堵车(带宽不足),收费站太多就会产生浪费(算力不足)

      • 尽量在计算节点上存数据,以实现数据的本地快速访问

      • 数据处理的核心 数据本地化

      • 通过显式网络拓扑结构来保留网络带宽,并没有降低对计算密集型数据进行分析的能力

        • 因为网络带宽是数据中心环境最珍贵的资源,到处复制数据很容易耗尽网络带宽

        显式网络拓扑结构是什么? 猜测这里的意思是,配置 Hadoop 集群的时候,会把不同的节点之间的连接显式 (Explicit) 地定义好,有了一张图之后,Hadoop 就可以知道如果要把数据从机器 A 传输到机器 B,最短路径(消耗带宽最少的路径)是什么,以此来节省网络带宽 为什么网络带宽最珍贵? 算力可以堆,存储可以堆,但是这代表网络复杂性会增加,那么数据传输的成本就会增加,所以带宽会非常珍贵


      • MapReduce

        • 分布式处理框架
        • 不用担心操作系统失效问题(不知道一个远程进程是否挂了)
        • 框架可以检测到失败的任务并重新在正常的机器上执行
        • 采用无共享框架
        • 各个任务之间是彼此独立的,任务的执行顺序无关紧要

志愿计算

为科学而计算

点击这里,了解 BOINC

  • 搜索最大素数 项目

    • Great Internet Mersenne Prime Search
    • 点击这里搜寻最大素数
  • Folding@home 项目

    • 了解蛋白质构成及其与疾病之间的关系
    • 点击这里了解详情
  • SETI@home 项目

    • 志愿者将计算机CPU空闲时间贡献出来分析无线天文望远镜的数据
    • 点击这里搜寻外星智慧叭
  • MapReduce vs SETI@home

    • 两者看起来类似,都是将问题分为独立的小块,然后并行计算
    • SETI@home 是 CPU 密集型的,适合在全球成千上万台计算机上运行,因为计算所花的时间远超过工作单元数据的传输时间
    • 志愿者贡献的是 CPU 周期,而不是 网络带宽

    • CPU 周期可以理解成算力,周期是 CPU 执行指令的最小单位
    • 因为他们是把原始数据拖到自己电脑上计算,把计算后的结果上传,经过计算信息密度会更高,所以贡献的并不是网络带宽

    • SETI@home 使用的是不可信的计算机
    • MapReduce —— 数据本地化

Summary

Hadoop 出现的意义 —— 大数据、

Hadoop 区别其他系统的优势