加入收藏 | 设为首页 | 会员中心 | 我要投稿 柳州站长网 (https://www.0772zz.cn/)- 基础存储、数据迁移、云安全、数据计算、数据湖!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

应对SolarWinds黑客攻击的技巧

发布时间:2021-01-27 13:26:44 所属栏目:外闻 来源:互联网
导读:2.7.1 HDFS-HA工作要点 元数据管理方式需要改变 内存中各自保存一份元数据。 Edits 日志只有 Active 状态的 NameNode 节点可以做写操作。 两个 NameNode 都可以读取 Edits。 共享的 Edits 放在一个共享存储中管理(qjournal 或 NFS)。 需要一个状态管理功能模

2.7.1 HDFS-HA工作要点

元数据管理方式需要改变

内存中各自保存一份元数据。

Edits 日志只有 Active 状态的 NameNode 节点可以做写操作。

两个 NameNode 都可以读取 Edits。

共享的 Edits 放在一个共享存储中管理(qjournal 或 NFS)。

需要一个状态管理功能模块

实现了一个ZKFC,常驻在每一个namenode所在的节点,每一个ZKFC负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由ZKFC来负责切换,切换时需要防止brain split现象的发生。

必须保证两个 NameNode 之间能够ssh无密码登录

防脑裂,同一时刻仅仅有一个 NameNode 对外提供服务。

2.7.2 ZooKeeper

ZooKeeper 提供如下功能:

  1. 故障检测:集群中每个 NameNode 在 ZooKeeper 中维护一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。
  2. 现役NameNode选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。

2.7.3 ZKFC进程

在 NameNode 主机上有个 ZKFC(ZKFailoverController) 这样的ZK客户端,负责监视管理 NameNode 状态。ZKFC负责:

  1. 健康监测:ZKFC周期性检测同主机下NameNode监控撞库。
  2. ZooKeeper会话管理:NameNode健康时候ZKFC保持跟ZK集群会话打开状态,ZKFC还持有个znode锁,如果会话终止,锁节点将自动删除。
  3. 基于ZooKeeper的选择:ZKFC发现本地NameNode健康前提下会尝试获取znode锁,获得成功则Active状态。

3 MapReduce

MapReduce是个分布式运算程序的编程框架,是基于 Hadoop 的 数据分析计算核心框架。处理过程分为两个阶段:Map 阶段跟 Reduce 阶段。

Map 负责把一个任务分解成多个任务。该阶段的 MapTask 并发实例,完全并行运行,互不相干。

Reduce 负责把多个任务处理结果汇总。该阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段的所有 MapTask 并发实例的输出。

MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行。

用户编写MR任务时候 程序实现部分分成三个部分:Mapper、Reducer、Driver(提交运行mr程序的客户端)。

3.1 优缺点

3.1.1 优点

易于编程

简单实现了一些接口就可以完成个分布式程序,你写个分布式程序跟写个串行化程序一样,类似八股文编程。

良好的扩展

计算资源不足时可以简单的增加机器来扩展计算能力。

高容错性

MapReduce任务部署在多台机器上后如果其中一台挂了,系统会进行自动化的任务转移来保证任务正确执行。

适合PB级数据离线处理

比如 美团3K个节点的集群并发,提供超大数据处理能力。

3.1.2 缺点

不擅长实时计算

MapReduce 不会想 MySQL 一样毫秒级返回结果。

不擅长流式计算

流式计算的 输入数据是动态的,而 MapReduce 的输入数据集是静态的。

不擅长DAG计算

多个应用程序存在依赖关系,MapReduce的作业结果会落盘导致大量磁盘IO,性能贼低,此时上Spark吧!

3.2 序列化

序列化

把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。

反序列化

将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存中的对象。

因为 Hadoop 在集群之间进行通讯或者 RPC 调用时是需要序列化的,而且要求序列化要快、且体积要小、占用带宽要小。而Java自带的序列化是重量级框架,对象序列化后会附带额外信息,比如各种校验信息,header,继承体系等。所以 Hadoop 自研了序列化框架。

(编辑:柳州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读