分布式计算 第五章 大数据多机计算:Hadoop

分布式计算 第五章 大数据多机计算:Hadoop

5.2 大数据和分布式的基础概念

5.2.1 从硬件思考大数据

从硬件角度看,一台或是几台机器似乎难以胜任大数据的存储和计算工作。
• 大量机器的集群构成数据中心
• 使用高速互联网络对大量机器进行连接以确保数据传递
• 综合考量数据中心的散热问题、能耗问题,以及各方面成本
• 集群中硬件发生故障的概率很高,如何确保可靠性
• 单一架构的机器难以胜任各种计算类型,考虑异构计算

请添加图片描述

可靠性问题:

由于数据中心的集群中往往包含数以万计的计算机,为顾及成本,集群往往使用较为廉价的普通商用硬件

5.1.2 从软件角度看大数据

从软件角度看,由于大数据的计算与存储分布在未必可靠的大量计算机组成的集群上。

• 分而治之,使用分片存储策略和分布式算法对大数据进
行存储与处理
• 考虑存储与计算的容错性,以使得故障发生时造成的损
失最小化
• 算法设计方面要尽可能减少节点间通信(因为这很耗时)

5.1.3 分布式 DISTRIBUTED

谈到大数据就不得不谈到分布式,在单机上存储和处理大数据是不可能的。分布式,就是将任务分配到许多节点(机器)上去,这是一种借助网络而产生的并行方法。在大数据方向,可以将它的研究分为两方面:

• 分布式存储(如分布式文件系统、分布式数据库)
• 分布式计算(本质上是并行计算模型与算法,如上一章的MPI可以用于分布式计算)

5.1.4 谷歌“三驾马车”

在分布式领域,谷歌公司提出了三项技术来分别解决文件存储、结构化数据存储和分布式计算模型这三个关键问题,并以此开
启了大数据时代。
GFS (SOSP2003)
Google File System(GFS)是一个可扩展的分布式文件系统,适用于大型分布式数据密集型应用程序。它能够在廉价的商用硬件上提供容错能力,并能为大量客户端提供较高的总体性能

  • 把一个较大的文件切分成不同的单元块;
  • 把每个单元块存储在一个ChunkServer服务器节点上,并且每一块都会复制在多个ChunkServer服务器;
  • 每一个文件包含多少块和哪些块,这些元数据存储在GFS Master服务器上;
  • 构成一个低成本的分布式存储系统,被用来处理数据量非常大的存储场景,为MapReduce的大数据处理模型提供输入和输出的存储系统;

BigTable (OSDI2006)
Bigtable 是一个分布式存储系统,用于管理结构化数据,旨在扩展到非常大的规模:数千个商用服务器上的 PB 级数据。 Google 的许多项目(60)都将数据存储在Bigtable 中,包括网络索引、Google 地球和 Google
财经

MapReduce (OSDI2004)
MapReduce 是一种用于处理和生成大型数据集的分布式运算程序编程模型和相关实现。用户指定 map 函数来处理键-值对(KV)以生成一组中间键-值对,以及 reduce 函数来合并与同一中间键关联的所有中间值(相当于分组合并)最后得到结果。

5.1.5键值存储的优缺点

优点

  • 简单:数据结构中只有键和值,并成对
    出现,值在理论上可以存放任一数据,
    并支持大数据存储。
  • 快速:以内存运行模式为主,数据处理
    快是其最大优势。
  • 高效计算:数据结构简单化,数据集之
    间的关系简单化,再加上基于内存的数
    据集计算,分布式计算等,形成了高效
    计算的前提条件。
  • 分布式处理:分布式处理能力使键值数
    据库具备了处理大数据的能力。

缺点

  • 对值进行多值查找功能很弱。
  • 缺少约束容易出错。
  • 不容易建立复杂关系。
  • 根据其缺点可以看出来,很多查询,排序,统计等功能需要程序员在业务代码进行编程约束。

5.2 Hadoop

5.2.1 Hadoop与云计算区别与联系

Hadoop与云计算区别
• 范围与定位
• 资源利用率
• 可靠性
Hadoop与云计算联系
• 互补性
• 数据共享与交互

5.2.2 Hadoop 是什么?

• Hadoop 是一系列开源软件的集合,是为大数据的处理而设计的分布式框架。
• Hadoop 将单机扩展到数千台机器,每台机器都提供本地计算和存储。
• Hadoop 通过对应用层故障的检测和处理,再由不可靠硬件构成的集群上实现高可用。

Hadoop包含了谷歌“三驾马车”的开源实现:

• GFS – HDFS
• MapReduce – Hadoop MapReduce
• BigTable – HBase(不展开)

以及其他的相关组件:
• Hadoop Common:支持其他 Hadoop 模块的通用实用程序
• Hadoop YARN:作业调度和集群资源管理的框架
• ……
HDFS具有一些假设:
• 硬件故障经常发生,因此需要能检测故障并快速恢复
• 面向流式数据访问,为批处理而非用户交互使用,更注重高吞吐而非低延迟,因此并未兼容POSIX
• 针对大型数据集,典型文件大小为GB到TB级,不适合小文件读取,并应当在数百个节点上支持数千万的文件
• 简化的一致性模型,一个文件一旦创建、写入和关闭就不需要更改,除了追加和截断,这样简化了一致性问题且提高了吞吐
• 移动计算而非移动数据,尤其当数据集很大时,这将会较少网络拥塞并提升吞吐
• 跨软硬件平台的可移植性

5.2.2 HDFS:分布式文件系统

• HDFS是一种依照GFS设计的分布式文件系统
• 运行在低成本商业硬件上,提供高容错性
• 提供高吞吐量访问,支持具有大量数据集的应用程序
• 运行在用户态,并非内核级文件系统

NAMENODE 和 DATANODE
• HDFS使用master/slave架构
• 集群包含一个NameNode和多个DataNode

请添加图片描述

• DataNode:在HDFS中,文件被分为一到多个块(Block)。DataNode用于实际存储这种“块”,并处理块的创建、删除。同时,还负责处理来自文件系统客户端的读取和写入请求。

• NameNode:每个集群一个(也可以有备份),用于维护文件系统的元数据(命名空间),执行文件系统命名空间上的操作,如打开、关闭、重命名文件和目录,以及确定块(Block)和DataNode的映射。

数据的复制
• HDFS要在大型集群中可靠地存储很大的文件。因此它将文件分块,并为每个块生成多个副本
• 每个文件的块大小和副本数量是可配置的
• NameNode 做出有关块复制的所有决定。它定期从集群中的每个 DataNode 接收 Heartbeat 和 Blockreport。收到心跳意味着 DataNode 运行正常。Blockreport 包含DataNode 上所有块的列表

  • 对同一个机架内的访问速度要快过跨机架访问,但机架也会出现故障,有一定可能会整个机架一起挂掉。因此如何放置副本对集群性能与可靠性有很大影响:
    • 全放在一个机架上,机架挂掉数据就访问不到了
    • 全放在不同机架上,写操作成本就变得很高
  • Hadoop拥有Rack Awareness(机架感知)功能,通过它可以 制定不同的副本放置策略
  • 例如副本数为3时,选择写操作所在机架放置一个副本,另选一个机架放置两个副本
  • 类似地,在进行读取时也会优先选择相同机架上的副本

5.2.3 YARN:调度器

• 在Hadoop中,计算是以作业(job)的形式发布,并被划分为任务(task)的形式执行
• 计算任务的执行需要使用空闲计算资源(cpu等硬件资源)
• YARN就是用来调度管理计算任务和计算资源的框架

请添加图片描述

请添加图片描述

YARN的主要工作包括

• 接受作业(应用程序),启动作业,失败时重启作业
• 管理集群资源(基于容器,囊括了内存、cpu、磁盘、网络等)
• 创建、管理、监控各节点上的容器(任务执行的微环境)
• 为应用程序按需分配资源(将任务发放到适当的节点、适当的容器)
• 跟踪任务的执行,监控任务健康状态,处理任务的失败

5.2.4 MapReduce:编程模型框架

• MapReduce(后文称MR)是一个用于编写并行大数据处理程序, 并使其在集群上可靠运行的编程框架
• MR操作的数据存储在分布式文件系统上,也就是在磁盘中(在Hadoop上就是HDFS)
• MR的输入输出数据形式均为键值对 <k,v>
• 一个MR作业通常将数据分为多个部分,每个部分分别由map操 作生成中间值,然后由reduce操作对具有相同key的所有value进行汇总

Map与Reduce操作的是数据分片而非所有数据,因此在各机器、各分片上的操作是并行的
• 数据被切分成块
• 在各机器(map worker)上启动代码副本,执行map操作,读入分块并输出中间值
• (对中间值按key进行排序)
• 在各机器(reduce worker)上启动代码副本,执行reduce操作,读入各自key对应的中间值并生成结果

请添加图片描述

reduce分为三个阶段:

  • 框架首先将所有相关的map输出分片取回
  • 框架将取回的中间值按key进行分组、排序
    • 以上两步是同时进行的,取回数据时就会进行合并操作
    • 可以使用Job.setGroupingComparatorClass(Class)、
    Job.setSortComparatorClass(Class)控制分组和排序
  • 以上操作结束后,开始进行reduce

推测执行

• 在集群上分布式执行任务时,总会有一些节点跑得比其他节点慢很多
• Hadoop默认情况下不会傻傻等着慢节点运行完,如果发现有的任务执行比平均速度慢,它会尝试开启一个与该任务相同的“推测任务”
• 原任务和推测任务谁先跑完就用谁,另一个会被终止
• 推测执行会占用更多集群资源,可以通过配置将其关闭

原文地址:https://blog.csdn.net/weixin_61197809/article/details/134591939

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

相关推荐


文章浏览阅读5.3k次,点赞10次,收藏39次。本章详细写了mysql的安装,环境的搭建以及安装时常见的问题和解决办法。_mysql安装及配置超详细教程
文章浏览阅读1.8k次,点赞50次,收藏31次。本篇文章讲解Spark编程基础这门课程的期末大作业,主要围绕Hadoop基本操作、RDD编程、SparkSQL和SparkStreaming编程展开。_直接将第4题的计算结果保存到/user/root/lisi目录中lisipi文件里。
文章浏览阅读7.8k次,点赞9次,收藏34次。ES查询常用语法目录1. ElasticSearch之查询返回结果各字段含义2. match 查询3. term查询4. terms 查询5. range 范围6. 布尔查询6.1 filter加快查询效率的原因7. boosting query(提高查询)8. dis_max(最佳匹配查询)9. 分页10. 聚合查询【内含实际的demo】_es查询语法
文章浏览阅读928次,点赞27次,收藏18次。
文章浏览阅读1.1k次,点赞24次,收藏24次。作用描述分布式协调和一致性协调多个节点的活动,确保一致性和顺序。实现一致性、领导选举、集群管理等功能,确保系统的稳定和可靠性。高可用性和容错性Zookeeper是高可用的分布式系统,通过多个节点提供服务,容忍节点故障并自动进行主从切换。作为其他分布式系统的高可用组件,提供稳定的分布式协调和管理服务,保证系统的连续可用性。配置管理和动态更新作为配置中心,集中管理和分发配置信息。通过订阅机制,实现对配置的动态更新,以适应系统的变化和需求的变化。分布式锁和并发控制。
文章浏览阅读1.5k次,点赞26次,收藏29次。为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准;
文章浏览阅读1.2k次,点赞26次,收藏28次。在安装Hadoop之前,需要进行以下准备工作:确认操作系统:Hadoop可以运行在多种操作系统上,包括Linux、Windows和Mac OS等。选择适合你的操作系统,并确保操作系统版本符合Hadoop的要求。安装Java环境:Hadoop是基于Java开发的,因此需要先安装和配置Java环境。确保已经安装了符合Hadoop版本要求的Java Development Kit (JDK),并设置好JAVA_HOME环境变量。确认硬件要求:Hadoop是一个分布式系统,因此需要多台计算机组成集群。
文章浏览阅读974次,点赞19次,收藏24次。# 基于大数据的K-means广告效果分析毕业设计 基于大数据的K-means广告效果分析。
文章浏览阅读1.7k次,点赞6次,收藏10次。Hadoop入门理论
文章浏览阅读1.3w次,点赞28次,收藏232次。通过博客和文献调研整理的一些农业病虫害数据集与算法。_病虫害数据集
文章浏览阅读699次,点赞22次,收藏7次。ZooKeeper使用的是Zab(ZooKeeper Atomic Broadcast)协议,其选举过程基于一种名为Fast Leader Election(FLE)的算法进行。:每个参与选举的ZooKeeper服务器称为一个“Follower”或“Candidate”,它们都有一个唯一的标识ID(通常是一个整数),并且都知道集群中其他服务器的ID。总之,ZooKeeper的选举机制确保了在任何时刻集群中只有一个Leader存在,并通过过半原则保证了即使部分服务器宕机也能维持高可用性和一致性。
文章浏览阅读10w+次,点赞62次,收藏73次。informatica 9.x是一款好用且功能强大的数据集成平台,主要进行各类数据库的管理操作,是使用相当广泛的一款ETL工具(注: ETL就是用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)到目的端的过程)。本文主要为大家图文详细介绍Windows10下informatica powercenter 9.6.1安装与配置步骤。文章到这里就结束了,本人是在虚拟机中装了一套win10然后在此基础上测试安装的这些软件,因为工作学习要分开嘛哈哈哈。!!!!!_informatica客户端安装教程
文章浏览阅读7.8w次,点赞245次,收藏2.9k次。111个Python数据分析实战项目,代码已跑通,数据可下载_python数据分析项目案例
文章浏览阅读1.9k次,点赞61次,收藏64次。TDH企业级一站式大数据基础平台致力于帮助企业更全面、更便捷、更智能、更安全的加速数字化转型。通过数年时间的打磨创新,已帮助数千家行业客户利用大数据平台构建核心商业系统,加速商业创新。为了让大数据技术得到更广泛的使用与应用从而创造更高的价值,依托于TDH强大的技术底座,星环科技推出TDH社区版(Transwarp Data Hub Community Edition)版本,致力于为企业用户、高校师生、科研机构以及其他专业开发人员提供更轻量、更简单、更易用的数据分析开发环境,轻松应对各类人员数据分析需求。_星环tdh没有hive
文章浏览阅读836次,点赞21次,收藏19次。
文章浏览阅读1k次,点赞21次,收藏15次。主要介绍ETL相关工作的一些概念和需求点
文章浏览阅读1.4k次。本文以Android、java为开发技术,实现了一个基于Android的博物馆线上导览系统 app。基于Android的博物馆线上导览系统 app的主要使用者分为管理员和用户,app端:首页、菜谱信息、甜品信息、交流论坛、我的,管理员:首页、个人中心、用户管理、菜谱信息管理、菜谱分类管理、甜品信息管理、甜品分类管理、宣传广告管理、交流论坛、系统管理等功能。通过这些功能模块的设计,基本上实现了整个博物馆线上导览的过程。
文章浏览阅读897次,点赞19次,收藏26次。1.背景介绍在当今的数字时代,数据已经成为企业和组织中最宝贵的资源之一。随着互联网、移动互联网和物联网等技术的发展,数据的产生和收集速度也急剧增加。这些数据包括结构化数据(如数据库、 spreadsheet 等)和非结构化数据(如文本、图像、音频、视频等)。这些数据为企业和组织提供了更多的信息和见解,从而帮助他们做出更明智的决策。业务智能(Business Intelligence,BI)...
文章浏览阅读932次,点赞22次,收藏16次。也就是说,一个类应该对自己需要耦合或调用的类知道的最少,类与类之间的关系越密切,耦合度越大,那么类的变化对其耦合的类的影响也会越大,这也是我们面向对象设计的核心原则:低耦合,高内聚。优秀的架构和产品都是一步一步迭代出来的,用户量的不断增大,业务的扩展进行不断地迭代升级,最终演化成优秀的架构。其根本思想是强调了类的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会波及有关系的类。缓存,从操作系统到浏览器,从数据库到消息队列,从应用软件到操作系统,从操作系统到CPU,无处不在。
文章浏览阅读937次,点赞22次,收藏23次。大数据可视化是关于数据视觉表现形式的科学技术研究[9],将数据转换为图形或图像在屏幕上显示出来,并进行各种交互处理的理论、方法和技术。将数据直观地展现出来,以帮助人们理解数据,同时找出包含在海量数据中的规律或者信息,更多的为态势监控和综合决策服务。数据可视化是大数据生态链的最后一公里,也是用户最直接感知数据的环节。数据可视化系统并不是为了展示用户的已知的数据之间的规律,而是为了帮助用户通过认知数据,有新的发现,发现这些数据所反映的实质。大数据可视化的实施是一系列数据的转换过程。