目录
Hadoop
狭义解释
Apache的一个用Java语言实现的开源软件框架,是一个存储和计算大规模数据的软件平台。
核心组件:
HDFS(分布式文件系统):解决海量数据存储
MapReduce(分布式运算编程框架):解决海量数据计算
YARN(作业调度和集群资源管理的框架):解决资源任务调度
广义解释
Hadoop通常是指Hadoop生态圈,由很多大数据组件构建而成。
包括:Linux、zookeeper、Hadoop、hive、hbase、redis、elk、kadka、java、scala、python、impala、kudu、spark、flink、相关工具等
Hadoop不同版本
- 1.x
mapreduce:数据计算;资源管理
hdfs:数据存储,自动备份

- 2.x
mapreduce:数据计算
yarn:资源管理
hdfs:数据存储

hdfs:
NameNode:集群中的主节点,主要用于管理集群当中的各种数据
SecondaryNameNode:主要用于Hadoop中元数据信息的辅助管理
元数据:描述数据属性的信息,用来支持(如指示存储位置、历史数据、资源查找、文件记录)等功能。
DataNode:集群中的从节点,主要用于存储集群当中的各种数据
yarn:
ResourceManager:接受用户的计算请求任务,负责集群的资源分配
NodeManager:执行主节点分配的任务
mapreduce:
MapReduce是一个计算框架,map负责分布式计算,reduce负责将分布式计算的结果合并
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由Yarn集群来提供资源调度
- 3.x
架构和2.x一样,性能做了优化

Hadoop与云计算
Hadoop是实现大数据处理的一种具体技术,而云计算是提供各种服务的一种商业模式和技术范式。
云计算是什么
云计算是一种通过互联网按需提供计算资源(如服务器、存储、数据库、网络、软件)等的模式,无需自建。
云计算特点
- 按需提供服务:用户可自行配置所需的计算能力
- 宽带网络访问:服务支持各种标准设备访问,如手机、笔记本
- 资源池化:供应商的计算资源被集中起来,通过多租户模式服务多个用户
- 高可伸缩性:资源能够快速、弹性地供应和释放
- 可量化服务:云系统自动控制和优化资源使用,并提供透明的计量信息
- 大规模:服务通常由遍布全国甚至全球的超大规模数据中心支撑
- 服务廉价:规模效应和资源复用,成本低
云计算的3种运营模式
- laaS(基础设施即服务):提供最基础的计算资源,如虚拟机、存储空间、网络。比如阿里云ECS、亚马逊AWS
- PaaS(平台即服务):提供软件开发和运行所需的平台和环境,包括操作系统、数据库、Web服务器。用户只需关注自己的应用程序开发,例如Google App Engine
- SaaS(软件即服务):通过互联网提供完整的应用程序。用户直接使用软件,无需底层任何基础设施。例如Gmail、钉钉
联系
我们可以在云服务商提供的laaS(比如虚拟机集群)上轻松部署Hadoop,也可以用PaaS级的Hadoop服务。
Hadoop与Spark
Spark并非要取代Hadoop,而是作为Hadoop生态种一个更快的计算引擎,与HDFS和YARN组件协同工作。
Spark是什么
Spark是一个专为大规模数据处理而设计的快速、通用的分布式计算引擎。可以看作是MapReduce的继承和加强。
Spark特点
- 运行速度快:通过内存计算和优化的执行引擎,速度比MapReduce快很多
- 易用性:提供了丰富的API(支持Java、Scala、Python、R),拥有高级工具库(如Spark SQL用于结构化数据处理,MLlib用于机器学习)
- 支持复杂查询:支持如机器学习和交互式查询等更复杂的数据处理流程
- 实时流处理:Spark Streaming库能够进行微批次的流数据处理,而Hadoop本身只支持批处理
- 容错性:通过弹性分布式数据集(RDD)实现了高效的容错机制
区别与联系
联系:
- Spark可以与Hadoop生态系统协作,可以运行在YARN上
- Spark可以从HDFS种读取数据并写回HDFS
- 两者都是用于解决大规模数据存储和计算问题的分布式系统
区别:
- 处理方式:MapReduce是磁盘级批处理,每个中间步骤都要写入磁盘,速度慢。Spark是内存级计算,中间结果优先存于内存,速度快
- 流处理能力:Spark有内置的流处理模块,而Hadoop需要借助其他框架实现(如Flink)
- 易用性:Spark的API更高级、简介,开发效率更高
Hadoop与RDBMS
RDBMS是什么
关系型数据库管理系统,是一种基于关系模型来管理和组织数据的软件,如MySQL、Oracle、SQL Server。
RDBMS的特点
- 二维表结构:数据以行和列的形式存储在表中,结构清晰,容易理解
- SQL语言:使用标准化的SQL语言进行数据操作和查询,功能强大且使用方便
- 易于维护:提供了事务、索引、完整性约束等机制,保证了数据的一致性和安全性
- 实时响应:适用于高并发、低延迟的在线事务处理
区别与联系
联系:
- 两者都是数据管理和处理系统
- Hive运行在Hadoop上,可以将SQL转换为MapReduce任务执行,让熟悉SQL的用户也能使用Hadoop
区别:
- 数据规模与类型:RDBMS适合结构化数据,GB到TB级别;Hadoop适合结构化、半结构化、非结构化数据,TB或PB级别
- 读写模式:RDBMS支持频繁、小批量的增删改查,读写延迟低;Hadoop更适合一次写入、多次读取的批处理模式,写延迟高,读吞吐量大
- schema(模式):RDBMS是写时模式,在写入数据前必须严格定义好表结构;Hadoop是读时模式,数据存储时不需要预先定义结构,而是在读取数据时再进行解析,灵活性高
- 扩展性:RDBMS通常采用纵向扩展,提高单机性能,成本高有上限;Hadoop采用横向扩展,通过廉价的普通服务器来线性扩展集群能力,成本低且理论无上限
Hadoop集群简介
Hadoop集群
包括HDFS集群和YARN集群,两者逻辑上分离,物理上在一起
HDFS集群:NameNode、DataNode、SecondaryNameNode
YARN集群:ResourceManager、NodeManager

集群规划
伪分布式模式(又叫单节点集群)
1个机器上运行HDFS的NameNode和DataNode、YARN的ResourceManger和NodeManager,主要用于学习和调试。

完全分布式模式
使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同机器上。

tips:
有冲突和工作依赖的尽量不要部署在一起;
nodemanager和datanode要在一起,后续扩容集群也是增加这两个角色

1572

被折叠的 条评论
为什么被折叠?



