同期文章:
HDFS知识体系(知其然,知其所以然) - 掘金 (juejin.cn)
YARN:分布式资源管理框架 - 掘金 (juejin.cn)
一文了解MapReduce的前世今生 - 掘金 (juejin.cn)
一文了解Hive的前世今生 - 掘金 (juejin.cn)
Hive与Hbase,傻傻分不清 - 掘金 (juejin.cn)
我本身从事的大数据开发,大数据Hadoop,HDFS,Hive,Hbase,Spark,Flink等概念可以说是耳熟能详,但是我确实很少深入的理解他们。本科期间倒是系统的学过,但是当时仅仅是为了应付考试,对一些概念很模糊,没有形成系统的理解。
一、Hadoop是什么
根据官方定义:Hadoop软件库是一个可靠、可扩展的分布式计算开发框架,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。
Hadoop旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。Hadoop本身不是依靠硬件来提供高可用性,因为不可抗力的因素,每个计算机群集都可能容易出现故障。Hdaoop旨在检测和处理应用程序层的故障,因此在计算机群集之上提供高可用性服务。
这里要注意hadoop的本质特征和他的伟大之处
- hadoop是容错的,高可用的,他的管理能力极强,就算再烂的计算机集群我也能压榨出你一点性能。
- 可扩展,结合上面的特点这意味着hadoop可以通过堆叠大量无论多么垃圾的计算机集群来榨取极高的性能。
- 分布式,这个其实也是大数据的本质特征。因为机器的性能是有限的,但是数据却是不断增长的,一台机器无法满足大型数据集的处理这个时候就需要多台机器分布式并行处理。
二、Hadoop模块组成
根据官网介绍
Hadoop Common为其他三个模块提供提供基础设施。
一个Hadoop的项目包里包含了HDFS、YARN、MapReduce,这也是他的三大核心模块。
Hadoop的Mapreduce为分布式处理计算提供了计算框架;
HDFS为分布式文件系统负责文件的分布式管理;
Yarn则是为多个机器分布式处理提供了资源调度支撑。
三、Hadoop模块功能
| 模块 | 功能概述 |
|---|---|
| HDFS | 一个高可靠、高吞吐量的分布式文件管理系统 ——分布式文件系统 |
| MapReduce | 一个分布式的离线并进行计算框架 ——分布式计算框架 |
| YARN | 一个新的MapReduceq框架,任务调度与资源管理 ——分布式资源管理框架 |
四、Hadoop生态周边项目
- HBase是一个分布式列存储数据库,它提供了对海量结构化或半结构化数据的随机实时读写能力
- Pig是一个基于MapReduce的数据流语言和执行框架,它提供了一种简洁的方式来处理复杂的数据转换和分析任务
- Hive是一个基于MapReduce的数据仓库工具,它提供了一种类似SQL的查询语言(HiveQL),用于对存储在HDFS上的数据进行统计分析
- Spark是一个快速、通用和可扩展的大数据处理平台,它支持多种编程语言(Scala、Java、Python等)和多种计算模型(批处理、流处理、机器学习等)
- Storm是一个实时分布式计算框架,它可以处理海量流式数据,并提供高可靠性和容错性
1. spark,storm的区别
Spark是一个基于内存的分布式计算框架,它可以处理批量数据和流式数据Spark Streaming是Spark的一个扩展模块,它采用微批处理的方式来处理实时数据流。 Spark的优点是速度快、易于编程、支持多种语言和多种数据源。Spark适合于需要复杂计算、迭代运算、机器学习等场景。
Storm是一个分布式实时计算系统,它可以处理海量的流式数据。Storm是按条处理数据流,逐个处理流式数据事件,比Spark Streaming更实时。Storm的优点是可扩展性强、容错性高、支持多种语言和多种拓扑结构。Storm适合于需要低延迟、高吞吐量、事件驱动等场景。
2. Flink和Spark和Storm都是流式大数据处理框架,它们有哪些区别:
- Flink是一个真正意义上的流计算引擎,可以实现低延迟、高吞吐量、精确一次(exactly once)的流处理
- Spark是一个基于微批(micro-batch)的流计算引擎,每个微批之间有调度开销,不适合做秒级或亚秒级的计算
- Storm是一个没有批处理能力的数据流处理器,只提供了非常底层的API,用户需要自己实现很多复杂的逻辑