赞
踩
1. zookeeper是⼀个为分布式应⽤程序提供的⼀个分布式开源协调服务框架。是Google的Chubby的⼀个开源实现,是Hadoop和Hbase的重要组件。主要⽤于解决分布式集群中应⽤系统的⼀致性问题。 2. 提供了基于类似Unix系统的⽬录节点树⽅式的数据存储。 3. 可⽤于维护和监控存储的数据的状态的变化,通过监控这些数据状态的变化,从⽽达到基于数据的集群管理 4. 提供了⼀组原语(机器指令),提供了java和c语⾔的接⼝
1. 也是⼀个分布式集群,⼀个领导者(leader),多个跟随者(follower). 2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。 3. 全局数据⼀致性:每个server保存⼀份相同的数据副本,client⽆论连接到哪个server,数据都是⼀致的。 4. 更新请求按顺序进⾏:来⾃同⼀个client的更新请求按其发送顺序依次执⾏ 5. 数据更新的原⼦性:⼀次数据的更新要么成功,要么失败 6. 数据的实时性:在⼀定时间范围内,client能读到最新数据。
Zookeeper的数据模型采⽤的与Unix⽂件系统类似的层次化的树形结构。我们可以 将其理解为⼀个具有⾼可⽤特征的⽂件系统。这个⽂件系统中没有⽂件和⽬录,⽽是 统⼀使⽤"节点"(node)的概念,称之为znode。znode既可以作为保存数据的容器(如 同⽂件),也可以作为保存其他znode的容器(如同⽬录)。所有的znode构成了⼀个层次 化的命名空间。
- Zookeeper 被设计⽤来实现协调服务(这类服务通常使⽤⼩数据⽂件),⽽不是⽤于 ⼤容量数据存储,因此⼀个znode能存储的数据被限制在1MB以内, - 每个znode都可以通过其路径唯⼀标识。
1.负责提供阶段的监听注册作⽤ 2.负责接收⽤户的⼼跳,进⾏通信,感知⽤户的状态 3.负责为⽤户提供注册,查找信息 4.负责负载均衡
注意:
1.如果现在再新增⼀个服务器,要先完成在zookeeper中的注册,这时我就知道可以有 ⼀个新的服务器可⽤,分配任务时进⾏较平均分配(负载均衡)
2.zookeeper可以单机版,但是他的压⼒也很⼤,所以⼀般zookeeper也是⼀个分布式 的
为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop 1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架 YARN.
Apache YARN(Yet another Resource Negotiator的缩写)是Hadoop集群的资源 管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平 台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。
yarn被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通 ⽤性,同样可以⽀持其他的分布式计算模式,⽐如Spark,Tez等计算框架。
第⼀代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是在接受到最后⼀个任务运⾏完成后,才会将任务标记为成功。此时会做删除中间结果等善后处理⼯作。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。