Zookeeper 集群搭建DC
Hadoop-HDFS
存储模型:字节
- 文件线性切割(Block): 偏移量 offset(byte , 中文)
- Block分散存储在集群节点中
- 单一文件Bloack大小一致,文件与文件可以不一致
- Block可以设置副本数,副本无序分散在不同的节点中
- 副本数不要超过节点数量
- 文件上传可以设置Block大小和副本数(资源不够开辟的进程)
- 已经上传的Block副本数可以调整,大小不变
- (2.x 128Mb Blocks)
- 只支持一次写入多次读取,同一时刻只有一个写入者
- 可以append追加数据
架构模型:
-
文件元数据MetaData 文件数据
- 元数据
- 数据本身
-
(主)NameNode节点保存文件元数据:单节点:单节点 posix
-
(从) DataNode节点保存文件Block数据:多节点
-
DataNode与NameNode保持心跳,提交Block列表
-
HdfsClient与NameNode交互元数据信息
-
HdfsClient与DataNode交互文件Block数据(CS)
-
DataNode利用服务器本地文件系统和存储数据块
stat anaconda.cfg ---->相当于文件的信息
Hadoop
NameNode(NN)
-
基于内存存储 【不会和磁盘发生交换(双向)】
- 只存在内存中
- 持久化(单向)
NameNode主要功能
接受客户端的读写服务
收集DataNode汇报的Block列表信息
NameNode保存metadata信息包括
文件overship和permission
文件大小,时间
(Block列表:Block偏移量)位置信息(持久化不存)
Block每副本位置(由DataNode上报)
NamaNode的持久化
- NameNode的metadata信息在启动后会加载到内存
- metdata存储到磁盘文件名为“fsimage”(时点备份) 恢复快
- Block位置信息不会保存到fsimage
- edits记录对metadata的操作日志…>Redis 写的快
- 二者之间产生的时间和过程?{format}
Zookeeper简单应用
zk角色有两种:leader 和 follower
leader选举机制
为用户提供数据提供数据的注册 查询功能
为用户提供数据节点的监听注册服务
与用户之间保持心跳以感知用户的状态
zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper-3.4.14/data
# the port at which the clients will connect
clientPort=2181
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=hadoop01:2888:3888
#server.2=hadoop02:2888:3888
#server.3=hadoop03:2888:3888
#rpc port 2888 leader select 3888
hadoop01设置 id
echo 1 > data/myid
分发到其他两台
scp -r /usr/local/zookeeper-3.4.14 root@192.168.200.129:/usr/local/
设置其他两台id
hadoop02#:echo 2 > data/myid
hadoop03#:echo 3 > data/myid
查看集群状态
bin/zkServer.sh status
选举机制:
全新的集群:(id大的leader)
1.启动第一台,发出选举信息,选自己,观望状态
2.第二台启动,选自己,各得一票,重新选 id大的选
运行中的集群
选举标准:数据版本。逻辑时钟。id大的
1.逻辑时钟小的选举结果被忽略,重新选举
2.统一逻辑时钟,id大的为leader
3.数据id相同的情况下,id大的胜出
常用的操作
./zkcli.sh
连接其他的主机:
connect hadoop02:2181
常见命令:
[zk: localhost:2181(CONNECTED) 6] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port