初识Hadoop,走进大数据世界

news2024/11/15 4:54:30

文章目录

  • 数据!数据!
  • 遇到的问题
  • Hadoop的出现
  • 相较于其他系统的优势
    • 关系型数据库
    • 网格计算

本文章属于Hadoop系列文章,分享Hadoop相关知识。后续文章中会继续分享Hadoop的组件、MapReduce、HDFS、Hbase、Flume、Pig、Spark、Hadoop集群管理系统以及案例项目等。想学习大数据的同学希望可以点赞、收藏、持续关注不迷路。

在古时候,人们用牛来拉重物,当一头牛拉不动一根圆木时,人们从来没有考虑过要想方设法培育出一种更强壮的牛。同理,我们也不该想方设法打造什么超级计算机,而应该千方百计综合利用更多计算机来解决问题。

数据!数据!

在这里插入图片描述

我们生活在这个数据大爆炸的时代,很难估算全球的电子设备存储量。根据国际数据公司(IDC)曾经发布的报告,2013年统计出全球数据总量为4.4ZB,预测到2020年数据量将会达到44ZB,1ZB等于1000EB,等于1 000 000PB,等于大家所熟悉的10亿TB,这远远超过了全世界任意一块硬盘所能保存的数据量。

数据“洪流”有很多来源,以下面列出为例:

  • 纽约证交所每天产生的交易数据大约的4TB到5TB之间。
  • FaceBook存储的照片超过2400亿张,并以每月至少7PB的速度增长。
  • 互联网档案馆存储的数据约为18PB。
  • 瑞士日内瓦附近的大型强子对撞机每年产生数据越30PB。

还有其他大量的数据,比如作为物联网一部分的机器设备产生的日志、RFID读卡器、车载GPS等等。

组织或企业要想在未来取得成功,不仅需要管理好自己的数据,更需要从其他渠道获取有价值的信息。现在得益于开放的互联网,我们已经可以从各个地方获取到需要的数据,这是个好消息,但不幸的是,我们必须想方设法好好的存储和分析这些数据。

遇到的问题

我们遇到的问题很简单,在硬盘存储容量多年来不断提升的同时,硬盘数据读取的速度却没有与时俱进。1990年,一个普通的硬盘可以存储1370MB的数据,传输速度为4.4 MB/s,因此只需要5分钟就可以读完整个硬盘的数据。20年过去了,1TB的硬盘成为主流,但其数据传输速度约为100 MB/s,读完整个硬盘至少需要花费2.5个小时。

一个很简单减少读取时间的办法是同时从多个硬盘上读数据。试想,如果有100个硬盘,每个硬盘存储1%的数据,并行读取,那么不到两分钟就可以读完所有数据。仅使用硬盘容量的1%似乎很浪费,但是我们可以存储100个数据集,每个数据集1TB,并实现共享硬盘的读取。

Hadoop的出现

在这里插入图片描述

虽然如此,但要对多个硬盘中的数据并行进行读/写数据,还有很多问题要解决。

第一个需要解决的是硬件故障问题。一旦开始使用多个硬件,其中个别硬件就很有可能发生故障。为了避免数据丢失,最常见的做法是复制:系统保存数据的副本,一旦有系统发生故障,就可以用另外保存的副本。例如,冗余硬盘阵列(RAID)就是按这个原理实现的,另外,Hadoop的文件系统(HDFS)也是这一类。

第二个问题是大多数分析任务需要结合大部分数据共同完成分析,即从一个硬盘读取的数据可能需要从另外99个硬盘的数据结合使用,保证其正确性是一个非常大的挑战,MapReduce提出一个编程模型,该模型抽象出这些硬盘读/写问题,并转换为对一个数据集(由键-值对组成)的计算,有很高的可靠性。

简而言之,Hadoop为我们提供了一个可靠的且可扩展的存储与分析平台。此外,由于Hadoop运行在商用硬件上且是开源的,所以使用成本是在可接受范围内的。

相较于其他系统的优势

Hadoop不是历史上第一个用于数据存储和分析的分布式系统,但是Hadoop的一些特性将它和类似的系统区别开来。

关系型数据库

为什么不能用配有大量硬盘的数据库来进行大规模数据分析?为什么用Hadoop?

这两个问题的答案来自于计算机硬盘的发展趋势:寻址时间的提升远远不敌传输速率的提升,寻址是将磁头移动到硬盘的某个位置进行读/写操作的过程,它是导致硬盘操作延迟的主要原因,而传输速率取决于硬盘的带宽。
如果数据访问中包含大量的硬盘寻址,那么读取大量数据必然会花更长的时间。另一方面,如果数据库系统只更新一小部分记录,那么传统的B树更有优势。但数据库系统如果有大量的数据更新,B树的效率就明显落后于MapReduce了。在很多情况下,可以将MapReduce作为关系型数据库的补充,两个系统之间差异如下

关系型数据库MapReduce
数据大小GBPB
数据存取交互式和批处理批处理
更新多次读/写一次写入,多次读取
事务ACID
结构写时模式读时模式
完整性
横向扩展非线性线性

网格计算

高性能计算和网格计算组织多年来一直在研究大规模数据处理,主要使用类似于消息传递接口的API。广义上讲,高性能计算采用的方法是将作业分散到集群的各个机器上,这些机器访问存储区域网络(SAN)所组成的共享文件系统,如果节点需要访问的数据量更庞大,很多节点就会因为网络带宽的瓶颈问题而不得不闲下来等数据。

Hadoop尽量在计算节点上存储数据,以实现数据的本地快速访问。数据本地化是Hadoop数据处理的核心,并因此获得良好的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rewrite中的if、break、last

目录 rewrite 作用: 依赖: 打开重定向日志: if 判断: location {} 本身有反复匹配执行特征 在 location 中加入 break 和 last (不一样) 加了break后,立刻停止向下 且 跳出。 加了last&#xf…

Windows 版本ffmpeg编译概述

在使用ffmpeg过程当中,ffmpeg在Linux(包括mac,android)编译非常容易,直接configure,make即可,Android需要交叉编译,在windows就比较麻烦,庆幸的是ffmpeg官方提供已编译好Windows版本的二进制库(http://ffmpeg.org/download.html#b…

使用vector<char>作为输入缓冲区

一、引言 当我们编写代码:实现网络接收、读取文件内容等功能时,我们往往要在内存中开辟一个输入缓冲区(又名:input buffer/读缓冲区)来存贮接收到的数据。在C里面我们可以用如下方法开辟输入缓冲区。 ①使用C语言中的数组&#x…

【Spring教程】1.Spring概述

1、概述 1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测…

Android Compose Bloom 项目实战 (四) : 主页

1. 前言 上篇文章 我们实现了 Compose Bloom项目的开发页,这篇文章接着上文,来介绍主页的开发。 2. 分析页面布局 根据UI稿我们可知,这个页面有一个底部切换的BottomBar,还有一个搜索框,一个横向的列表以及一个竖向的…

RNN GRU模型 LSTM模型图解笔记

RNN模型图解引用RNN模型GRULSTM深度RNN双向循环神经网络引用 动手学深度学习v2–李沐 LSTM长短期记忆网络3D模型–B站up梗直哥丶 RNN模型 加入了一个隐变量(状态),隐变量由上个隐变量和上一个输入而更新,这样模型就可以达到具有短期记忆的效…

加油站会员管理小程序实战开发教程10

上一篇我们介绍了计算距离及到店导航的功能,本篇我们介绍一下今日油价的功能。 如果要按日显示最新的数据,那么我们首先需要有数据源来存放每日的油价数据。这里涉及数据源的时候要考虑你的数据是只录入一条,还是每日录入一条。 录入一条呢,比较简单,但有个问题是如果我…

制作for arm64 cpu架构的docker镜像

我前段时间买了个阿里云,没有留意CPU的架构是ARM的,结果部署系统的时候就发现出问题了,部署在docker里的容器实例根本跑不起来,提示什么执行文件格式错误(“exec format error”)。 究其原因,…

spring注解方式整合Dubbo源码解析

系列文章目录 前言 本节我们的Dubbo源码版本基于2.6.x 在前一章我们的整合案例中,我们有几个比较关键的步骤: 在启动类上标注了EnableDubbo注解在provider类上面标注了Service注解来提供dubbo服务在消费的时候通过Reference注解引入dubbo服务在配置文件…

软考中级-面向对象

面向对象基础(1)类类分为三种:实体类(世间万物)、接口类(又称边界类,提供用户与系统交互的方式)、控制类(前两类之间的媒介)。对象:由对象名数据&…

【jumpServer 功能梳理】

用户管理 1.1 用户列表 创建jumpServe 账号 ;角色分为用户 管理员;更新账号信息;查看用户详情以及授权的资产; 1.2 用户组 用户组,这个组的意义在于用一个统称对接资源;用户组包含多个用户,可以操作增加删除…

LeetCode初级算法题:两数之和+斐波拉契数列多种java解法

目录7 两数之和题目描述:解题思路与代码暴力解法:解法一:二分查找解法二:双指针2 斐波那契数列题目描述:解题思路与代码![请添加图片描述](https://img-blog.csdnimg.cn/d06a95d7989b4794bd7f5f02fbd6f87e.png)解法一&…

spring之使用Spring的AOP

文章目录前言一、准备工作1、添加相应的依赖2、添加相应的命名空间3、创建目标类4、创建切面二、使用AOP1.在切面类中编写增强代码以及切点表达式2、开启aspectj的自动代理3、测试类4、测试结果前言 Spring对AOP的实现包括以下三种方式 1、Spring框架结合AspectJ框架实现的AOP…

自抗扰控制ADRC之反馈控制律(NLSEF)

目录 前言 1.非线性状态误差反馈控制律(NLSEF) 1.1 控制律形式 1.2 控制量的生成(或者说扰动的补偿) 1.2.1补偿形式① 1.2.1补偿形式② 2.仿真分析 2.1仿真模型 2.2仿真结果 前言 前面的两篇博客依次介绍了TD微分跟踪器安排过渡过程、扩张观测器: 自抗扰…

用腾讯云同步Obsidian笔记

介绍 之前用gitee同步OB笔记,同时做图床。但由于git系产品设置起来相对复杂,且后续可能有外链过审等问题。周五被同事小姐姐安利了用腾讯云COS,试了一下,果然不错。其主要优点如下: 设置简单,学习成本低&…

WSL(Windows Subsystem for Linux)

一、WSL优势 •传统方式:获取Linux操作系统环境,必须安装完整的虚拟机,如VMware•WSL:以非常轻量化的方式,得到Linux系统环境总结:WSL更方便,简单、好用、轻量化、省内存 二、什么是WSL ①不…

Go语言基础(十五):垃圾回收机制(三色标记)

文章目录一、标记清除(三色标记)大致原理1、标记细节2、root对象二、垃圾回收触发机制垃圾回收(Garbage Collection),是一种自动管理内存的机制。传统编程语言(如C/C)需要开发者对无用内存资源进…

Android实例仿真之三

目录 四 Android架构探究 五 大骨架仿真 六 Android实例分析思路拓展 四 Android架构探究 首先,Android系统所带来的好处,就在于它本身代码的开放性,这提供了一个学习、借鉴的平台。这对分析仿真而言,本身就是一大利好&#xf…

[JAVA安全]Spring Messaging之CVE-2018-1270

漏洞简介 Spring 框架中通过spring-messaging 模块来实现 STOMP (Simple Text-Orientated Messaging Protocol),STOMP是一种封装 WebSocket的简单消息协议。攻击者可以通过建立WebSocket连接并发送一条消息造成远程代码执行, spring-messagin…

C++笔记 模板的进阶知识

目录 1. 非类型模板参数 2.模板的特化 2.1 函数模板的特化 2.2 类模板的特化 2.2.1 全特化 2.2.2 偏特化 3.模板的分离编译 3.1 什么是分离编译? 3.2 模板的分离编译 4.模板的总结 模板的初阶内容:(594条消息) C模板的原理和使用_全貌的博客-CSD…