首页 > 其他分享 >大数据解决什么问题 ?

大数据解决什么问题 ?

时间:2023-07-04 14:24:29浏览次数:42  
标签:HDFS MapReduce Hadoop 问题 数据量 解决 数据 节点

大数据解决什么问题 ?

几乎所有的教程都会告诉你, 大数据解决了TB以及PB级别数据存储与运算的问题,但是如果仅仅这么解释很难说这是根本原因, 因为我们有理由相信一个技术的兴起必定是解决了此前技术的一些痛点,在微服务中,大数据量解决方案可以分为如下几个方面:

业务层:根据业务场景对数据存储进行划分

DB层:主从、主备,数据分片,分库分表

数据分片:在进行了上面两点后, 如果还涉及大数据量,可以根据地理区域进行进一步的划分,下面仅仅从数据存储角度讲解:

上面仅仅是对DB数据层做了一个拆分, 如果发现服务请求数据量较大,可以先进行数据库集群搭建,常见的例如主备、主从,如果依旧难以达到性能要求,可以从业务的角度进行拆分,例如将订单、物流、用户信息等分别存储在不通的数据库里,如果这种情况下依旧有较大数据量,那么可以根据地理区域拆分,将不通地理区域的数据存储在不同的数据库中,这种情况下,我们的算力资源以及存储资源应该是所有节点之和,初一看与大数据的HDFS思想很相像,毕竟数据能正常被存储的前提条件就是:

\[\sum_{node=1}^{n}{DB_{node}} >\sum_{node=1}^{n}{Data_{n}} \]

也就是数据存储容量大于数据量,这个角度来看,说大数据解决了大数据量存储的问题难以服众,下面看看是否是解决了大数据量计算的问题:

我们先假设一个场景:

数据库中一个info表里存在两条一模一样的数据,请将其用最快的速度找出来:

Name sex hobby
张三
张三
...... ...... ......

伟大的SQL:

select  l.name,l.sex,l.hobby from info l group by l.l.name,l.sex,l.hobby having count(*) >1

问题: 性能如何,会不会内存溢出?分库分表了咋办?=> 无解

那么需要在内存中对数据进行处理,最简单的就是进行$$Hash$$计算:

哈希计算,时间复杂度$$O_n$$,可以解决分库分表问题,那么能解决性能问题吗?

这儿就涉及到内存与磁盘的性能瓶颈, 经查二者性能如下:

机械硬盘:$$300M/s≈0.3GB/S$$

内存:DDR5/6400MHz

\[V_{ddr5}=\frac{6400MH_Z * 64bit}{8*10^3}=51.2GB/S \]

也就是内存速度大概是硬盘的200倍左右,假设现在要在 $$1PB(10^3TB)$$中寻找两条相同的数据, 那么读数据消耗的时间为:

\[T=\frac{10^9MB}{300M/S*60S/min}=\frac{10^6}{18}min≈5*10^4min=833h \]

即使是$$1TB$$数据,也需要$$0.8h$$可以发现这是难以忍受的,现在为了方便讨论,假设是1TB数据,那么有没有办法可以把这个速度提起来呢?

简单来说就是分而治之 !分段并行哈希计算。

分而治之

上面的例子里, 可以根据数据量分段,利用多台机器同时跑,体现的计算机思想:分而治之,也类似归并的思想,简单来说就是对于1~100的数据

前面 20%交由第一台机器,后20%交给第二台机器,依次类推,可以用5台机器来做这个事情。

上图中,对于海量的数据,我们需要将其分配在我们的多个节点中,想让多节点同时运行我们我们想进行的计算程序(Hash),这也就是大数据的基础框架Hadoop所做的事情

大数据技术的特点

  • 分而治之

  • 并行计算

  • 计算向数据移动

  • 数据本地化读取

Hadoop是什么?

根据官网,我们可以得知hadoop主要包含两方面内容:

一:分布式文件管理系统HDFS

The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware. It has many similarities with existing distributed file systems. However, the differences from other distributed file systems are significant. HDFS is highly fault-tolerant and is designed to be deployed on low-cost hardware. HDFS provides high throughput access to application data and is suitable for applications that have large data sets. HDFS relaxes a few POSIX requirements to enable streaming access to file system data. HDFS was originally built as infrastructure for the Apache Nutch web search engine project. HDFS is part of the Apache Hadoop Core project.

Hadoop分布式文件系统(HDFS)是一个分布式文件系统,设计用于在商用硬件上运行。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的差异是显着的。HDFS具有高度容错性,旨在部署在低成本硬件上。HDFS 提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。HDFS是Apache Hadoop Core项目的一部分。

二:分布式计算引擎MapReduce

Hadoop MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.

Hadoop MapReduce是一个软件框架,用于轻松编写应用程序,这些应用程序以可靠,容错的方式在大型商品硬件集群(数千个节点)上并行处理大量数据(数TB数据集)。

A MapReduce job usually splits the input data-set into independent chunks which are processed by the map tasks in a completely parallel manner. The framework sorts the outputs of the maps, which are then input to the reduce tasks. Typically both the input and the output of the job are stored in a file-system. The framework takes care of scheduling tasks, monitoring them and re-executes the failed tasks.

MapReduce作业通常将输入数据集拆分为独立的块,这些块由map任务以完全并行的方式处理。框架对映射的输出进行排序,然后将其输入到reduce任务中。通常,作业的输入和输出都存储在文件系统中。该框架负责调度任务,监视它们并重新执行失败的任务

Typically the compute nodes and the storage nodes are the same, that is, the MapReduce framework and the Hadoop Distributed File System (see HDFS Architecture Guide) are running on the same set of nodes. This configuration allows the framework to effectively schedule tasks on the nodes where data is already present, resulting in very high aggregate bandwidth across the cluster.

通常计算节点和存储节点是相同的,也就是说,MapReduce框架和Hadoop分布式文件系统(参见HDFS架构指南)在同一组节点上运行。此配置允许框架在已存在数据的节点上有效地计划任务,从而在整个集群中产生非常高的聚合带宽。

The MapReduce framework consists of a single master ResourceManager, one worker NodeManager per cluster-node, and MRAppMaster per application (see YARN Architecture Guide).

MapReduce框架由单个主资源管理器,每个集群节点一个工作节点管理器和每个应用程序的MRAppMaster组成(参见YARN架构指南)。

通过官网的描述, 我们可以确定的是以下几点;

1、HDFS是一个分布式文件系统 => 意味着微服务间的技术框架在这儿都可能适用,例如网络通讯、选举、主备、持久化等

2、HDFS具有高度容错性以及高吞吐量 => 意味着可能追求CAP中的AP

3、放宽了POSIX要求 => POSIX是什么?

4、HDFS支持流式访问

5、对于MapReduce,可靠,容错的方式并行处理大量数据

6、对输入的数据拆分成独立的split

7、对split进行Map映射,然后对数据进行排序

8、将排序后的结果进行Reduce计算

9、输入和输出都存储在文件系统中 ==> HDFS

10、负责调度任务,监视

带着上面的关注点,我们开始Hadoop学习之路。

标签:HDFS,MapReduce,Hadoop,问题,数据量,解决,数据,节点
From: https://www.cnblogs.com/Courage129/p/17525595.html

相关文章

  • 直播源码开发,js 数据的创建时间是否大于30天或相隔天数
    直播源码开发,js数据的创建时间是否大于30天或相隔天数//获取当前时间varday=newDate();//数据库的数据创建时间vartime=creationTime;//把当前时间数据库时间转换成毫秒数varstarDate=Date.parse(time);varendDate=Date.parse(day);//当前时间毫秒数减去创建时间......
  • Qt InputDialog 置顶后模拟键盘输入失效问题
    开发环境:Qt5.12.2+QtCreator4.8.21、问题背景嵌入式linux-arm触摸屏移植了谷歌拼音输入法后测试使用问题2、问题现象1)主窗口编辑框输入法有效2)QInputDialog弹框输入法失效3、问题原因 初步怀疑是QInputDialog置顶问题导致4、问题解决......
  • api接口技术开发心得,获取1688淘宝商品详情数据,数据采集调用教程
    ​ 商品详情API接口的作用和重要性主要体现在以下几个方面:获取详细商品信息:商品详情API接口提供了获取1688和淘宝商品的完整详细信息的功能。这包括商品名称、价格、库存、规格、描述、图片、运费等。这些详细信息对于用户来说是购买决策的重要依据。提供用户购物体验:通......
  • python如何操作读取excel表格数据之xlrd模块
    xlrd模块支持读取xlsx和xls两种格式的excel表格数据,使用之前需要先安装(可以通过pip安装) importxlrd#读取excel文件路径readfile=xlrd.work_bork(r'excel文件所在路径') #获取sheetsheet=readfile.sheet_names()obj_sheet=readfile.sheet_by_name('sheet1') #......
  • 【AGC】AGC上传文件失败如何定位解决,一起来看下吧
    ​【问题描述】经常有开发者在AGC上传软件包或文件时报错“上传失败,请稍后重试。”或者“上传失败,请检查是否使用代理服务器并且确保网络正常。”等。​​ 【原因分析】这种问题一般是网络不通导致。可以通过抓取浏览器日志来进一步确认:1、按F12打开浏览器日志,选择“networ......
  • 振弦采集仪在岩土工程安全监测使用的解决方案
    振弦采集仪在岩土工程安全监测使用的解决方案振弦采集仪是一种岩土工程安全监测仪器,主要用于监测建筑物、桥梁、隧道、地铁等工程结构的动态响应,以及岩土体的振动情况。其工作原理是通过振弦传感器采集结构或岩土体的振动信号,再通过数据采集系统进行处理和分析,得出结构或岩土体动......
  • 迭代失败的4个迹象,团队中了几个?快来看看如何解决!
    迭代在Scrum中有着举足轻重的作用,它能将产品愿望清单转化为可操作的任务,将头脑风暴塑造成具体结果。迭代不仅加速了项目交付,甚至还创造了一种责任文化,尤其针对在地理位置上分散的团队。虽然迭代一直是快速推进项目管理的可靠方法,但如果做得不好,它们可能会造成严重的流程不平衡。......
  • Vue 数组中出现__ob__: Observer无法取值[已解决]
    Vue数组中出现__ob__:Observer无法取值[已解决]代码如下解决办法加一个setTimeoutcreated(){setTimeout(()=>{//这里就写你要执行的语句即可,先让数据库的数据加载进去数组中你在从数组中取值就好了},800)}改完之后就可以了......
  • 振弦采集仪在岩土工程安全监测使用的解决方案
    振弦采集仪在岩土工程安全监测使用的解决方案振弦采集仪是一种岩土工程安全监测仪器,主要用于监测建筑物、桥梁、隧道、地铁等工程结构的动态响应,以及岩土体的振动情况。其工作原理是通过振弦传感器采集结构或岩土体的振动信号,再通过数据采集系统进行处理和分析,得出结构或岩土体动......
  • 大数据与智能育种问题讨论
    目录问题徐老师回复1、 大数据育种在国内外的发展现状?2、 国内大数据育种的主要玩家及其优劣势?3、 大数据育种企业的发展路径?4、 大数据育种的盈利模式?5、 未来行业政策的评估与预测?来自徐云碧老师的《大数据与智能育种》报告的问答记录问题1、大数据育种在国内外的发展现状?......