大数据本身是一个抽象的概念。从一般意义上讲,大数据是指无法在有限时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。

业界对大数据还没有一个统一的定义,但是大家普遍认为,大数据具备 Volume、Velocity、Variety 和 Value 四个特征,简称“4V”,即数据体量巨大、数据速度快、数据类型繁多和数据价值密度低。

  • Volume:数据体量巨大
  • Velocity:数据速度(产生、处理和分析)在持续加快
  • Variety:数据类型繁多。
  • Value:数据价值密度低

    系统简介

    ✔ Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella 在 2005 年合作开发。后来,Hadoop 被贡献给了 Apache 基金会,成为 Apache 基金会的开源项目。
    ✔ Hadoop 是一种分析和处理大数据的软件平台,是一个用 Java 语言实现的 Apache 的开源软件框架,在大量计算机组成的集群中实现了对海量数据的分布式计算。
    ✔ Hadoop 采用 MapReduce 分布式计算框架,根据 GFS 原理开发了 HDFS(分布式文件系统),并根据 BigTable 原理开发了 HBase 数据存储系统。
    ✔ Hadoop 和 Google 内部使用的分布式计算系统原理相同,其开源特性使其成为分布式计算系统的事实上的国际标准。
    ✔ Yahoo、Facebook、Amazon,以及国内的百度、阿里巴巴等众多互联网公司都以 Hadoop 为基础搭建了自己的分布式计算系统。
    ✔ Hadoop 是一个基础框架,允许用简单的编程模型在计算机集群上对大型数据集进行分布式处理。它的设计规模从单一服务器到数千台机器,每个服务器都能提供本地计算和存储功能,框架本身提供的是计算机集群高可用的服务,不依靠硬件来提供高可用性。
    用户可以在不了解分布式底层细节的情况下,轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。低成本、高可靠、高扩展、高有效、高容错等特性让 hadoop 成为最流行的大数据分析系统。

    生态系统

    ✔ Hadoop 是一个由 Apache 基金会开发的大数据分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,轻松地在 Hadoop 上开发和运行处理大规模数据的分布式程序,充分利用集群的威力高速运算和存储。
    ✔ Hadoop 是一个数据管理系统,作为数据分析的核心,汇集了结构化和非结构化的数据,这些数据分布在传统的企业数据栈的每一层。
    ✔ Hadoop 也是一个大规模并行处理框架,拥有超级计算能力,定位于推动企业级应用的执行。
    ✔ Hadoop 又是一个幵源社区,主要为解决大数据的问题提供工具和软件。
    虽然 Hadoop 提供了很多功能,但仍然应该把它归类为由多个组件组成的 Hadoop 生态圈,这些组件包括数据存储、数据集成、数擔处理和其他进行数据分析的专门工具。

    Hadoop 包括以下 4 个基本模块
  • 基础功能库:支持其他 Hadoop 模块的通用程序包
  • HDFS:一个分布式文件系统,能够以高吞吐量访问应用中的数据
  • YARN:一个作业调度和资源管理框架
  • MapReduce:一个基于 YARN 的大数据并行处理程序

    HDFS

    Hadoop 分布式文件系统,是 Hadoop 上层组件的核心存储系统,HBASE,Hive 等都是基于 HDFS 的存储来构建的。

    HDFS 也是 Master/Slave 的主/从架构模式,HDFS 集群由单个 NameNode 和多个 DataNode 组成,NameNode 就是 Master,DataNode 就是 Slave。
  • NameNode:负责管理 metadata 元数据,记录了文件所对应的块信息。
  • DataNode,通常集群中每个节点都有一个 DataNode,里面存储了具体的数据。

    YARN

    YARN 是一个 hadoop 的资源管理器,负责管理资源和任务调度;基本思想是将 JobTracker 的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的 ResourceManager(RM)和若干个针对应用程序的 ApplicationMaster(AM)。这里的应用程序是指传统的 MapReduce 作业或作业的 DAG(有向无环图)

    ResourceManager :负责系统内所有应用的资源调度
    NodeManager 是每台机器的框架客户端/代理,负责容器管理,监控他们的资源使用情况,例如 CPU、Memory、 Disk、Network,并汇报给 ResourceManager/Scheduler

    MapReduce

    MapReduce 是一种分布式计算模型,由 Map 和 Reduce 组成; Map() 负责把一个大的block 块进行切片并计算; Reduce() 负责把 Map() 切片的数据进行汇总、计算。
    执行的核心思想: 相同 key 的键值对为一组调用一次 Reduce 方法,方法内迭代这组数据进行计算。
    MapReduce 在大数据计算领域的地位举足轻重,可以使用很多廉价的机器达到惊人的算力;图中是整个 MapReduce 的大致计算过程,详细介绍可看官网。