(1)znode操作总结
首先 先在node01 node02 node03上分别重新启动 切换到hadoop用户
第二步;在hadoop用户下 ,启动zookeeper的服务器端 三台电脑都需要这么做
第三步,在node01上,/usr/local/zookeeper/bin/zkCli.sh start
再./zkCli.sh start
在node02和node03上均需要这么做
ls / 查看目录结构
演示 Zookeeper的一些命令
#创建 永久节点zktest,并给一个值123
create /zktest 123
#查看永久节点的值
get /zktest
#修改永久节点的值
set /zktest 345
#演示监听
在第二台机器上
在/usr/bin/zookeeper/bin/zkCli.sh
ls /
此时切换到第一台机器,给第一台机器一个监听事件
get /zktest watch
再切换到第二台电脑,改一下第二台电脑上的zktest的值
set /zktest 678
查看第一台电脑,上面回应有提示:watchedEvent state:SyncConnected type:NodeDataChanged path:/zktest
注意:这是一个临时监听,如果此时在第二台电脑上再改变zktest的值,第一台电脑上不会再显示节点的数据改变。
#创建持久节点的子节点
在第一台电脑上
create /zktest/s1 111
ls /zktest
get /zktest/s1
#创建持久节点的顺序节点
create -s /zktest/ss1 111 #创建第一个持久顺序节点
create -s /zktest/ss2 222 #创建第二个持久顺序节点(注意创建的持久顺序节点,每次创建会在数据节点后给一个随机数字,再创建就依次递增1)
ls /zktest
#创建临时节点
create -e /zktest/e1 e1111
quit(在会话结束后,会自动删除临时节点)
在第二台机器的客户端
#自动监听临时节点
ls /zktest
create -e /zktest/eee1 eee1
在第二台机器上监听
ls /zktest watch
接着在第一台电脑退出
quit
在第二台电脑上查看,会提示目录结构的变化:WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zktest
#测试delete命令
在第一台电脑上先连上
delete命令不能删除数据节点的子节点,如果想删除子节点,用rmr
ls /zktest
delete /zktest 提示不能删除
rmr /zktest
ls /
#更新数据的版本号
create /zktest2 test2
get /zktest2
set /zktest2 test33
会显示数据的版本号从0增加到了1
dataVersion = 1
set /zktest2 4444 0 #0是版本号
会提示版本号错误,因此需要更新的值的数据版本号要和当前的版本号匹配,变成
set /zktest2 4444 1
get /zktest2
quit
telnet node01 2181
conf #查看数据节点的配置信息
cons #输出服务器上所有客户端所有的连接信息
#测试cons
在第一台电脑上
telnet node02 2181
cons
#在node03上看node02的连接信息是什么样的
跳到node03这台电脑上
/usr/local/zookeeper/bin/zkCli.sh -server node02:2181
然后返回第一台电脑上看连接信息
telnet node02 2181
cons
此时会发现,有两台电脑连接了node02,分别是第一台和第三台机器:
/192.168.183.152:36108[0]...
/192.168.183.154:46281[1]..
#stat命令的测试 输出zookeeper的运行状态 版本,运行角色
telnet node02 2181
stat
在另外两台电脑上退出
(2)hadoop集群总结(上课随堂总结)
第二部分 Hadoop概述
1.优点:自动复制副本的内容
不拷贝数据 而是直接在数据节点上直接计算;
存储数据量巨大
流式文件访问:一次写入,多次读取,保证数据一致性。
不适合多线程写入同一个文件,只支持在文件的末尾追加,
2.HDFS架构
超大文件(PB级),流式数据写入;能够在低廉的商用机器上使用;在多线程上不能造成数据的混乱;并行处理数据,易扩展,高容错。
切分文件,存储在不同机器上
读取时,先读取文件快,文件块与节点的映射关系,通过节点读取文件
用master来管理这些存储的信息
存储的这些信息的节点是slave
活动的NameNode 备用的NameNode 管理数据的元信息 元数据同步
slave角色 datanode 一台机器启动一个datanode进程
客户端先和namenode发生交互,从amenode获得数据的元信息,datanode从返回的元信息读取或写入文件。datanode通过心跳象namenode汇报情况
3 核心概念
3.1namenode管理HDFS文件系统的命名空间
3.2standby
namenode 元数据文件:编辑日志,负责记录客户端对目录和文件的写操作;文件系统元数据检查点镜像文件:保存了文件系统中所有的目录和文件信息(目录下有哪些子目录,子文件,文件名,文件信息,
,文件副本数,文件由哪些块组成)。
3.3datanode:Slave工作节点,对数据块进行校验;周期性向namenode报告块的列表信息,namenode通过心跳感知datanode的运行状态。如果发现datanode发生故障了,就不会将客户端的I/O转发给datanode。
3.4数据块 HDFS最小存储单元
3.5Client
3.6QJM共享存储系统(元数据共享和元数据同步) 实现HDFS高可用
JournalNode集群存储edit.log在每个机器上的JournalNode存储一份。
3.6主备切换控制器,DFSZKFailoverController(ZKFC)
同时构建 HealthMonitor(监控namenode的健康状况),和ActiveStandbyElector
防止假死的脑裂情况。当NN2想切换为Active,通过隔离fencing NN2会通过远程调用SSH 自身将standby转成Active的方法
如果不成功,就使用Q-9 强行把另一个Active namenode进程杀掉
第三种情况,通过namenode上的一个脚本,强制关机。
第三部分:Yarn产生背景
降低运行和维护成本,实现数据共享和计算资源共享
Yet another resource negotiator
也实现master/slave manager
Resource manger/NodeManager
Resource manger根据客户请求在nodemanager分配container,封装了CPU,MEM这些资源。Resource manger启动NodeManager 里面的Application Master。启动后的它与Resource manger通信,申请资源。 Resource manger申请了资源后,与nodemanger通信,让nodemanger启动任务(例如Mapreduce),同时container
也执行起来。任务启动后,会通过心跳告诉Application Master,任务的运行状态。Application master监控任务的执行,如果任务执行失败,就会让其他的nodemanger执行该任务。
此外,还有一个备份的Resource manger(standby Resource manager)
在Zookeeper创建临时节点,也通过选举机制变换状态。
Nodemanger
Applicationmaster
Container
(131:25注意听)
Zookeeper主要用于name node和resource manager选主过程。
name node1和namenode2都会向Zookeeper申请创建临时节点。如果namenode1创建成功,nn2就会创建失败。
另外,Yarn中的resource manager也会向Zookeeper申请创建临时节点。如果rm1创建成功,那么rm1就是active
rm2就是standby。如果rm1挂掉了,就会被删除。rm2重新创建临时节点,创建成功了,就会从standby切换为active;
Zookeeper充当了高可选举的功能。
网友评论