iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Facebook中怎么实现Hadoop和AvatarNode集群
  • 545
分享到

Facebook中怎么实现Hadoop和AvatarNode集群

2023-06-10 09:06:43 545人浏览 八月长安
摘要

这篇文章给大家介绍Facebook中怎么实现hadoop和Avatarnode集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Facebook将数据存储在利用Hadoop/Hive搭建的数据仓库上,这个数据仓库拥有4

这篇文章给大家介绍Facebook中怎么实现hadoop和Avatarnode集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Facebook将数据存储在利用Hadoop/Hive搭建的数据仓库上,这个数据仓库拥有4800个内核,具有5.5PB的存储量,每个节点可存储12TB大小的数据,同时,它还具有两层网络拓扑。Facebook中的mapReduce集群是动态变化的,它基于负载情况和集群节点之间的配置信息可动态移动。

Facebook的数据仓库架构,在这个架构中,网络服务器和内部服务生成日志数据,这里Facebook使用开源日志收集系统,它可以将数以百计的日志数据集存储在NFS服务器上,但大部分日志数据会复制到同一个中心的hdfs实例中,而HDFS存储的数据都会放到利用Hive构建的数据仓库中。Hive提供了类sql的语言来与MapReduce结合,创建并发布多种摘要和报告,以及在它们的基础上进行历史分析。Hive上基于浏览器的接口允许用户执行Hive查询。oracleMySQL数据库用来发布这些摘要,这些数据容量相对较小,但查询频率较高并需要实时响应。一些旧的数据需要及时归档,并存储在较便宜的存储器上。

下面介绍Facebook在AvatarNode和调度策略方面所做的一些工作。AvatarNode主要用于HDFS的恢复和启动,若HDFS崩溃,原有技术恢复首先需要花10~15分钟来读取12GB的文件镜像并写回,还要用20~30分钟处理来自2000个DataNode的数据块报告,最后用40~60分钟来恢复崩溃的NameNode和部署软件。表3-1说明了BackupNode和AvatarNode的区别,AvatarNode作为普通的NameNode启动,处理所有来自DataNode的消息。AvatarDataNode与DataNode相似,支持多线程和针对多个主节点的多队列,但无法区分原始和备份。人工恢复使用Avatarshell命令行工具,AvatarShell执行恢复操作并更新ZooKeeper的zNode,恢复过程对用户来说是透明的。分布式Avatar文件系统实现在现有文件系统的上层。

基于位置的调度策略在实际应用中存在着一些问题:如需要高内存的任务可能会被分配给拥有低内存的TaskTracker;CPU资源有时未被充分利用;为不同硬件的TaskTracker进行配置也比较困难等。Facebook采用基于资源的调度策略,即公平享有调度方法,实时监测系统并收集CPU和内存的使用情况,调度器会分析实时的内存消耗情况,然后在任务之间公平分配任务的内存使用量。它通过读取/proc/目录解析进程树,并收集进程树上所有的CPU和内存的使用信息,然后通过TaskCounters在心跳(heartbeat)时发送信息。

Facebook的数据仓库使用Hive,这里HDFS支持三种文件格式:文本文件(TextFile),方便其他应用程序读写;顺序文件(SequenceFile),只有Hadoop能够读取并支持分块压缩;RCFile,使用顺序文件基于块的存储方式,每个块按列存储,这样有较好的压缩率和查询性能。Facebook未来会在Hive上进行改进,以支持索引、视图、子查询等新功能。

现在Facebook使用Hadoop遇到的挑战有:

服务质量和隔离性方面,较大的任务会影响集群性能;

安全性方面,如果软件漏洞导致NameNode事务日志崩溃该如何处理;

数据归档方面,如何选择归档数据,以及数据如何归档;

性能提升方面,如何有效地解决瓶颈等。


解决Namenode顽疾

Google在2004年创造了MapReduce,MapReduce系统获得成功的原因之一是它为编写需要大规模并行处理的代码提供了简单的编程模式。MapReduce集群可包括数以千计的并行操作的计算机。同时MapReduce允许程序员在如此庞大的集群中快速的转换数据并执行数据。它受到了Lisp的函数编程特性和其他函数式语言的启发。MapReduce和云计算非常相配。MapReduce的关键特点是它能够对开发人员隐藏操作并行语义 — 并行编程的具体工作方式。

HDFS(Hadoop Distributed Filesystem)是专为MapReduce框架而下大规模分布式数据处理而设计的,HDFS可将大数据集(TB级)存储为单个文件,而大多文件系统并不具备这样的能力。(编者注:NTFS5 Max Files on Volume:264 bytes (16 ExaBytes) minus 1KB,1EB = 1,000,000 TB)。这也是HDFS风靡全球的重要原因。

目前Facebook Hadoop集群内的HDFS物理磁盘空间承载超过100PB的数据(分布在不同数据中心的100多个集群)。由于HDFS存储着Hadoop应用需要处理的数据,因此优化HDFS成为Facebook为用户提供高效、可靠服务至关重要的因素。

HDFS Namenode是如何工作的?

HDFS客户端通过被称之为Namenode单服务器节点执行文件系统原数据操作,同时DataNode会与其他DataNode进行通信并复制数据块以实现冗余,这样单一的DataNode损坏不会导致集群的数据丢失。

但NameNode出现故障的损失确是无法容忍的。NameNode主要职责是跟踪文件如何被分割成文件块、文件块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常等。但如果NameNode节点停止运行的话将会导致数据节点无法通信,客户端无法读取和写入数据到HDFS,实际上这也将导致整个系统停止工作。

The HDFS Namenode is a single point of failure (SPOF)
Facebook中怎么实现Hadoop和AvatarNode集群

Facebook也深知“Namenode-as-SPOF”所带来问题的严重性,所以Facebook希望建立一套系统已破除“Namenode-as-SPOF”带来的隐患。但在了解这套系统之前,首先来看一下Facebook在使用和部署HDFS都遇到了哪些问题。

Facebook数据仓库的使用情况

在Facebook的数据仓库中部署着最大的HDFS集群,数据仓库的使用情况是传统的Hadoop MapReduce工作负载——在大型集群中一小部分运行MapReduce批处理作业

因为集群非常庞大,客户端和众多DataNode节点与NameNode节点传输海量的原数据,这导致NameNode的负载非常沉重。而来自CPU、内存、磁盘和网络带来的压力也使得数据仓库集群中NameNode高负载状况屡见不鲜。在使用过程中Facebook发现其数据仓库中由于HDFS引发的故障占总故障率的41%。

Facebook中怎么实现Hadoop和AvatarNode集群

HDFS NameNode是HDFS中的重要组成部分,同时也是整个数据仓库中的重要组成部分。虽然高可用的NameNode只可以预防数据仓库10%的计划外停机,不过消除NameNode对于SPOF来说可谓是重大的胜利,因为这使得Facebook可执行预订的硬件和软件回复。事实上,Facebook预计如果解决NameNode可消除集群50%的计划停机时间。
Facebook中怎么实现Hadoop和AvatarNode集群

那么高可用性NameNode是什么样子的?它将如何工作?让我们来看一下高度可用性NameNode的图表。
Facebook中怎么实现Hadoop和AvatarNode集群

在此结构中,客户端可与Primary NameNode与Standby NameNode通信,同样众多DataNode

也具备给Primary NameNode与Standby NameNode发送block reports的能力。实质上Facebook所研发的AvatarNode就是具备高可用NameNode的解决方案。

Avatarnode:具备NameNode故障转移的解决方案

为了解决单NameNode节点的设计缺陷,大约在两年前Facebook开始在内部使用AvatarNode工作。

同时AvatarNode提供了高可用性的NameNode以及热故障切换和回滚功能,目前Facebook已经将AvatarNode贡献到了开源社区。经过无数次的测试和Bug修复,AvatarNode目前已在Facebook最大的Hadoop数据仓库中稳定运行。在这里很大程度上要感谢Facebook的工程师Dmytro Molkov。

当发生故障时,AvatarNode的两个高可用NameNode节点可手动故障转移。AvatarNode将现有的NameNode代码打包并放置在Zookeeper层。

AvatarNode的基本概念如下:

具备Primary NameNode与Standby NameNode

当前Master主机名保存在ZooKeeper之中

改进的DataNode发送block reports到Primary NameNode与Standby NameNode

改进的HDFS客户端将在每个事物开始之前对Zookeeper进行检查,如果失败会转移到另外的事务之中。同时如果AvatarNode故障转移出现在写入的过程中,AvatarNode的机制将允许保证完整的数据写入。
Facebook中怎么实现Hadoop和AvatarNode集群

Avatarnode客户端
Facebook中怎么实现Hadoop和AvatarNode集群

关于Facebook中怎么实现Hadoop和AvatarNode集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Facebook中怎么实现Hadoop和AvatarNode集群

本文链接: https://www.lsjlt.com/news/260003.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Facebook中怎么实现Hadoop和AvatarNode集群
    这篇文章给大家介绍Facebook中怎么实现Hadoop和AvatarNode集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Facebook将数据存储在利用Hadoop/Hive搭建的数据仓库上,这个数据仓库拥有4...
    99+
    2023-06-10
  • Hadoop集群同步怎么实现
    本篇内容介绍了“Hadoop集群同步怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、同步方式  选择一个机器,作为时间服务器(这里...
    99+
    2023-06-02
  • 在Ubuntu 18.04.1中怎么安装Hadoop集群
    这篇文章给大家介绍在Ubuntu 18.04.1中怎么安装Hadoop集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。准备运行Hadoop服务器首先,我们需要安装Oracle Java 8,因为从Ubuntu 18....
    99+
    2023-06-02
  • MongoDB中怎么实现集群
    本篇文章给大家分享的是有关MongoDB中怎么实现集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。基本概念文档(document):文档是M...
    99+
    2022-10-18
  • 怎么在vmware中搭建一个Hadoop集群环境
    怎么在vmware中搭建一个Hadoop集群环境?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先在虚拟机中关闭系统右键虚拟机,点击管理,选择克隆点击下一步,选择...
    99+
    2023-06-14
  • 怎么在docker中搭建一个Hadoop集群环境
    这篇文章给大家介绍怎么在docker中搭建一个Hadoop集群环境,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。docker安装国际惯例更新下apt软件包的源 curl -fssl https://mirro...
    99+
    2023-06-07
  • php中怎么实现集群部署
    这篇“php中怎么实现集群部署”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中怎么实现集群部署”文章吧。一、什么是集群...
    99+
    2023-07-05
  • Prometheus中怎么实现集群监控
    Prometheus中怎么实现集群监控,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1、Prometheus 对比 Zabbix和...
    99+
    2022-10-19
  • SpringCloud怎么实现Zuul集群
    小编给大家分享一下SpringCloud怎么实现Zuul集群,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、使用 Nginx+Zuul 实现网关集群互联网公司中网关都是集群 搭建集群: Nginx+Zuul 一主一备,或...
    99+
    2023-06-20
  • ElasticSearch中怎么实现集群分布式
    本篇文章为大家展示了ElasticSearch中怎么实现集群分布式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。索引(index)“索引” 这个词在 Elastic...
    99+
    2022-10-18
  • MongoDB中怎么实现分片与集群
    这期内容当中小编将会给大家带来有关MongoDB中怎么实现分片与集群,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、 mongodb分片与集群拓扑图二、分片与集群的部署...
    99+
    2022-10-18
  • MongoDB中怎么实现分布式集群
    本篇文章给大家分享的是有关 MongoDB中怎么实现分布式集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。集群概览mongodb 相关的进程...
    99+
    2022-10-18
  • Redis7.0部署集群怎么实现
    这篇“Redis7.0部署集群怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis7.0部署集群怎么实现”文章吧...
    99+
    2023-07-02
  • Node.js进程集群怎么实现
    这篇文章主要介绍了Node.js进程集群怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js进程集群怎么实现文章都会有所收获,下面我们一起来看看吧。一、cluster模块Node.js是单线程处...
    99+
    2023-07-02
  • 怎么实现Oracle集群自启动
    这篇文章主要讲解了“怎么实现Oracle集群自启动”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现Oracle集群自启动”吧!我们先看如下部分:Ora...
    99+
    2022-10-18
  • php中什么是集群部署?如何实现集群部署?
    随着互联网进入快速发展的时代,各种网站、应用如雨后春笋般出现,人们对于服务的需求越来越高。而随着用户量增加,单一服务器已经无法满足需求,集群部署PHP项目成为解决方案之一。一、什么是集群部署?集群部署是将多台服务器组合在一起,按照特定的方式...
    99+
    2023-05-14
    集群部署 php
  • MySQL中怎么实现集群高可用架构
    今天就跟大家聊聊有关MySQL中怎么实现集群高可用架构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL+DRDB架构通过DRBD基于bloc...
    99+
    2022-10-18
  • 怎么实现slave集群负载均衡
    这篇文章主要讲解了“怎么实现slave集群负载均衡”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现slave集群负载均衡”吧!一.介绍由于互联网系统读...
    99+
    2022-10-18
  • PHP怎么实现数据库集群备份
    这篇“PHP怎么实现数据库集群备份”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP怎么实现数据库集群备份”文章吧。一、概...
    99+
    2023-07-06
  • 怎么用Keepalived+HAProxy高可用集群K8S实现
    今天小编给大家分享一下怎么用Keepalived+HAProxy高可用集群K8S实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作