# 大数据
- 大数据是指大规模的数据集合。
- 使用传统的数据管理系统难以存储、处理大数据,通常采用分布式存储、分布式计算等技术。
# 数据结构
- 结构化数据:每条数据的结构类似,包含一些相同的字段。一般整理成二维表,存储在关系型数据库中。
- 半结构化数据:可以被程序解析成结构化数据,比如 JSON、XML 文本。
- 非结构化数据:每条数据的内容差异大,不能分成多个字段,一般按整体存储。比如图像、音频、视频。
# 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 语言开发。
- 支持批处理、流处理。