# 大数据

  • 大数据是指大规模的数据集合。
  • 使用传统的数据管理系统难以存储、处理大数据,通常采用分布式存储、分布式计算等技术。

# 数据结构

  • 结构化数据:每条数据的内容类似,可以分成多个字段。一般整理成二维表,存储在关系型数据库中。
  • 半结构化数据:比如 JSON 文档中,key 是结构化数据,value 是非结构化数据。
  • 非结构化数据:每条数据的内容差异大,不能分成多个字段,一般按整体存储。比如图像、音频、视频。

# Hadoop

:一个分布式系统,用于存储、处理大数据。

  • 历史:
    • 2004 年,Doug Cutting 基于 Lucenne 开发了一个 Web 搜索引擎 Nutch ,类似于 Google 。它包含爬虫功能,并开发了 HDFS、MapReduce 软件。
    • 2006 年,Doug Cutting 入职 Yahoo 公司,发布了 Hadoop ,后来交给 ASF 管理。
  • Hadoop 系统包含的主要软件:
    • Hadoop Common
    • ZooKeeper
    • HDFS
      • :一个分布式文件系统,起源于 Google 的论文 Google File System 。
    • HBase
      • :一个分布式列式数据库。起源于 Google 的论文 BigTable 。
    • Hive
      • :一个数据仓库,可以将结构化的数据文件映射为一张数据库表,支持 SQL 查询。
    • MapReduce
      • :一个大数据处理框架,起源于 Google 的同名论文。
      • 支持批处理,支持分布式并行处理。
    • Yarn
      • :一个资源调度器,负责将 CPU、内存等集群资源分配给各种应用。
    • Pig
      • :一个基于 MapReduce 的大数据处理框架。用户使用 Pig Latin 语言编写一些脚本,会被自动转换成 MapReduce 任务。

# 相关概念

  • CDH(Cloudera's Distribution Including Apache Hadoop)
    • :一个 Hadoop 发行版,由 Cloudera 公司发布。
  • CM(Cloudera Manager)
    • :一个管理 CDH 集群的软件。
    • 采用 C/S 架构:
      • 在一台主机上运行 cloudera-scm-server 进程,提供 Web 端管理网站。
      • 在其它主机上运行 cloudera-scm-agent 进程,基于 supervisor 启动、停止进程,还会修改服务配置、监控主机。
  • Storm
    • :一个大数据处理框架。由 Twitter 公司开源,采用 Clojure 语言开发。
    • 不支持批处理,只支持流处理。
  • Spark
    • :一个大数据处理框架。采用 scala 语言开发。
    • 支持批处理,通过小型批处理来实现流处理。
    • 将数据存放在内存中,因此比 MapReduce 快很多。
  • Flink
    • :一个大数据处理框架。采用 Java 语言开发。
    • 支持批处理、流处理。