大数据Hadoop生态简介
大数据带来的挑战
数据量越来越大,种类越来越多,产生的速度越来越快
声明:参考华为的一篇文章
Hadoop
- Apache开源项目,超始于2005年
- 针对解决数据量大,各类多,产生数据快的问题
- 强大的开源社区支持
- 日益丰富的生态系统
HDFS
- HDFS是基于Google发布的GFS论文进行设计开发,运行在通用硬件上的分布式文件系统
- HDFS的特点
- 高容错性:认为硬件总是不可靠的,所以每份数据都有备份文件
- 高吞吐量:为大量数据访问的应用提供高吞吐量支持
- 大文件存储:支持存储TB-PB级别的数据
MapReduce
- MapReduce基于Google发布的分布式计算框架Map/Reduce论文设计开发,用于大规模数据的并行运算
- 特点
- 易于编程:程序员仅需描述做什么,具体怎么做交由系统的执行框架处理
Yarn
- Yarn是Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和作业调度,除了提供MapReduce框架,还可以支持其他框架,比如Saprk、Storm等
- 特点
- 良好的扩展性:可通过添加节点以扩展集群能力
- 高容错性:通过计算迁移策略提高中集群的容错性
Hive
- Hive是基于Hadoop的数据仓库软件,可以查询和管理PB级别的分布式数据。提供类SQL的HiveSQL语言将SQL查询转换为MapReduce任务实现数据处理
常见场景
- 数据清洗:数据抽取,数据加载,数据切换
- 非实时分析:日志分析,文本分析等
- 数据挖掘:用户行为分析,兴趣分析等
HBase
- HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,提供少量数据存储功能,用来解决关系型数据库在处理海量数据时的局限性
常见场景
- 存储大表数据:表的规划可达到数十亿行以及数百万列
- 高效的随机读取
- 同时处理结构化和非结构化的数据
Spark
- Spark是一种通用的高性能集群计算系统。既有类似于MR的颁式内存计算框架,也有类似Hive的类SQL查询,还提供了实时数据的处理引擎和机器学习的算法库
常见场景
- 快速的数据处理,ETL(抽取,转换,加载)
- 实时数据分析
- 数据挖掘和机器学习
Kafka
- Kafkaa是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka技术可在廉价的机器上搭建起大规模消息系统,适用于离线和在线的消息消费
常见场景
- 常规的消息收集
- 网站活性跟踪
- 聚合统计系统运营数据:如监控数据
Strom
- Storm是一个分布式、实时计算框架,具有高度容错、低时延的优点
常见场景
- 实时分析:如实时处理日志处理、交通流量分析等
- 实时统计:如网站的实时访问统计、排序等
- 实时推荐:如实时广告定位、事件营销等
Flume
- Flume是一个分布式、可靠和高可用的少量日志聚合的系统。支持在系统中定制各类数据发送方,用于收集数据然后写到各种数据接收方的能力。用户几乎不必进行任何额外开发即可使用
常见场景
- 从固定目录下采集日志信息到目的地:HDFS,HBase,Kafka
- 实时采集日志信息到目的地