首页 > 技术文章 > HADOOP之HDFS环境搭建(二)

bigdata-familyMeals 2020-12-02 22:53 原文

前提:四台机器都要有java环境、hadoop环境、

node01:
        cd $HADOOP/etc/hadoop
      #NN角色 vi core
-site.xml 不需要改
      # 配置HDFS 副本数为2 nn目录 dn目录 secondary_namenode启动节点以及目录 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

 

node01  :NameNode

 

 

 

node02 :SecondaryNameNode、DataNode

 

 

 

 

node03 :DataNode

 

 

 

 

node04 :DataNode

 

 

 

 

 NN问题: client找NN进行创建文件、上传文件操作,DN要给NN汇报block信息。NN会有压力,如果挂掉整体不可用。

解决思路:

1.主从集群(相当于三个zookeeper,选主,每次只有一台工作)

主从集群:结构相对简单,主与从协作
主:单点,数据一致好掌握
问题:
单点故障,集群整体不可用
压力过大,内存受限

  

2.主备(HDFS使用)

单点故障解决方式:
	高可用方案:HA(High Available)
	多个NN,主备切换,主压力过大,内存受限:
	联帮机制: Federation(元数据分片)
	多个NN,管理不同的元数据
HADOOP 2.x 只支持HA的一主一备,3.x支持一主多备

  

 

 

3.HDFS-HA解决方案

 图分两部分看

下半部,手动HA,包含: client、NNactive、NN Standby、3台主从JN、 4台DN(主要是保证数据同步)

1.DN会向两台NN同时汇报,所有DN数据是同步的。
2.client只能向NNactive汇报,当NNactive挂掉,链接另外一台NN,那么存在数据丢失,所以需要增加JN,来持久化数据,既:clinet向NNactive写入数据,NNactive会同时写入JN,当NNactive挂掉,另外一台升级为active,会从JN中获取数据。




上半部,自动HA,包含:NNactive、NN Standby、FC active、FC Standby、三台ZK (选主active)

1.当NNactive挂掉、FC active会与ZK解锁、同时回调FC Standby、FC Standby 1.去ZK抢锁,2.访问原来的NNactive状态是否挂掉 3.升级NN Standby 为active
2.当FC active挂掉、 与zk断开连接,同时临时锁断开、同时回调FC Standby、FC Standby 1.去ZK抢锁,2.访问原来的NNactive状态、如果是active,则降级为standby 3.升级NN Standby 为active
3.当NNactive、FC active 状态ok ,与ZK访问不通、锁断开、FC Standby 1.抢锁 2.访问原来的NNactive状态,发现不通,处于脑裂,这种问题基本属于网络设计问题

 

 

 4.HDFS-HA解决方案

CAP原则:

  • 一致性         : 多个节点数据是一致的
  • 可用性         : 每个节点数据都是可用的
  • 分区容忍性  : 当某一节点挂掉时,允许服务可用,可以往其他节点写入

注意

  • 分布式:强一致性破坏可用性,就是其中一台挂掉,那么其他就必须阻塞,不能写入数据。

ZK和JN区别

  • zk和JN技术相同 但是解决不同问题
  • zk解决选主、加锁问题
  • JN解决多台机器数据同步问题

 

 

 

解决NN压力过大、内存受限问题

元数据分治,复用DN存储
元数据访问隔离性
DN目录隔离block

比如:a部门、b部门、c部门。
1.正常情况下,我们提供一个接口,所有部门都访问一个NN,造成改NN压力过大。
2.我们可以在搞三台NN分别:NNA、NNB、NNC,每个部门一个NN,在datanode里面建设三个文件目录,用来隔离部门之间不同的数据。
3.如果再来一个部门,需要查看所有部门的数据,我们可以在所有NN之上抽象一层,只需遍历对应NN,就可以查询所有数据

  

推荐阅读