hadoop、spark、zookeeper

6 篇文章 0 订阅
4 篇文章 0 订阅

Hadoop

Hadoop:是一个能够在跨计算机的分布式环境中存储和处理大数据的开源框架。具有高容错、高可靠性、高扩展性的特点。

可靠性体现在:

1.数据的冗余
2.机架策略(通过节点之间发送一个数据包,感应节点是否在同一个机架,一般本机架设置一个副本,其他机架再设置一个副本)
3.心跳机制(NameNode 周期性从 DataNode 接受心跳信息和块报告,NameNode 根据块报告验证元数据)

适用场景:
适合于大规模数据、流式数据(写一次,读多次)、能在一般硬件上运行。
不适合读大量的小文件、低延时的数据访问、频繁的修改文件的场景

其架构图:
在这里插入图片描述

HDFS分布式文件系统

HDFS是hadoop distributed file system的缩写,称为分布式文件系统。由block数据块、NameNode、Secondary NameNode、DataNodes四部分构成
在这里插入图片描述
1.Block数据块
Block是基本的存储单位,一般大小为64M(存储时,大文件会被分为不同的块,存储在不同的机器上,若文件没有64M,也会占用一个Block数据块,实际占用的空间为文件的大小)
Block是基本的读写单位,数据块会被复制多份(默认是3份),存储在不同的节点上。

2.NameNode

1.NameNode保存文件的metadata,运行时数据会被存放在内存中,且整个HDFS可用的空间取决于NameNode的大小。
2.NameNode会定期将数据存放在本地磁盘,但是block的位置信息不会保存(由DataNode管理和维护),与DataNode有关的信息也不会保存,是每次NameNode重启时,动态创建的
3.每个Block在NameNode中都对应一条记录,因此不建议用于大规模的小文件
4.NameNode失效,则整个HDFS也失效

3.Secondary NameNode
是NameNode的备份,定期与NameNode同步数据,若NameNode失效,则需要手动设置其为主机

4.DataNode
DataNode保存块的基本信息、负责数据的读写操作和复制操作、DataNode启动时会想NameNode报告当前的信息,并且DataNode之间会进行通信,复制数据块,来保证数据的冗余性

Yarn分布式资源管理

Yarn是Hadoop的分布式资源管理,由ResourceManager、NodeManager、ApplicationMaster、Container组成。
其架构图如下:
在这里插入图片描述
1.ResourceManager:负责Yarn中的全局资源管理和任务调度。只关注分配,不管应用,且不负责容错
2.NodeManager:负责Yarn中单个节点的资源管理和监控
3.ApplicationMaster:负责Yarn中单个作业的资源管理和任务监控
4.Container:负责Yarn中资源申请的单位和任务运行的容器,是基本的资源单位

MapReduce数据处理

是一种分布式的计算方式指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组

MapReduce的处理过程分为两个步骤:map和reduce。每个阶段的输入输出都是key-value的形式,key和value的类型可以自行指定。map阶段对切分好的数据进行并行处理,处理结果传输给reduce,由reduce函数完成最后的汇总

示意图如下:
在这里插入图片描述

spark

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足

Spark拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,

Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

特点:
1.高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。Spark支持交互式的Python和Scala的shell
2.Spark 很快,支持交互式计算和复杂算法。Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用
3.Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等

zookeeper

面向分布式应用程序的高性能协调服务
ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
其目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户
Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,

zookeeper角色机制

zookeeper中的角色分为leader、learner(follower、observer)、client三类,其中leader由投票选举产生,仅follower和leader参与竞选

leader:发起投票和决议,负责管控整个集群的状态
follower:用于接受客户请求并将请求结果返回给用户,参与竞选
observer:接受客户端连接,将请求转发给leader。其目的是为了扩展系统,提高读取速度。因此不参与竞选,仅同步leader状态
client:请求的发起方

每个Server在工作过程中有三种状态:

1.LOOKING:当前Server不知道leader是谁,正在搜寻
2.LEADING:当前Server即为选举出来的leader
3.FOLLOWING:leader已经选举出来,当前Server与之同步

原子广播

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。
Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。

恢复模式:当服务启动或者在领导者崩溃后,Zab就进入了恢复模式
广播模式:当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。

状态同步保证了leader和Server具有相同的系统状态。

HBase和Hive

HBase是一种大型的分布式数据库,支持结构化的数据存储。Hive是一种数据仓库基础结构,可提供数据汇总和即席查询。

即席查询是指那些用户在使用系统时,根据自己当时的需求定义的查询

区别:
1.部署:Hive 一般只要有 Hadoop 便可以工作。而 HBase 则还需要 Zookeeper 的帮助
2.适用场景:Hive 适合用来对一段时间内的数据进行分析查询;HBase 非常适合用来进行大数据的实时查询
3.通用性:HBase 本身只提供了 Java 的 API 接口,并不直接支持 SQL 的语句查询,而 Hive 则可以直接使用 HQL(一种类 SQL 语言)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值