Hadoop入门学习笔记-第二天 (HDFS:NodeName高可用集群配置)

说明:
hdfs:nn单点故障,压力过大,内存受限,扩展受阻。
hdfs ha :主备切换方式解决单点故障
hdfs Federation联邦:解决鸭梨过大。支持水平扩展,每个nn分管一部分目录,所有nn共享dn资源。
使用JN集群保证数据一致性,使用zk集群解决主备切换

1.若使用主备节点,常常存在的问题:强一致性,若一致性。
强一致性(同步):nn主节点必须等到nn副本返回成功后,才能向客户端返回成功。主和副本之间可能会有如网络延迟、阻塞等问题,就造成了nn的不可用,违背了HA初衷。
弱一致性(异步):采用异步方式,nn主无需等待nn副本返回成功,则会有nn副本数据同步失败,造成两个nn数据不一致。
2.JN(journalnode)集群:为了解决nn一致性,将使用jn 保持数据一致。namenode 的元数据通过这个集群共享。
当Active节点执行任何名称空间修改时,它会将修改记录持久地记录到大多数这些JN中。待机节点能够从JN读取编辑,并且不断观察它们对编辑日志的更改。
当备用节点看到编辑时,它会将它们应用到自己的命名空间。这可确保在发生故障转移之前完全同步命名空间状态,保证两个nn数据最终的一致性。

3.ZK集群:解决nn主备自动切换,当nn主节点挂掉,通过zk自动将nn副本升级为主节点。

准备三台zk服务器,安装zk并启动服务集群,比较简单,不知道的网上百度

nameNode 高 可 用 配置
1.配置高可用服务名称
编辑hdfs-site.xml


dfs.nameservices
cluster1
提供服务的NS逻辑名称

2.配置jn集群
2.1 编辑hdfs-site.xml 配置jn服务器列表及共享目录位置 dfs.namenode.shared.edits.dir


dfs.namenode.shared.edits.dir
qjournal://nameNode10.com:8485;dataNode20.com:8485;dataNode30.com:8485/cluster

2.2指定 jn 物理储存路径 dfs.journalnode.edits.dir

dfs.journalnode.edits.dir
/software/data/hadoop/data/tmp/journal
指定 jn 物理储存路径 dfs.journalnode.edits.dir

3.3启动hdfs服务,分别在三台机器执行jps 验证服务是否启动成功
2.zk和集群配置
编辑hdfs-site.xml
1.指定nn服务器服务器列表(实际应用中根据zk自动切换主备)


dfs.ha.namenodes.cluster1
nn10,nn40
指定nn列表

2.侦听的每个NameNode的RPC地址。

dfs.namenode.rpc-address.cluster1.nn10
nameNode10.com:8020
侦听的每个NameNode的RPC地址


dfs.namenode.rpc-address.cluster1.nn40
nameNode40.com:8020

3.侦听的每个NameNode的http地址。(如果启用https,还需要配置https)

dfs.namenode.http-address.cluster1.nn10
nameNode10.com:9870
侦听的每个NameNode的http地址


dfs.namenode.http-address.cluster1.nn40
nameNode40.com:9870

4.确定主节点配置(对于第一次调用,它同时调用所有名称节点以确定活动的名称节点,之后便直接调用主节点) dfs.client.failover.proxy.provider.[nameservice ID]


dfs.client.failover.proxy.provider.cluster1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

5.配置免密方式(shell和sshfence)路径填写,你.ssh 位置目录文件
<!–配置免密方式(shell和sshfence)路径填写,你.ssh 位置目录文件—>

dfs.ha.fencing.methods
sshfence


dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa

6.其他配置


	dfs.ha.automatic-failover.enabled
	true



	dfs.namenode.name.dir
	/software/data/hadoop/data/dfs/name


	dfs.datanode.data.dir
	/software/data/hadoop/data/dfs/data


	dfs.webhdfs.enabled
	true


    
	dfs.journalnode.http-address
	0.0.0.0:8480
    
    
	dfs.journalnode.rpc-address
	0.0.0.0:8485
    
    
	ha.zookeeper.quorum
	nameNode10.com:2181,dataNode20.com:2181,nameNode40.com:2181
    

3.配置core-site.xml

fs.defaultFS
hdfs://cluster1


hadoop.tmp.dir
/software/data/hadoop/temp


io.file.buffer.size
131072


hadoop.proxyuser.hadoop.hosts



hadoop.proxyuser.hadoop.groups



ha.zookeeper.quorum
nameNode10.com:2181,nameNode40.com:2181,dataNode20.com:2181

手动激活nn:hdfs haadmin -transitionToActive -forcemanual nn10

单步启动流程
分别在三台机器上启动 journalnode
/opt/hadoop/sbin/hadoop-daemon.sh start journalnode

//在第一台机器上进行格式化namenode (删除之前的文件)
[hadoop@bigdata11 opt]$ hdfs namenode -format

//在第一台启动namenode
[hadoop@bigdata11 ~]$ /opt/hadoop/sbin/hadoop-daemon.sh start namenode

//在第二个namenode节点上执行bootstarpStandby
[hadoop@bigdata12 opt]$ hdfs namenode -bootstrapStandby

zk格式化:hdfs zkfc -formatZK
单独启动zkfc hadoop-daemon.sh start zkfc

yum -y install psmisc 安装工具自动切换

hdfs haadmin -getServiceState nn1 查看服务状态(是Active还是Standby)

你可能感兴趣的:(Hadoop入门学习笔记,hadoop,java,大数据,hdfs)