大数据之 Hadoop

hadoop主要解决:海量数据的存储和海量数据的分析计算

hadoop发展历史

Google是hadoop的思想之源(Google在大数据方面的三篇论文)

2006年3月,Map-reduce和Nutch Distributed File System(NDFS)分别被纳入到Hadoop项目,Hadoop正式诞生。

MapReduce

对海量数据处理

map函数进行数据的提取、排序,实现mapper,四个形参(输入key,输入value,输出key,输出value),重写map方法,将输出信息写入到context中

reduce函数进行数据的计算,实现reduce,四个形参也是指定输入输出类型,reduce的输入类型必须匹配map的输出类型

job负责执行,控制整个作业的运行。

分为两个阶段,map阶段并行处理输入数据,reduce阶段对map结果进行汇总。

map阶段

第一个阶段把输入文件进行分片,

第二个阶段对输入的数据按照一定的规则解析成键值对,key表示每行首字符偏移值,value表示行文本内容

第三阶段是调用map方法,解析出来的每个键值对,调用一次map方法

第四阶段是按照一定规则对第三阶段输出的键值对进行分区

第五阶段是对每个分区中的键值对进行排序,首先按照key排序,再按value进行排序,完成后将数据写入内存中,内存中这片区域叫做环形缓存区。


 

reduce阶段

第一阶段copy map阶段输出的键值对

第二阶段把数据进行合并排序,把复制到ruduce阶段的数据全部合并,在对合并后的数据进行排序

第三个阶段是对排序后的键值对调用reduce方法。最后把输出的键值对写入到HDFS文件中



HDFS

是一个分布式文件系统

概念

整个HDFS有三个重要的角色:NameNode,DataNode,Client

    NameNode:可看作是分布式文件系统的管理者,主要负责文件系统的命令空间,集群配置信息,存储块的复制,namenode会将文件系统的meta-data存储在内存中,这些信息主要包括了文件信息、每个文件对应的文件块的信息和每个文件块在datanode的信息等。

     DataNode:是slave节点,是文件存储的基本单位,他将block存储在本地文件系统中,保存了block的meta-data,同时周期性的将所有存在的block信息发送给namenode。

     Client:切分文件,访问hdfs;与namenode交互,获取文件位置信息;与datanode交互,读取和写入数据。

     还有一个block的概念,block是hdfs读写的基本单位,hdfs最初都是被切割为block块存储的,这些块被复制到多个datanode中,块的大小(通常为128M)与复制的块数量在创建文件时由client决定。

               最小化寻址开销

              也不能设置过大,map任务通常一次只处理一个块中的数据,如果任务数太少(少于集群中的节点数量),作业的运行速度就会比较慢

   写入流程:

用户向客户端提出请求,要存储200M的数据;

client指定计划,将数据按照128M进行切分;

client告诉namenode,让把128m的数据复制为三份

namenode将三个datanode的地址告诉client,并且将他们根据到client的距离进行排序

client将数据与清单发送给第一个datanode,第一个datanode将数据复制给第二个datanode,第二个将数据复制给第三个datanode

如果某一个块的数据已经全部写入,就给namenode反馈已完成,对第二个block也进行相同的操作

所有的block已经全部写入,关闭文件,namenode会将数据持久化到磁盘上;

读取流程:

用户向客户端提出读取请求

client向namenode请求文件的所有信息

namenode将给client这个文件的块列表,以及存储各个块的数据节点清单(按照与client的距离排序)

client从最近的datanode下载所需的块。

YARN

简称yarn,一种资源协调者,是hadoop的资源管理器

ResourceManager(RM):整个集群资源的老大

ApplicationMaster(AM):单个任务运行的老大

NodeManager(NM):单个节点服务器资源老大

Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、cpu、磁盘、网络等。

HDFS,YARN,MapReduce三者关系

大数据技术生态系统

)Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

2)Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;

3)Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统;

4)Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计算。

5)Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。

6)Oozie:Oozie 是一个管理 Hadoop 作业(job)的工作流程调度管理系统。

7)Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,

它是一个适合于非结构化数据存储的数据库。

8)Hive:Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件设计师——计算机网络(一)

📑前言 本文主要是【计算机网络】——软件设计师计算机网络的题目,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

Django大回顾 -3 之响应对象、cbv和fbv、关于类中self是谁的问题、上传文件、模版

【1】isinstance方法 判断一个对象是否是一个已知的类型。 isinstance语法: isinstance(object,classinfo) object --------- 实例化对象 cassinfo ------- 可以是字节或间接类名、基本类型,或者由他们组成的元组 相同返回True,不…

Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享,谢谢老铁~ 本文所说的方法是在出现文件名乱码情况下,如何恢复文件名的正确中文名称,并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现,往往是系统、浏览器、网站三方面因素共…

【Excel】WPS快速按行筛选过滤

用的筛选都是进行列数据过滤,那么遇到一个情况需要行数据过滤查看数据 行过滤 选中行,然后右键菜单,行筛选。 列过滤

量子芯片:引领计算技术的新篇章

量子芯片:引领计算技术的新篇章 引言 随着量子计算的飞速发展,量子芯片作为量子计算机的核心组件,日益受到人们的关注。量子芯片的出现,不仅有望推动计算技术的革新,更将在信息安全、药物研发、金融投资等领域掀起巨大的变革。在本篇博客中,我们将深入探讨量子芯片的原理…

linux用户组管理_创建删除密码修改

2.2 用户/组管理 2.2.1 用户 2.2.1.1 useradd:创建用户 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。 useradd命令的基本语法如下: useradd 选项 用户名 常见选项参数&#xff…

如何保证缓存和数据库的双写一致性?

一、什么是数据库和缓存双写一致性? 在分布式系统中,数据库和缓存会搭配一起使用,以此来保证程序的整体查询性能。也就说,分布式系统为了缓解数据库查询的压力,会将查出来的数据保存在缓存中,下次再查询时…

VSCode编译多个文件

打开tasks.json文件,找到"$ {file}“这一行。然后在其后面添加你想要编译的文件即可。 比如我这里是想要编译当前文件夹下的所有.cpp文件,那么我就直接把”$ {file}"给注释掉了,然后再使用通配符来代表所有.cpp文件。 最后解释以下…

Unity版本使用情况统计(更新至2023年10月)

本期UWA发布的内容是第十三期Unity版本使用统计,统计周期为2023年5月至2023年10月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更…

现代风客餐阳台开放式一体布局,设计亮点。福州中宅装饰,福州装修

在现代家居设计中,开放式布局越来越受到欢迎。它不仅可以提升家居的空间感,还可以促进家人之间的交流和互动。这个客厅、餐厅、阳台一体化的设计,更是充分利用了空间,具有多重亮点。 01.玄关到客厅嵌入式一体式收纳柜 玄关是进入…

手机笔记工具怎么加密?

选择用手机笔记工具记事,大家可以记录很多学习笔记、读书笔记、私密日记等,手机作为随身携带的设备,记录相关的笔记比较快捷且方便,当手机笔记中记录的内容比较私密时,大家担心手机笔记会被别人误看,这时候…

测试相关-面试高频

测试面试相关 面试 测试的具体场景 功能测试 具体的测试工具Jmeter Postman selenium pytest 怎么看待测试的潜力与挑战 软件测试是正在快速发展,充满挑战的领域。尽管现在许多自动化测试软件的出现使得传统手工测试的方式被代替,但自动化测试工具的…