Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式

简介: Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式

在这里插入图片描述

1.不同集群之间的数据复制

在我们实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷贝到测试集群,那么就需要我们在多个集群之间进行数据的==远程拷贝==,hadoop自带也有命令可以帮我们实现这个功能。

1.1.集群内部文件拷贝scp

cd /export/softwares/
scp -r jdk-8u141-linux-x64.tar.gz root@node2:/export/

1.2.跨集群之间的数据拷贝distcp

bin/hadoop distcp hdfs://node1:8020/jdk-8u141-linux-x64.tar.gz  hdfs://cluster2:9000/

2.Archive档案的使用

HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode占用内存,如果存在大量的小文件,它们会吃掉NameNode节点的大量==内存==。
==Hadoop Archives==可以有效的处理以上问题,它可以把多个文件==归档==成为一个文件,归档成一个文件后还可以透明的访问每一个文件。

2.1.如何创建Archive

Usage: hadoop archive -archiveName name -p <parent> <src>* <dest>

其中-archiveName是指要创建的存档的名称。比如test.har,archive的名字的扩展名应该是*.har。
-p参数指定文件存档文件(src)的相对路径。
举个例子:-p /foo/bar a/b/c e/f/g
这里的/foo/bar是a/b/c与e/f/g的父路径,
所以完整路径为/foo/bar/a/b/c与/foo/bar/e/f/g
例如:如果你只想存档一个目录/input下的所有文件:
hadoop archive -archiveName test.har -p /input /outputdir
这样就会在/outputdir目录下创建一个名为test.har的存档文件。

2.2.如何查看Archive

首先我们来看下创建好的har文件。使用如下的命令:

hadoop fs -ls /outputdir/test.har

在这里插入图片描述

这里可以看到har文件包括:两个索引文件,多个part文件(本例只有一个)以及一个标识成功与否的文件。==part==文件是多个原文件的集合,根据index文件去找到原文件。

例如上述的三个小文件1.txt 2.txt 3.txt内容分别为1,2,3。进行archive操作之后,三个小文件就归档到test.har里的part-0一个文件里。
在这里插入图片描述
在这里插入图片描述

archive作为文件系统层暴露给外界。所以所有的fs shell命令都能在archive上运行,但是要使用不同的URI。==Hadoop Archives==的URI是:

har://scheme-hostname:port/archivepath/fileinarchive 

scheme-hostname格式为hdfs-域名:端口,如果没有提供scheme-hostname,它会使用默认的文件系统。这种情况下URI是这种形式:

har:///archivepath/fileinarchive   

如果用har uri去访问的话,索引、标识等文件就会
==隐藏==起来,只显示创建档案之前的原文件:

在这里插入图片描述
在这里插入图片描述

2.3.如何解压Archive

按顺序解压存档(串行):

Hadoop fs -cp har:///user/zoo/foo.har/dir1  hdfs:/user/zoo/newdir

要并行解压存档,请使用DistCp:

hadoop distcp har:///user/zoo/foo.har/dir1  hdfs:/user/zoo/newdir

2.4.Archive注意事项

1.Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。Hadoop archive的扩展名是*.har;
2.创建archives本质是运行一个Map/Reduce任务,所以应该在Hadoop集群上运行创建档案的命令;
3.创建archive文件要消耗和原文件一样多的硬盘空间;
4.archive文件不支持压缩,尽管archive文件看起来像已经被压缩过;
5.archive文件一旦创建就无法改变,要修改的话,需要创建新的archive文件。事实上,一般不会再对存档后的文件进行修改,因为它们是定期存档的,比如每周或每日;
6.当创建archive时,源文件不会被更改或删除;

3. HDFS安全模式

3.1.安全模式概述

安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求,是一种==保护机制==,用于保证集群中的数据块的安全性。
在==NameNode主节点启动时==,HDFS首先进入安全模式,集群会开始检查数据块的完整性。DataNode在启动的时候会向namenode汇报可用的block信息,当整个系统达到安全标准时,==HDFS自动离开==安全模式。
假设我们设置的副本数(即参数dfs.replication)是5,那么在Datanode上就应该有5个副本存在,假设只存在3个副本,那么比例就是3/5=0.6。在配置文件hdfs-default.xml中定义了一个最小的副本的副本率(即参数dfs.namenode.safemode.threshold-pct)0.999。
我们的副本率0.6明显小于0.99,因此系统会自动的复制副本到其他的DataNode,使得副本率不小于0.999.如果系统中有8个副本,超过我们设定的5个副本,那么系统也会删除多余的3个副本。
如果HDFS处于安全模式下,不允许HDFS客户端进行任何修改文件的操作,包括上传文件,删除文件,重命名,创建文件夹,修改副本数等操作。

3.2.安全模式配置

与安全模式相关主要配置在hdfs-site.xml文件中,主要有下面几个属性:
dfs.namenode.replication.min: 每个数据块最小副本数量,默认为1. 在上传文件时,达到最小副本数,就认为上传是成功的。
dfs.namenode.safemode.threshold-pct: 达到最小副本数的数据块的百分比。默认为0.999f。当小于这个比例,那就将系统切换成安全模式,对数据块进行复制;当大于该比例时,就离开安全模式,说明系统有足够的数据块副本数,可以对外提供服务。小于等于0意味不进入安全模式,大于1意味一直处于安全模式。
dfs.namenode.safemode.min.datanodes: 离开安全模式的最小可用datanode数量要求,默认为0.也就是即使所有datanode都不可用,仍然可以离开安全模式。
dfs.namenode.safemode.extension: 当集群可用block比例,可用datanode都达到要求之后,如果在extension配置的时间段之后依然能满足要求,此时集群才离开安全模式。单位为毫秒,默认为30000.也就是当满足条件并且能够维持30秒之后,离开安全模式。 这个配置主要是对集群稳定程度做进一步的确认。避免达到要求后马上又不符合安全标准。
总结一下,要离开安全模式,需要满足以下条件:

1)达到副本数量要求的block比例满足要求;
2)可用的datanode节点数满足配置的数量要求;
3) 1、2两个条件满足后维持的时间达到配置的要求

3.安全模式命令
手动进入安全模式

hdfs dfsadmin -safemode enter

手动进入安全模式对于集群维护或者升级的时候非常有用,因为这时候HDFS上的数据是只读的。手动退出安全模式可以用下面命令:

hdfs dfsadmin -safemode leave
目录
相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
149 6
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
65 2
|
9天前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】部署Hadoop的本地模式
本文介绍了Hadoop的目录结构及本地模式部署方法,包括解压安装、设置环境变量、配置Hadoop参数等步骤,并通过一个简单的WordCount程序示例,演示了如何在本地模式下运行MapReduce任务。
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
33 3
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
57 3
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
63 2
|
18天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
57 1
|
1月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
55 1
|
1月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
75 5
|
1月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
36 4

相关实验场景

更多