hdfs的八大安全和可靠策略总结和设计基础与目标[通俗易懂]

hdfs的八大安全和可靠策略总结和设计基础与目标[通俗易懂]hdfs的八大安全和可靠策略总结和设计基础与目标

大家好,又见面了,我是你们的朋友全栈君。

hdfs 全称:Hadoop Distributed File System Hadoop分布式文件系统

设计基础与目标:

a: 硬件错误是常态。因此需要冗余

 冗余对hadoop来说不是额外功能,而是本身就需要的一个功能,这个很好理解,就是因为各个节点容易断掉,为了数据的安全性和可维护性,故需要冗余。

b:内存的不稳定,cpu过热,硬盘损坏等等,节点duan掉。 
c:流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析,而不是事务处理

hadoop很少处理oltp(偶尔随机性的读写一些数据)

d:大规模数据集 
e:简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即文件时一经写入,关闭,就再也不能修改了

如果要修改,只能把原来的数据删除了,再插入。

f: 程序采用数据就近原则分配节点执行

对于一个系统,安全可靠是企业的首选,那么hadoop给我们提供了那些安全策略呢?

(1):冗余副本策略

 可以在hdfs-site.xml中设置复制因子指定副本数量
    所有数据库都有副本
    Datanode启动时,遍历本地文件系统,产生一份hdsf数据库和本地文件的对应关系列表(blockreport)汇报给namednode,namenode会将列表和自己的元数据记录的数据是否相符做出措施
   (冗余的数量过小,难保证数据安全,备份过多,会导致空间的利用率过低,影响速度,降低性能)

(2)机架策略

机架一般放在不同的机架上,机架间带宽要比机架内带宽要小.
HDFS的"机架感知",交换机之间的通讯问题。
节点间传递信息包,以感知是否存在同一个机架上。
一般在本地机架上存放一个副本,在其它机架上再存放别的副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率(冗余策略)。
这样的话防止整个机架失败的时候,数据找不到冗余了隐患。

(3)心跳机制

 Namenode周期性的从datanode接收心跳信号和块报告。
    数据节点会周期性的向Namenode发送blockreport,向它在本地文件系统中数据块和文件的对应关系。
    Namenode会根据接收到的心跳信号和快报告验证元数据有没失效,如果不一致,则进行相应的修正和冗余的策略。
    Namenode根据块报告验证元数据。
    没有按时发送心跳的datanode会被标记为宕机,不会再给它任何的I/O请求。
    如果datanode失效造成的副本数量下降,并且低于预先设计的阀值(在那个地方设置的阈值),Namenode会检测出这些数据块,并在合适的时机进行重新复制。
    引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大等。

(4)安全模式

Namenode启动时会先经过一个"安全模式"阶段。
    安全模式阶段不会产生数据写。
    在此阶段Namenode接受各个datanode的报告(blockreport),当数据块达到最小副本以上时,也就是Datanode的副本数,会被认为是"安全"的。
    在一定比例(可设置)的数据块被确定为"安全"后,再过若干时间,安全模式结束。
    当检测到副本数不足数据块,该快会被直接复制到达最小副本数。

(5)校验和

在文件创立时,每个数据块产生校验和。
    校验和会作为单独的一个隐藏文件保存在命名空间下。
    客户端获取数据时可以检查校验是否相同,从而发现数据块是否损坏。
    如果正在读取的数据块损坏,则可以继续读取其它的副本如果发现错误,则在快报告中向namenode汇报,并做出相应的措施

(6)回收站

 删除文件时,其实是放入了回收站/trash。
    回收站里的文件可以快速恢复。
    可以设置一个时间阀值,当回收站里文件的存放时间超过这个阀值,就会被彻底的删除,并且释放占用的数据块。

(7)元数据保护

映像文件和事务日志是namenode的核心数据,可以配置为拥有多个副本。hadoop 2.x之后就是secondaryNamenode
    副本会降低Namenode的处理速度,但增加安全性。
    如果Namenode依然是单点,如果发生故障要手工切换。使用zookeeper热备就会自动切换处于standby的namenode

(8)快照机制

可能随着数据越来越大,现有的节点已经不能满足当前需求,需要新增加节点以扩充加快的速度,那么怎么增加新的点呢,只能去停掉整个集群然后操作吗?那其实也可以的,只要你的费用支持的起。 

一般来说只要重新加数台机器,做以下步骤:

a:在新节点上安装好hadoop
b:把namenode的有关配置文件复制到该节点
c:修改master和slaves文件,增加节点(每一个节点都要改,采用脚本技术)
d:设置ssh免密码登陆该节点
e:单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)
f:运行start-balancer.sh进行数据负载均衡

这样就能岁数据量的增加而不断加机器了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106125.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Swift-Moya 源码解析

    Swift-Moya 源码解析1 Moya 的定义 Moya 是一个高度抽象的网络库 他的理念是让你不用关心网络请求的底层的实现细节 只用定义你关心的业务 且 Moya 采用桥接和组合来进行封装 默认桥接了 Alamofire 使得 Moya 非常好扩展 让你不用修改 Moya 源码就可以轻易定制 官方给出几个 Moya 主要优点 编译时检查 APIendpoint 权限让你使用枚举定义各种不同 Target endpoints 把 stubs 当做一等公民对待 因此测试超级简单 2 Moya 的使用 Moya 的使用分成几步 首先需要先自定义一个

    2025年10月9日
    2
  • 常见电商项目的数据库表设计(MySQL版)

    常见电商项目的数据库表设计(MySQL版)常见电商项目的数据库表设计(MySQL版)简介:目的:电商常用功能模块的数据库设计常见问题的数据库解决方案环境:MySQL5.7图形客户端,SQLyogLinux模块:用户:注册、登陆商品:浏览、管理订单:生成、管理仓配:库存、管理电商实例数据库结构设计:电商项目用户模块用户表涉及的实体改进1:第三范式:将依赖传递的列分离出来。比如:登录…

    2022年6月20日
    32
  • 所阅读的ASP.NET 2.0文章

    所阅读的ASP.NET 2.0文章

    2021年7月22日
    61
  • 钩子原理及实例:实现键盘钩子截获密码

    钩子原理及实例:实现键盘钩子截获密码钩子原理及实例:利用鼠标键盘钩子截获密码钩子原理 钩子能截获系统并得理发送给其它应用程序的消息,能完成一般程序无法完成的功能。Windows系统是建立在事件驱动的机制上的,也就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的种类很多,每种钩子可以截获并处

    2022年6月9日
    32
  • java定时任务schedule_timer schedule参数

    java定时任务schedule_timer schedule参数该楼层疑似违规已被系统折叠隐藏此楼查看此楼==============java定时器可以用作,定时刷新缓存等。。。。。。。。。。。timer.schedule(task,firstTime,period);task参数是,TimerTask类,在包:importjava.util.TimerTask.使用者要继承该类,并实现publicvoidrun()方法,因为Tim…

    2022年9月16日
    6
  • dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器

    dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器修改前必读:1、修改编辑器后会造成以前发过的帖子再次进行修改时(也就是编辑帖子操作)出现很多被DZ重写过的html标签,不方便进行修改,所以尽量在安装DZ后立刻进行修改。(当然,如果你有能力重写代码的话就可以无视啦)2、修改前请先在本地进行尝试或备份相关文件。需要修改的文件:templatedefaultforumpost_editor_body.htmtemplatedefaultforumpo…

    2022年5月12日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号