Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务
1、zookeeper是为别的分布式程序服务的
2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
4、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
a、管理(存储,读取)用户程序提交的数据;
b、并为用户程序提供数据节点监听服务;
zookeeper的特性:
1、一个leader,多个follower
2、全局数据一致性:每一个server都保存了一份相同的数据副本,client端无论连接哪个server都可以获取到最新的数据。
3、数据更新,分布式数据写,都是有leader来完成的。
4、数据更新顺序,来自同一个client的更新请求会按其发送的顺序依次执行
5、数据更新的原子性,一次数据更新要么成功,要么失败。
6、数据实时性,在一定的时间范围内,client能读取到最新的数据。
hadoop的高可用:
集群规划:
企业级的集群规划:
namenode
zkfc 1
resourcemanager 1
namenode
zkfc
resourcemanager 1
datanode
nodemanager
journalnode 3
zookeeper 3
测试用集群:
hadoop05 192.168.137.112 datanode nodemanager journalnode zookeeper namenode resourcemanager zkfc
hadoop06 192.168.137.113 datanode nodemanager journalnode zookeeper namenode resourcemanager zkfc
hadoop07 192.168.137.114 datanode nodemanager journalnode zookeeper
配置hadoop的高可用集群的配置文件
1、hadoop-env.sh
2、core-site.xml
fs.defaultFS
hdfs://gp1809
hadoop.tmp.dir
/usr/local/hadoopdata/tmp
ha.zookeeper.quorum
hadoop05:2181,hadoop06:2181,hadoop07:2181
3、hdfs-site.xml
dfs.nameservices
gp1809
dfs.ha.namenodes.gp1809
nn1,nn2
dfs.namenode.rpc-address.gp1809.nn1
hadoop05:9000
dfs.namenode.rpc-address.gp1809.nn2
hadoop06:9000
dfs.namenode.http-address.gp1809.nn1
hadoop05:50070
dfs.namenode.http-address.gp1809.nn2
hadoop06:50070
dfs.namenode.shared.edits.dir
qjournal://hadoop05:8485;hadoop06:8485;hadoop07:8485/gp1809
dfs.client.failover.proxy.provider.gp1809
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
dfs.journalnode.edits.dir
/usr/local/hadoopdata/journaldata
dfs.ha.automatic-failover.enabled
true
4、yarn-site.xml
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.ha.automatic-failover.enabled
true
yarn.resourcemanager.cluster-id
qianfeng
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
hadoop05
yarn.resourcemanager.hostname.rm2
hadoop06
yarn.resourcemanager.zk-address
hadoop05:2181,hadoop06:2181,hadoop07:2181
分发:
分发文件:
scp core-site.xml hdfs-site.xml yarn-site.xml root@hadoop06:$PWD
重新初始化集群之前需要删除之前的配置目录
HA启动及测试:
注意:严格按照以下的顺序进行启动:
1、启动zookeeper集群:(分别在hadoop05、hadoop06、hadoop07上启动)
也可以自定义批量启动脚本
2、启动journalnode
/usr/local/hadoop-2.7.1/sbin/hadoop-daemon.sh start journalnode
3、格式化hdfs
初始化namenode
hdfs namenode -format
4、启动namenode
5、同步namenode的数据
同步数据的方式:
1、直接copy
scp -r /usr/local/hadoopdata/tmp/dfs root@hadoop06:/usr/local/hadoopdata/tmp/
2、同步命令
在standby的namenode所在机器上执行:
hdfs namenode -bootstrapStandby
6、格式化ZKFC
hdfs zkfc -formatZK
7、启动hdfs
start-dfs.sh
8、启动yarn
start-yarn.sh