前言:
由于之后工作需要了解部分大数据相关技术,现将查阅的资料整理汇总
只列出主要技术介绍供大家入门查看,不包含具体使用和细节
大数据架构
数据采集
是指将应用程序产生的数据和日志等同步到大数据系统中。这其中包括用于数据库同步的Sqoop,用于采集业务日志的Flume,还有用于数据传输的Kafka等。
数据存储
海量的数据,需要存储在系统中,方便下次使用时进行查询。常用方式有文件存储技术HDFS,实时处理数据的列族数据库Hbase,以及一个类似SQL的查询工具Hive,方便对HDFS数据进行查询。
HDFS:Hadoop分布式文件系统,被设计成适合部署于通用、低廉的硬件之上,有着高容错性、高吞吐量、高可靠性等特点;
HBase:HBase是一个分布式的、面向列的开源数据库,与一般的关系型数据库不同,它适合于非结构化数据存储与查询,具有高可靠性、高性能、面向列和可伸缩等特点;
Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行;
数据处理
原始数据需要经过层层过滤、拼接、转换才能最终应用,数据处理就是这些过程的统称。一般来说,有两种类型的数据处理,一种是离线的批量处理,另一种是实时在线分析。
批数据处理:指一次批量的数据处理,它存在明确的开始和结束节点。
MapReduce:如前文所说,通过Hadoop的MapReduce功能,可以将大的数据处理任务,拆分为分布式的计算任务,交给大量的机器处理,最终等处理完后拼接成我们需要的结果。这是一张批量处理的逻辑。
Spark:Spark是一个高速、通用大数据计算处理引擎。拥有Hadoop MapReduce所具有的优点,但不同的是Job的中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
流数据处理:实时不间断处理的数据。
Spark Streaming:基于 Spark,另辟蹊径提出了 D-Stream(Discretized Streams)方案:将流数据切成很小的批(micro-batch),用一系列的短暂、无状态、确定性的批处理实现流处理。
Storm:一个开源、分布式、高容错的实时大数据处理架构,它使得持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求,Storm经常用于实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
Flink:可以理解为Storm的下一代解决方案,与HDFS完全兼容。Flink提供了基于Java和Scala的API,是一个高效、分布式的通用大数据分析引擎。更主要的是,Flink支持增量迭代计算,使得系统可以快速地处理数据密集型、迭代的任务。
数据应用
经过处理的数据可以对外提供服务,比如生成可视化的报表、作为互动式分析的素材、提供给推荐系统训练模型等等。