HDFS集群搭建-HA模式概念,伪分布式到完全分布式,HDFS- Federation解决方案等知识点的讲解。
博主语录:一文精讲一个知识点,多了你记不住,一句废话都没有
经典语录:你要灭一个人,一是骂杀,一是捧杀
伪分布式: 在一个节点启动所有的角色: NN,DN,SNN
基础环境
部署配置 1)角色在哪里启动 NN: core-site.xml: fs.defaultFS hdfs://node01:9000 DN: slaves: node01 SNN: hdfs-site.xml: dfs.namenode.secondary.http.address node01:50090
2) 角色启动时的细节配置: dfs.namenode.name.dir dfs.datanode.data.dir
首先把node01停止,运行stop-dfs.sh ssh 免密是为了什么?
为了免密启动start-dfs.sh
注意:在哪里启动,那台就要对别人公开自己的公钥
这一台有什么特殊要求吗?
没有
免密配置: node02~node04:
rpm -i jdk-8u181-linux-x64.rpm
node01:
scp /root/.ssh/id_dsa.pub node02:/root/.ssh/node01.pub
scp /root/.ssh/id_dsa.pub node03:/root/.ssh/node01.pub
scp /root/.ssh/id_dsa.pub node04:/root/.ssh/node01.pub
node02:
cd ~/.ssh
cat node01.pub >> authorized_keys
node03:
cd ~/.ssh
cat node01.pub >> authorized_keys
node04:
cd ~/.ssh
cat node01.pub >> authorized_keys
node01:
cd $HADOOP/etc/hadoop
vi core-site.xml
不需要改
vi hdfs-site.xml
<property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/var/bigdata/hadoop/full/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/var/bigdata/hadoop/full/dfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node02:50090</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>/var/bigdata/hadoop/full/dfs/secondary</value> </property>
vi slaves
node02 node03 node04
分发:
cd /opt
scp -r ./bigdata/ node02:`pwd`
scp -r ./bigdata/ node03:`pwd`
scp -r ./bigdata/ node04:`pwd`
格式化启动
hdfs namenode -format
start-dfs.sh
单点故障,集群整体不可用
压力过大,内存受限
高可用方案:HA(High Available)
多个NN,主备切换,主
联帮机制: Federation(元数据分片)
多个NN,管理不同的元数据
Namenode元数据:
1、cli交互操作mkdir /a
2、dn提交的block
HA:数据同步(cli的操作)
分布式:强一致性破坏可用性
ZK:
1、目录树结构:x节点B抢锁
2、事件机制-》call back watch监控
3、临时节点
注意:在HA模式中没有SNN,Standby角色滚动Fsimage,通过SNN滚动是非HA模式
CAP原则:
Paxos 算法
简化思路:
最简单的自我协调实现:主从
主的选举:明确节点数量和权重
主从的职能:
HA方案:
多台NN主备模式,Active和Standby状态
增加journalnode角色(>3台),负责同步NN的editlog
增加zkfc角色(与NN同台),通过zookeeper集群协调NN的主从选举和切换
DN同时向NNs汇报block清单