一、大数据应用的计算模式
- 批处理计算:针对大规模数据的批量处理,MapReduce、Spark
- 流计算:针对流数据的实时计算处理,Spark、Storm、Flink、Flume、Dstream
- 图计算:针对大规模图结构数据的处理,GraphX、Gelly 、Garph、PowerGraph
- 查询分析计算:大规模数据的存储和查询分析,Hive、Impala、 Dremel、Cassandra
二、大数据组件:
1. HDFS
- HDFS是Hadoop体系中数据存储管理的基础 ,它是一个高度容错的系统,能检测和应对硬件故障,可在低成本的通用硬件上运行。
- HDFS简化了文件的一致性模型 ,通过流式数据访问 ,提供高吞吐量数据访问能力 ,适合带有大型数据集的应用程序。
- HDFS提供了一次写入 、多次读取的机制,数据以块的形式分布在集群的不同物理机上。
- HDFS的架构基于一组特定的节点构建,这是由它自身的特点决定的。
- HDFS的节点NameNode ,在HDFS内部提供元数据服务 。若干个DataNode为HDFS提供存储块。
2. MapReduce
- MapReduce是一种分布式计算框架,用于大数据计算。
- 它屏蔽了分布式计算框架的细节,将计算抽象成Map和Reduce两部分。
3. HBase
- HBase是一个面向列的 、针对结构化数据的可伸缩 、高可靠 、高性能 、分布式数据库。
- HBase采用了BigTable的数据模型:增强的稀疏排序映射表(key-value)。
4. Pig
- Pig简化了Hadoop常见的工作任务,可加载数据 、转换数据以及存储最终结果。
5. Sqoop
- 主要用于在传统数据库和Hadoop之间传输数据 。它可以将关系数据库(如MySQL 、Oracle、Postgres等)中的数据导入Hadoop的HDFS中,也可以将HDFS中的数据导入关系数据库中。
- Sqoop利用数据库技术描述数据架构,并充分利用了MapReduce的并行化和容错性。
6. Flume
- 将数据从产生 、传输 、处理并最终写入目标路径的过程抽象为数据流。
7. Mahout
- Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现, 旨在帮助开发者更加方便 、快捷地创建智能应用程序。
- Mahout现在已经包含聚类 、分类 、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘算法。
8. Oozie
- Oozie具有可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。
- 它能够管理一个复杂的系统,使其基于外部事件来执行。
9. YARN
- YARN是一种新的Hadoop资源管理器 。它是一个通用资源管理系统 ,可为上层应用提供统一的资源管理和调度。
10. Mesos
- Mesos是一个资源统一管理和调度的平台, 同样支持MapReduce 、Streaming等多种运算框架。
- Mesos作为数据中心的内核 ,其设计原则是分离资源分配和任务调度 ,为大量不同类型的负载提供可靠服务。
11. Tachyon
- Tachyon是以内存为中心的分布式文件系统,拥有高性能和容错能力 ,并具有类Java的文件API、插件式的底层文件系统 、兼容Hadoop 、MapReduce和Apache Spark等特点,能够为集群框架 (如Spark 、MapReduce)提供可靠的内存级速度的文件共享服务。
- Tachyon充分使用内存和文件对象之间的谱系(lineage)信息, 因此速度很快。
12. Tez
- 核心思想是将Map和Reduce两个操作进一步拆分, 即Map被拆分成Input 、Processor 、Sort、Merge和Output等, Reduce被拆分成Input 、Shuffle 、Sort 、Merge 、Processor和Output等。拆分后的元操作可以任意灵活组合,产生新的操作 。这些操作经过一些控制程序组装后 ,可形成一个大的DAG作业。
13. Spark
- Spark提供了一个更快 、更通用的数据处理平台。
14. Giraph
- Giraph是一个可伸缩的分布式迭代图处理系统。
15. MLlib
- MLlib是一个机器学习库,提供了各种各样的算法,这些算法在集群上针对分类 、回归 、聚类、协同过滤等。
- MLlib是Spark对常用的机器学习算法的实现库, 同时包括相关的测试和数据生成器。
16. Spark Streaming
- Spark Streaming支持对流数据的实时处理 ,以“微批 ”的方式对实时数据进行计算。
- 它是构建在Spark上处理Stream数据的框架 ,基本原理是将Stream数据分成小的片段, 以类似批量处理(Batch)的方式来处理每个片段数据。
17. Spark SQL
- Spark SQL是Spark中用来处理结构化数据的一个模块 ,它提供了一个称为DataFrame的编程抽象,并且可以充当分布式SQL查询引擎。
- 它将数据的计算任务通过SQL的形式转换成了RDD的计算 ,类似于Hive通过SQL的形式将数据的计算任务转换成了MapReduce。
18. Kafka
- 主要用于处理活跃的流式数据。
19. Phoenix
- Phoenix是HBase的SQL驱动。
20. Kylin+Druid
- Kylin是一个开源的分布式分析引擎, 它提供了 Hadoop之上的SQL查询接口和多维分析(如OLAP)能力以支持大规模数据 ,能够处理TB乃至PB级别的分析任务 ,能够在亚秒级查询巨大 的Hive表,并支持高并发。
21. Superset
- 能快速创建可交互的 、形象直观的数据集合 ,有丰富的可视化方法来分析数据 ,具有灵活的扩展能力,与Druid深度结合,可快速地分析大数据。
22. Storm
- Storm是一个分布式实时大数据处理系统 ,用于在容错和水平可扩展方法中处理大量数据 。它具有一个流数据框架,且有较高的摄取率。