第五天 hadoop DataNode、节点的退役与服役

一、DataNode概述

client: 通过nn和dn访问HDFS上文件
		HDFS  API   : 1. FileSystem 分布式的文件系统
					  2. FSDataInputStream/FSDataOutputStream

NameNode:一个集群一个nn,整个HDFS的系统的总管,
		 管理HDFS上的数据目录树和文件元数据的信息(fsimage)  ---磁盘存储
		 记录用户操作日志edits  ---磁盘存储
		 负责监控所有的DataNode的健康状态(如果一个dn宕机了,nn将此移除列表,备份其上的数据)

		 一个数据块block ----- 150byte 存储 (不适合存储大量的小文件)

SecondaryNameNode:辅助nn工作的,可以实现nn数据的恢复(是nn的副本,不适合热备份)
		 主要工作是融合nn上的fsimage和多份edits,保证nn中持有最新的文件信息


DateNode: 一个slave节点上一个dn,存储真实的数据。
		 定时将其持有的数据汇报给nn。
		 以固定的block为基本单位进行 组织数据信息( 128MB )
		 
		 128 MB  ---- 1b  1万个小文件
		 128 MB  ---- 128 MB

		 保证数据的可靠性,将block以流水的方式进行备份

Replication: 数据的副本

<1>配置DataNode宕机时间

DataNode心跳机制:3秒和nn交互一次 (传递操作信息)
DataNode数据同步:1小时 触发一次  将 所有的块信息  发送给nn         

DataNode宕机的时间判断值:hdfs-default.xml
		recheck-interval * 2 +  interval * 10   =  10分钟  +  30秒

配置检测间隔: hdfs-site.xml
		默认是5分钟
	<property>
		  <name>dfs.namenode.heartbeat.recheck-interval</name>
		  <value>300000</value>  
	</property>

	<property>
	  <name>dfs.heartbeat.interval</name>
	  <value>3</value>
	</property>


	         保持连接
dn ----------------------------- nn(如果dn   10分钟  +  30秒 没有回馈 , dn认定此节点为宕机节点)

<2>DataNode的多目录配置

数据节点多目录中存储的数据时不一样的(数据的副本和备份)
扩充DataNode的存储容量

linux目录结构:/home  2G
			  /usb   1T

设置:hdfs-site.xml
	<property>
	     <name>dfs.datanode.data.dir</name>
	     <value>file://${hadoop.tmp.dir}/dfs/data,file://${hadoop.tmp.dir}/dfs/data2</value>
	</property>


core-site.xml   : hadoop.tmp.dir ------> /home/zhangsan/hadoop

二、节点的服役和退役

<1>节点的服役

当前集群规模扩充

将正在运行的节点从Hadoop集群上移除,影响其他节点,Hadoop集群的运行

步骤:
	1. 	购买一台新的机器(数据节点),克隆一台新的节点
		
	2.  修改配置
		hosts   /etc/hosts
		hostname  /etc/hostname
		ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-enxx
			
	3. 安装软件
		jdk/hadoop
		xcall.sh/rsynch2.sh  (主节点中脚本的for语句)
			
		
	注意:添加当前新节点的SSH无密登陆,要设置全面
		3.1 让master 访问当前新节点
		3.2 让resourceManager 访问当前新节点
			

	4. 服役(在主节点,NameNode)
		4.1 在配置文件中创建一个服役的节点的列表配置文件
			touch /opt/programfile/hadoop/etc/hadoop/dfs.hosts

			vi /opt/programfile/hadoop/etc/hadoop/dfs.hosts
				
			服役节点列表:
					s201
					... ...
					s204(添加的节点)

		4.2 将此文件告知hadoop集群(在系统配置文件中,配置此参数)
			将服役列表配置文件的路径添加到hdfs-site.xml中

			<property>
			  <name>dfs.hosts</name>
			  <value>/opt/programfile/hadoop/etc/hadoop/dfs.hosts</value> 
			</property>

		  注意:分发配置文件

		4.3 刷新节点(NameNode,读取配置文件中的内容)
			hdfs dfsadmin -refreshNodes
	

		4.4 web查看此节点
			
		4.5 更新ResourceManager
			yarn rmadmin -refreshNodes				

		4.6 在namenode配置文件etc中修改slaves  (配置子节点列表)
			
		4.7 在新的节点上启动进程(datanode/nodeManager)
			hadoop-daemon.sh start  datanode   
			yarn-daemon.sh start nodemanager  				

		4.8 web查看此节点

<2>节点的退役

当前集群规模缩减

步骤:
	1. 在namenode的配置文件中,创建退役的配置文件 : dfs.hosts.exclude

		touch /opt/programfile/hadoop/etc/hadoop/dfs.hosts.exclude

		vi /opt/programfile/hadoop/etc/hadoop/dfs.hosts.exclude
				
		服役节点列表:
				s202(退役的节点)

	2. 在nameNode中的hdfs-site.xml中添加退役列表
		<property>
		  <name>dfs.hosts.exclude</name>
		  <value>/opt/programfile/hadoop/etc/hadoop/dfs.hosts.exclude</value>
		</property> 

	3. 刷新NameNode节点(NameNode,读取配置文件中的内容)
			hdfs dfsadmin -refreshNodes
		
	   刷新resourcemanager节点
			yarn rmadmin -refreshNodes	

	4. web查看此节点
			
	5. 等待节点完全退役后,停止相关的进程
		hadoop-daemon.sh stop datanode   
		yarn-daemon.sh  stop nodemanager  			

	6. 更新服役文件	
		将s202(退役的节点)从服役列表中删除

	7. 刷新NameNode节点(NameNode,读取配置文件中的内容)
			hdfs dfsadmin -refreshNodes
		
	   刷新resourcemanager节点
			yarn rmadmin -refreshNodes
				
	8. web查看此节点

三、HDFS常见操作

<1>Hadoop归档 (HDFS不适合存储大量的小文件) (NameNode的优化)

1. 问题
	NameNode存储一个数据需要消耗150byte,内存资源比较昂贵,普遍都128G/256G
	NameNode不管DataNode中存储的数据大小,每一个数据Block都占用150byte
	小文件较多,造成namenode中内存资源的浪费

2. 归档
	将多个小文件看成一个大文件,给付给Namenode维护	
	
	步骤:
		liux上:小文件
			~e1.xml
			~e2.xml
			~e3.xml
			~myfile.txt
			~newfile.txt

		HDFS存储:
			1. 启动yarn进程
				start-yarn.sh	
			2. 使用归档命令  :  har filesystem  (namenode把文档文件当成一个单独的文件,存储多个小文件)
				hadoop archive -archiveName zhangsan.har -p   /home/zhangsan/ ...    /home/lisi
																				     myfiles.har					
			3. 	查看、复制、移动、删除等操作
				hadoop fs -lsr -mv -cp -rm   har:///zhangsan.har/myfile.txt

<2>回收站

2.1 启动回收站: core-site.xml
	回收站数据的存储时间:分钟
		<property>
		  <name>fs.trash.interval</name>
		  <value>2</value>
		</property>
	
	检查回收站是否可以回收的时间:分钟
		<property>
		  <name>fs.trash.checkpoint.interval</name>
		  <value>1</value>
		</property>	

	
2.2 修改回收站的所有者
		<property>
  			<name>hadoop.http.staticuser.user</name>
  			<value>dr.who</value>
		</property>

2.3 回收站的位置
	/user/用户名称/.Trash/current/删除文件的位置和名称

2.4 恢复数据
	从回收站进行数据的移动或者拷贝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值