# 大数据
- 21 世纪,互联网上的数据越来越多。人们将大规模的数据集合,统称为大数据。
- 人们发现,使用传统的计算机技术,难以处理大数据。例如:
- 一个硬盘的 IOPS 速度有限,不能快速读写大数据。因此,人们研发了分布式存储技术,用多个硬盘合作存储大数据。
- 一台计算机的 CPU 核数有限,不能快速处理大数据。因此,人们研发了分布式计算技术,用多台计算机合作处理大数据。
- MySQL 等传统的数据管理系统不擅长处理大数据,性能差。因此,人们研发了 HBase 等数据库。
# 数据结构
- 结构化数据:每条数据的结构类似,包含一些相同的字段。一般整理成二维表,存储在关系型数据库中。
- 半结构化数据:可以被程序解析成结构化数据,比如 JSON、XML 文本。
- 非结构化数据:每条数据的内容差异大,不能分成多个字段,一般按整体存储。比如图像、音频、视频。
# Hadoop
:一个分布式系统,用于存储、处理大数据。
- 历史:
- 2000 年,美国工程师 Doug Cutting 开源了全文搜索引擎 Lucene 。
- 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 语言开发。
- 支持批处理、流处理。