Zookeeper&YARN

Zookeeper&YARN

Zookeeper的概述

Zookeeper是什么

1. zookeeper是⼀个为分布式应⽤程序提供的⼀个分布式开源协调服务框架。是Google的Chubby的⼀个开源实现,是Hadoop和Hbase的重要组件。主要⽤于解决分布式集群中应⽤系统的⼀致性问题。
2. 提供了基于类似Unix系统的⽬录节点树⽅式的数据存储。
3. 可⽤于维护和监控存储的数据的状态的变化,通过监控这些数据状态的变化,从⽽达到基于数据的集群管理
4. 提供了⼀组原语(机器指令),提供了java和c语⾔的接⼝

Zookeeper的特点

1. 也是⼀个分布式集群,⼀个领导者(leader),多个跟随者(follower).
2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
3. 全局数据⼀致性:每个server保存⼀份相同的数据副本,client⽆论连接到哪个server,数据都是⼀致的。
4. 更新请求按顺序进⾏:来⾃同⼀个client的更新请求按其发送顺序依次执⾏
5. 数据更新的原⼦性:⼀次数据的更新要么成功,要么失败
6. 数据的实时性:在⼀定时间范围内,client能读到最新数据。

Zookeeper的数据模型

Zookeeper的数据模型采⽤的与Unix⽂件系统类似的层次化的树形结构。我们可以 将其理解为⼀个具有⾼可⽤特征的⽂件系统。这个⽂件系统中没有⽂件和⽬录,⽽是 统⼀使⽤"节点"(node)的概念,称之为znode。znode既可以作为保存数据的容器(如 同⽂件),也可以作为保存其他znode的容器(如同⽬录)。所有的znode构成了⼀个层次 化的命名空间。

- Zookeeper 被设计⽤来实现协调服务(这类服务通常使⽤⼩数据⽂件),⽽不是⽤于
⼤容量数据存储,因此⼀个znode能存储的数据被限制在1MB以内,
- 每个znode都可以通过其路径唯⼀标识。

zookeeper的作⽤

1.负责提供阶段的监听注册作⽤
2.负责接收⽤户的⼼跳,进⾏通信,感知⽤户的状态
3.负责为⽤户提供注册,查找信息
4.负责负载均衡

注意:

1.如果现在再新增⼀个服务器,要先完成在zookeeper中的注册,这时我就知道可以有 ⼀个新的服务器可⽤,分配任务时进⾏较平均分配(负载均衡)

2.zookeeper可以单机版,但是他的压⼒也很⼤,所以⼀般zookeeper也是⼀个分布式 的

YARN资源管理器

YARN简介

为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop 1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架 YARN.

Apache YARN(Yet another Resource Negotiator的缩写)是Hadoop集群的资源 管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平 台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。

yarn被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通 ⽤性,同样可以⽀持其他的分布式计算模式,⽐如Spark,Tez等计算框架。

MapReduce1.x的简介

第⼀代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其 中,HDFS由⼀个NameNode和多个DataNode组成,MapReduce由⼀个JobTracker 和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。

MapReduce1的⻆⾊

-1.Client :作业提交发起者。
-2.JobTracker :初始化作业,分配作业,与TaskTracker通信,协调整个作业。
-3.TaskTracker :保持JobTracker通信,在分配的数据⽚段上执⾏MapReduce任务。

MapReduce执⾏流程

提交作业

编写MapReduce程序代码,创建job对象,并进⾏配置,⽐如输⼊和输出路径,压缩格式
等,然后通过JobClinet来提交作业。

作业的初始化

客户端提交完成后,JobTracker会将作业加⼊队列,然后进⾏调度,默认的调度⽅法是
FIFO调试⽅式。

任务的分配

TaskTracker和JobTracker之间的通信与任务的分配是通过⼼跳机制完成的。
TaskTracker会主动向JobTracker询问是否有作业要做,如果⾃⼰可以做,那么就会
申请到作业任务,这个任务可以是MapTask也可能是ReduceTask。

任务的执⾏

申请到任务后,TaskTracker会做如下事情:

-1. 拷⻉代码到本地
-2. 拷⻉任务的信息到本地
-3. 启动JVM运⾏任务

状态与任务的更新

任务在运⾏过程中,⾸先会将⾃⼰的状态汇报给TaskTracker,然后由TaskTracker汇总告之JobTracker。任务进度是通过计数器来实现的。

作业的完成

JobTracker是在接受到最后⼀个任务运⾏完成后,才会将任务标记为成功。此时会做删除中间结果等善后处理⼯作。

Zookeeper的安装

环境变量的配置

1. 将zookeeper-3.4.10.tar.gz上传到/root、中
2. 解压
 [root@qianfeng01 ~]# tar -zxvf zookeeper-3.4.10.tar.gz -C
/opt/apps/
3. 更名zookeeper
 [root@qianfeng01 ~]# cd /opt/apps/
 [root@qianfeng01 local]# mv zookeeper-3.4.10 zookeeper
4. 配置环境变量
 [root@qianfeng01 local]# vi /etc/profile
 .........省略......
 export ZOOKEEPER_HOME=/opt/apps/zookeeper
 export PATH=$ZOOKEEPER_HOME/bin:$PATH
5. 使当前会话⽣效
 [root@qianfeng01 local]# source /etc/profile
6. 检查如下:
如果只检查环境变量是否配置成功,只需要使⽤tab键进⾏补全zk,是否zookeeper的
相关脚本提示即可。
注意:第七步,只能是运⾏zookeeper服务后,才能这样查看。
7. 查看zookeeper的版本号
 [root@qianfeng01 local]# echo stat|nc localhost 2181

独⽴模式的安装

复制出⼀个zoo.cfg⽂件(有⼀个样本 zoo_sample.cfg)

[root@qianfeng01 local]# cd zookeeper/
[root@qianfeng01 zookeeper]# cd conf/ #进⼊
zookeeper的conf⽬录
[root@qianfeng01 conf]# cp zoo_sample.cfg zoo.cfg #复制出
zoo.cfg⽂件

修改zoo.cfg⽂件

[root@qianfeng01 conf]# vi zoo.cfg
tickTime=2000 # 定义的时间单元(单位毫秒),下⾯的两个值都是
tickTime的倍数。
initLimit=10 #follower连接并同步leader的初始化连接时间。
syncLimit=5 #⼼跳机制的时间(正常情况下的请求和应答的时间)
dataDir=/opt/apps/zookeeper/zkData #修改zookeeper数据的存储路径
clientPort=2181 #客户端连接服务器的port

启动测试

在本地上开启server

 [root@qianfeng01 ~]# zkServer.sh start

使⽤客户端连接服务

[root@qianfeng01 ~]# zkCli.sh [-server] [host]

进⾏⼀些命令的操作

[zk: localhost:2181(CONN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值