下图是近来学习和用到的大数据方面的技术,现在做一个总结。并且在总结的过程中,也进行更加进一步的学习和了解。
以上为个人所接触到的大数据相关的一些技术,后续的章节将围绕这些技术展开,具体的介绍方式是从应用和原理两个方面进行。
1、大数据实时流架构
(1) 消息队列
消息队列是在不同的应用间做数据传递的,现在常用的主要包括Kafka,redis 队列,RabbitMQ,ZeroMQ,ActiveMQ 等。
(2)流式处理框架
流式处理框架主要是提供了一实时处理消息的计算框架,具体的实现是由业务方自己来写代码完成的。常见的有Storm、Spark Streaming、以及Flink。
(3) 存储
对于数据的存储,常规的关系型数据库(比如mysql、Oracle)也可以实现,但是对于大数据的存储,现在比较流行的比如是NoSql数据库,比如 Redis、MongoDB、HBase 这三种是最常用的。尤其对于Redis,很多大型公司都谁针对自己的业务场景对其进行封装,提供监控、报警和自动扩容等功能。
2、大数据离线流架构
(1)数据存储
目前大数据技术最常用的存储方式为:HDFS、Hive(基于HDFS)
(2)数据分析和处理工具
目前的数据分析处理工具主要是两个方向,MapReduce和Spark 。
MapReduce:常用的工具有原生Hadoop MapReduce,Hive SQL和Pig。其中Hadoop MapReduce是最基础的,HIve Sql和 pig都是对其进行的上层封装,就好像汇编语言是比较基础的编程语言,而C和Java是对其进行的上层封装,最终还要转成汇编一样的道理;
Spark 是目前最火的数据处理工具,没有之一。其与Hadoop相比,更大程度上利用了内存。