武陟做网站,游戏开发用什么语言,wordpress怎么做淘宝客,北京网站制作推广文章目录 背景高可用改造方案实施环境准备配置文件修改应用配置集群状态验证高可用验证 背景
假定目前有3台zookeeper服务器#xff0c;分别为zk-01/02/03#xff0c;DataNode服务器若干#xff1b;
目前HDFS集群的Namenode没有高可用配置#xff0c;Namenode和Secondary… 文章目录 背景高可用改造方案实施环境准备配置文件修改应用配置集群状态验证高可用验证 背景
假定目前有3台zookeeper服务器分别为zk-01/02/03DataNode服务器若干
目前HDFS集群的Namenode没有高可用配置Namenode和Secondary Namenode同时位于zk-03上
且Secondary Namenode的作用是辅助Namenode恢复并不是Namenode的高可用备份。
高可用改造
集群规划
zk-01zk-02zk-03Active NameNodeStandby NameNodeJournalNodeJournalNodeJournalNodeZK Failover ControllerZK Failover Controller
Hadoop版本为3.0之前仅支持启用单个Standby Namenode。Hadoop版本3.0后支持启用多个Standby Namenode。
方案实施
环境准备
关闭防火墙zk-01/02/03之间配置ssh免密登录配置jdk环境变量
配置文件修改 hadoop-2.7.3/etc/hadoop/core-site.xml configurationpropertynamefs.defaultFS/name!-- delete next line --valuehdfs://zk-03:9000/value !-- delete --!-- delete done --!-- add next line --valuehdfs://hacluster/value!-- add done --/propertypropertynameio.file.buffer.size/namevalue131072/value/propertypropertynamehadoop.tmp.dir/namevalue/data/0/hadoop/hadoop/tmp/value/property!-- add next 5 lines --propertynameha.zookeeper.quorum/namevaluezk-01:2181,zk-02:2181,zk-03:2181/valuedescription指定zookeeper地址/description/property!-- add done --
/configurationhadoop-2.7.3/etc/hadoop/hdfs-site.xml configuration!-- add next multi-lines --propertynamedfs.nameservices/namevaluehacluster/valuedescription指定hdfs的nameservice为ns需要和core-site.xml中的保持一致/description/propertypropertynamedfs.ha.namenodes.hacluster/namevaluenamenode1,namenode2/valuedescriptionhacluster下面有两个NameNode/description/propertypropertynamedfs.namenode.rpc-address.hacluster.namenode1/namevaluezk-01:9000/value/propertypropertynamedfs.namenode.http-address.hacluster.namenode1/namevaluezk-01:50070/value/propertypropertynamedfs.namenode.rpc-address.hacluster.namenode2/namevaluezk-02:9000/value/propertypropertynamedfs.namenode.http-address.hacluster.namenode2/namevaluezk-02:50070/value/propertypropertynamedfs.ha.fencing.methods/namevaluesshfence/valuedescription配置隔离机制,同一时刻只有一个Namenode对外响应/description/propertypropertynamedfs.ha.fencing.ssh.private-key-files/namevalue/home/hadoop/.ssh/id_rsa/valuedescription使用隔离机制时需要ssh免登陆/description/propertypropertynamedfs.ha.automatic-failover.enabled/namevaluetrue/valuedescription开启NameNode故障时自动切换/description/propertypropertynamedfs.client.failover.proxy.provider.hacluster/namevalueorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/valuedescription配置失败自动切换实现方式/description/propertypropertynamedfs.namenode.shared.edits.dir/namevalueqjournal://zk-01:8485;zk-02:8485;zk-03:8485/hacluster/valuedescription指定NameNode的元数据在JournalNode上的存放位置/description/propertypropertynamedfs.journalnode.edits.dir/namevalue/data/0/hadoop/hadoop/journal/valuedescription指定JournalNode在本地磁盘存放数据的位置/description/property!-- add done --propertynamedfs.replication/namevalue2/value/propertypropertynamedfs.namenode.name.dir/namevalue/data/0/hadoop/hadoop/name/value/propertypropertynamedfs.blocksize/namevalue268435456/value/propertypropertynamedfs.namenode.handler.count/namevalue100/value/propertypropertynamedfs.datanode.data.dir/name value/data/0/hadoop/hadoop/data,/data/1/hadoop/hadoop/data,/data/2/hadoop/hadoop/data,/data/3/hadoop/hadoop/data,/data/4/hadoop/hadoop/data,/data/5/hadoop/hadoop/data,/data/6/hadoop/hadoop/data,/data/7/hadoop/hadoop/data,/data/8/hadoop/hadoop/data,/data/9/hadoop/hadoop/data,/data/10/hadoop/hadoop/data,/data/11/hadoop/hadoop/data/value/property
/configuration应用配置
登录zk-03
$ scp -r /home/hadoop/hadoop-2.7.3 zk-02:/home/hadoop/
$ scp -r /home/hadoop/hadoop-2.7.3 zk-01:/home/hadoop/
# 停止现有HDFS集群的服务
$ hdfs/sbin/stop-dfs.shzk-01/02/03: 全部启动JournalNode
$ hdfs/sbin/hadoop-daemon.sh start journalnodezk-01: 初始化并启动namenode1、zkfc
# 初始化并启动namenode1
$ hdfs/bin/hdfs namenode -format
$ hdfs/bin/hdfs namenode -initializeSharedEdits
$ hdfs/sbin/hadoop-daemon.sh start namenode
# 在ZK中初始化ha集群的信息
$ hdfs/bin/hdfs zkfc -formatZKzk-02启动namenode2、zkfc
# 同步zk01上namenode的元数据信息并启动namenode2
$ hdfs/bin/hdfs namenode -bootstrapStandby
$ hdfs/sbin/hadoop-daemon.sh start namenode
# 在ZK02中同步ha集群的信息
$ hdfs/bin/hdfs zkfc -formatZKzk-01: 启动集群中其他服务包括datanode
$ hdfs/sbin/start-dfs.sh集群状态验证
登录zk-01/02分别执行jps 结果中应存在 PID1 JournalNodePID2 NameNodePID3 DFSZKFailoverController
若不存在JournalNode进程则执行: sbin/hadoop-daemon.sh start journalnode若不存在DFSZKFailoverController进程则执行: sbin/hadoop-daemon.sh start zkfc若不存在NameNode进程则执行: sbin/hadoop-daemon.sh start namenode
登录zk-03执行jps结果中应存在 PID JournalNode 若不存在JournalNode进程则执行: sbin/hadoop-daemon.sh start journalnode
在任意DataNode服务器上执行jps结果中应存在 PID1 DataNode 若不存在DataNode进程则执行: sbin/hadoop-daemon.sh start datanode
高可用验证 登录zk-01查看namenode1的状态 bin/hdfs haadmin -getServiceState namenode1输出结果应为active 若上述结果为standby可以执行如下命令将主namenode切换为namenode1 bin/hdfs haadmin -transitionToActive --forcemanual namenode1 再次执行命令查看namenode1和namenode2的状态 bin/hdfs haadmin -getServiceState namenode1输出应为active bin/hdfs haadmin -getServiceState namenode2输出应为standby。 登录zk-01停止namenode1bin/hdfs --daemon stop namenode zkfc进程应自动随之停止执行jps结果中不存在NameNode和DFSZKFailoverController。 查看namenode2的状态 bin/hdfs haadmin -getServiceState namenode2结果应为active。 重新启动namenode1 bin/hdfs --daemon start namenode 查看namenode1的状态 bin/hdfs haadmin -getServiceState namenode1结果应为standby。 此时可以使用第1步中切换主节点的命令将主节点切换到namenode1。