大数据Hadoop、Spark等名词释义
大数据技术本质上解决4个核心问题:存储、计算、查询、挖掘。本文主要针对前三点经常出现的相关名词进行释义。
背景
大数据技术先驱Google发表了:《Google file system》《Google MapReduce》《Google BigTable》。Apache软件基金会根据这三本秘籍研究出了hadoop技术并开源推广。从此大数据分布式计算技术层出不穷,技术革命主要围绕计算和查询的性能展开,在存储上并没有太大变化。
鼻祖hadoop是做什么的?
Hadoop就是一个分布式计算的解决方案。
比如1亿个1相加。单台计算机的处理方式是:做一亿次的循环每次+1。分布式的处理方式是:用1万台计算机,每个计算机只需计算1万个1相加,再有一台计算机把1万台计算机的结果相加。计算速度就提高了1万倍。
这可能是一个不恰当的例子。但所谓分布式、云计算,大抵也就是这么回事了。
分布式计算技术经历的时代
hadoop1.0时代
Hadoop1.0=HDFS(数据存储)+ Mapreduce(数据处理)
HDFS:Hadoop Distributed FileSystem。传统的文件系统是单机的,不能跨机器,比如oracle、sqlserver。HDFS则能让大量数据横跨成百上千台机器,并且它让你看到的是一个文件系统而不是很多文件系统。比如你要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。
MapReduce:俗称MR,只有Map和Reduce两个计算过程,Map可以理解为几百台机器同时统计,Reduce则是将几百台机器的结果汇总。
hadoop2.0时代
Hadoop2.0=HDFS(数据存储)+ Mapreduce(数据处理)+Hive(SQL翻译器)+YARN(资源管理系统)
Hive:可以把HDFS数据文件映射为数据库表,并且提供HQL(类SQL)查询功能。它是数据仓库工具,本身不做数据存储。它构建在分布式存储系统HDFS之上,通过其查到的表数据本质上来说还是HDFS的文件。Hive充当了MapReduce(开发语言是Java)的翻译官,所以它最大的作用是解决了非开发人员的使用问题。
YARN:负责整个系统的资源管理和分配,每一次任务都需要申请内存等资源,同时也可以监控管理程序应用。
Spark时代
Spark=HDFS(数据存储)+Spark-Core(数据处理)+Spark-SQL(SQL翻译器)
一句话概括,比hadoop时代的计算速度更快。Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Databricks公司进行维护(公司创始员工均来自AMPLab)。组件Spark-Core对标hadoop的MapReduce,组件Spark-SQL对标hadoop的Hive,组件Spark-Streaming对标hadoop的Storm。
flink时代
Hadoop创始人apache也熟知自己产品的短板,所以一直在默默开发flink,以解决计算速度和其他问题。只是让Spark抢先一步了。也许不久后,flink就能席卷市场。
在SQL掌握的基础上应用Hive工具做数据查询并不难,参考:
https://www.cnblogs.com/huifeidezhuzai/p/9251969.html
https://www.maiyewang.com/2019/04/09/hive总结-3/
通俗易懂的比喻说明
https://www.zhihu.com/question/27974418?sort=created第6个回答喜羊羊与灰太狼