从0开始接触大数据,不知不觉已经学习了大数据最经典、最主流的一些技术和产品。
从上面这张图来看大数据技术的分类,我们可以分为存储、计算、资源管理三大类。
存储技术
HDFS
最基本的存储技术是 HDFS。比如在企业应用中,会把通过各种渠道得到的数据,比如关系数据库的数据、日志数据、应用程序埋点采集的数据、爬虫从外部获取的数据,统统存储到 HDFS 上,供后续的统一使用。
HBase
HBase 作为 NoSQL 类非关系数据库的代表性产品,从分类上可以划分到存储类别,它的底层存储也用到了 HDFS。HBase 的主要用途是在某些场景下,代替 MySQL 之类的关系数据库的数据存储访问,利用自己可伸缩的特性,存储比 MySQL 多得多的数据量。比如滴滴的司机每隔几秒就会将当前的 GPS 数据上传,而滴滴上的司机数量号称有上千万,每天会产生数百亿的 GPS 数据,滴滴选择将这样海量的数据存储在 HBase 中,当订单行程结束的时候,会从 HBase 读取订单行程期间的 GPS 轨迹数据,计算路程和车费。
计算框架
大数据计算框架最早是 MapReduce,目前看来,用的最多的是 Spark。但从应用角度讲,我们直接编写 MapReduce 或者 Spark 程序的机会并不多,通常我们会用 Hive 或者 Spark SQL 这样的大数据仓库工具进行大数据分析和计算。MapReduce、Spark、Hive、Spark SQL 这些技术主要用来解决离线大数据的计算,也就是针对历史数据进行计算分析,比如针对一天的历史数据计算,一天的数据是一批数据,所以也叫批处理计算。而 Storm、Spark Streaming、Flink 这类的大数据技术是针对实时的数据进行计算,比如摄像头实时采集的数据、实时的订单数据等,数据实时流动进来,所以也叫流处理大数据技术。
资源管理
Yarn
不管是批处理计算还是流处理计算,都需要庞大的计算资源,需要将计算任务分布到一个大规模的服务器集群上。那么如何管理这些服务器集群的计算资源,如何对一个计算请求进行资源分配,这就是大数据集群资源管理框架 Yarn 的主要作用。各种大数据计算引擎,不管是批处理还是流处理,都可以通过 Yarn 进行资源分配,运行在一个集群中。
部署&应用
所以上面所有这些技术在实际部署的时候,通常会部署在同一个集群中,也就是说,在由很多台服务器组成的服务器集群中,某台服务器可能运行着 HDFS 的 DataNode 进程,负责 HDFS 的数据存储;同时也运行着 Yarn 的 NodeManager,负责计算资源的调度管理;而 MapReduce、Spark、Storm、Flink 这些批处理或者流处理大数据计算引擎则通过 Yarn 的调度,运行在 NodeManager 的容器(container)里面。
至于 Hive、Spark SQL 这些运行在 MapReduce 或者 Spark 基础上的大数据仓库引擎,在经过自身的执行引擎将 SQL 语句解析成 MapReduce 或者 Spark 的执行计划以后,一样提交给 Yarn 去调度执行。
这里相对比较特殊的是 HBase,作为一个 NoSQL 存储系统,HBase 的应用场景是满足在线业务数据存储访问需求,通常是 OLTP(在线事务处理)系统的一部分,为了保证在线业务的高可用性和资源独占性,一般是独立部署自己的集群,和前面的 Hadoop 大数据集群分离部署。
来自极客时间的精选留言
大神1
收获书单:《我的精神家园》、《Effective Java》、《敏捷软件开发:原则、模式与实践》、《企业应用架构模式》
大神2
做一些有趣的事情,这个很有感触。作为技术人员,阅读技术文章,往往并不是想解决什么问题。只想看看他在用什么思路解决什么问题。当发现跟你原本推动不谋而合时,就是兴趣所在。而不是兴趣的初级阶段,拿出个demo或者只言片语炫技而已。这大概就是古人常说的道法术的区别。
大神3
如果只是存储,那么HDFS和HBase都可以。关键是看你存储以后做什么用,如果是做离线的数据统计,那么就用HDFS;如果要即时查找,那么就用HBase。
该笔记摘录自极客时间课程
《从0开始学大数据》