大数据一词最早指的是传统数据处理应用软件无法处理的过于庞大或过于复杂的数据集。
现在,对“大数据”一词的使用倾向于使用预测分析、用户行为分析或者其他一些从大数据中提取价值的高级数据分析方法,很少用于表示特定规模的数据集。
定义
大数据是指规模巨大、种类繁多、产生速度快的数据集合,通常超出了传统数据处理软件工具的处理能力范围。
大数据的特点主要可以归纳为以下几个方面:
- Volume:数据量大,通常在 TB、PB 甚至 EB 级别。
- Velocity:数据的产生速度非常快,需要被实时处理。
- Variety:数据类型多,包含结构化数据、非结构化数据和半结构化数据。
- Veracity:数据的可靠性高。
- Value:数据包含的价值大。
大数据生态
数据采集
- 日志数据采集:
- Apache Flume:支持的场景更多(半结构化和非结构化数据采集)
- Logstash:ELK 场景推荐使用 Logstash,可以和 Elastic、Kibana 无缝集成
- Filebeat:性能更高
- 关系型数据库数据采集:Sqoop、DataX、Canal、Maxwell、Debezium、FlinkCDC
数据存储
- 分布式文件存储系统:Hadoop HDFS
- 数据库系统:Mongodb、HBase
- 消息队列中间件:Kafka
数据计算
- 离线计算:Hadoop MapReduce、Spark
- 实时计算:Storm、Spark Streaming、Flink
数据分析
- 离线数据分析:Hive、Impala、Kylin
- 实时数据分析:ClickHouse、Druid、Doris
任务调度框架
- Apache Oozie
分布式资源管理
- Hadoop YARN
- Kubernates
- Mesos
管理和协调
- Zookeeper:分布式协调服务
- Apache Ambari:安装、部署、配置和管理工具
学习路线
大数据生态的工具和技术组件虽然多,但是每类只需要重点学习一个就可以了。
可以按照下面的学习路线:
- 学习 Hadoop,包括 HDFS、MapReduce、YARN 三个主要组件
- 了解 Hive
- 了解 Kafka
- 学习 Spark 用于离线数据计算
- 学习 Spark Streaming 或者 Flink 用于实时数据计算
- 了解 Oozie、Zookeeper、Ambari 的用法