大数据之 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:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

webshell之字节码免杀

字节码生成 javac生成字节码 这种方式简单的说就是用ideal将java文件编程成class文件,然后将class读取出来用base64编码即可,这种方式比较方便简单,不需要会使用ASM,javassist等字节码框架。 Shell.java javassist生成字节码 j…

新手老师如何管理班级的日常工作

作为一名新手老师,管理班级的日常工作可能会是一项挑战,但以下是一些可能有用的建议: 建立良好的班级文化 班级文化是班级氛围的重要组成部分,对于学生的学习和成长具有重要影响。作为老师,要积极营造一种积极向上、团…

冒泡排序以及改进方案

冒泡排序以及改进方案 介绍: 冒泡排序属于一种典型的交换排序(两两比较)。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素,如果顺序不对就像水泡一样交换它们的位置,直到整个序列像水泡一样…

viple模拟器使用(四):unity模拟器中实现沿右墙迷宫算法

沿右墙迷宫算法 引导 线控模拟可以使得通过用户手动操作,实现机器人在模拟环境下在迷宫中行走(即:运动),算法可以使得机器人按照一定的策略自动行走,沿右墙迷宫算法就是其中的一种策略。 目的 运行程序后&…

C语言--求x的y次方【详细解释+代码优化】

一.利用库函数pow&#x1f357; pow函数的原型为&#xff1a; double pow(double base, double exponent); base为底数&#xff0c;exponent为指数&#xff0c;传入两个参数&#xff0c;返回值是计算的结果。需要引用头文件#include<math,h>. //方法一&#xff1a;利…

快捷键被占用了,这能忍吗?赶紧使用 OpenArk 找出元凶并干掉它!!!

文章目录 一、 问题&#xff1a;快捷键被占用了导致影响工作效率二、OpenArk 2.1 OpenArk简介 功能发布官方链接 2.2 下载OpenArk2.3 运行OpenArk2.4 被占用的热键元凶到底是谁&#xff1f; 三、总结 一、 问题&#xff1a;快捷键被占用了导致影响工作效率 你是否遇到过&#x…

教师如何备课,上好一堂课

作为一名教师&#xff0c;备课是上好一堂课的关键。备课不仅仅是准备教材和教具&#xff0c;更是制定教学计划、设计教学方法、预测学生学习效果的重要环节。接下来我分享几点备课和上课的心得。 深入理解教学大纲 教学大纲是备课的指导性文件&#xff0c;只有深入理解教学大纲…

怀旧经典——魔力宝贝秒遇怪功能分析

《魔力宝贝》作为一款非常早的网络游戏&#xff0c;可谓是经久不衰。作为这样一款古老的2D回合制网游&#xff0c;早些年的一些开发理念也导致了游戏中的漏洞比较多。秒遇怪和不遇怪是回合制网游玩家梦寐以求的外挂功能&#xff0c;而这款游戏就可以实现。 所谓秒遇怪是只在无…

额,收到阿里云给的赔偿了!

众所周知&#xff0c;就在刚过去不久的11月12号&#xff0c;阿里云突发了一次大规模故障&#xff0c;影响甚广。 以至于连咱们这里评论区小伙伴学校的洗衣机都崩了&#xff08;手动doge&#xff09;。 这么关键的双11节点&#xff0c;这么多热门业务和产品&#xff0c;这么大规…

京东API接口的接入(京东工业)

在技术交流群&#xff0c;大家有探讨稳定获取京东商品主图、价格、标题&#xff0c;及sku的完整解决方案。这个引起了我技术挑战的兴趣。 目前&#xff0c;自己做了压测&#xff0c;QPS高、出滑块概率极低&#xff0c;API整体稳定&#xff0c;可满足业务场景的性能需求。 公共…

【分布式系统学习】CAP原理详解

CAP原理详解 前言CAP一张图 一、概念1.1 关键词解读1.2 关于CAP&#xff08;拆分解读&#xff09;1.3 CAP原理精髓 二、CAP模拟场景举例理解三、CAP原理证明为什么不能同时满足&#xff08;下面举例说明&#xff09;3.1 必须满足分区容错性P下的处理方式3.2 不是必须满足分区容…

智慧工地解决方案,Spring Cloud智慧工地项目平台源码

智慧工地一体化信息管理平台源码&#xff0c;微服务架构JavaSpring Cloud UniApp MySql 智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、物联网和移动互联网等高科技技术手段&#xff0c;将施工区域各系统数据汇总&#xff0c;建…

学生信息管理系统程序Python

系统主界面 在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;有两种方法&#xff0c; 一种是输入1&#xff0c;另一种是按下键盘上的↑或↓方向键进行选择。这两种方法的结果是一样的&#xff0c;所以使用哪种方法都可以。 &#xff08;…

如何给shopify的网址做301跳转

很多shopify的运营者或者推广者由于缺货或者货物变更&#xff0c;又或者自己更换了使用的主题&#xff0c;导致自己的URL结构发生了变化&#xff0c;由于不想浪费掉自己原有URL 的流量&#xff0c;就想做个301跳转&#xff0c;让自己新的网址来承接原有的流量。接下来给大家介绍…

vue3中的动态component组件

is属性来指定要渲染的组件(填写组件名&#xff09; 多个子组件通过component标签挂载在同一个父组件中&#xff0c; 可以修改is属性进行动态切换组件。 可以搭配<keep-alive></keep-alive>使用。 父组件代码&#xff1a; <template><div style"fon…

数据结构:哈希表讲解

哈希表 1.哈希概念2.通过关键码确定存储位置2.1哈希方法2.2直接定址法2.3除留余数法 3.哈希冲突概念4.解决哈希冲突4.1闭散列4.1.1概念4.1.2哈希表扩容4.1.3存储位置的状态4.1.4关于键值类型4.1.5代码实现 4.2开散列4.2.1概念4.2.2哈希表扩容4.2.3代码实现 4.3开闭散列的对比 1…

深度学习模型命令行传参——断点调试解决方案

深度学习模型debug 问题 ​ 在深度学习中&#xff0c;经常见到训练代码如下所示&#xff0c;通过命令行进行参数传递&#xff0c;但是通过这种方法&#xff0c;不利于我们使用pycharm自带的调试debug程序。 解决方案 新建一个py文件&#xff0c;通过调用subprocess库&#x…

Numpy进阶

NumPy进阶80题完整版

AD1668A 双N/P沟道 MOS管 耐压20V 过流2.1A 适用于正反接充电

AD1668A 双N/P沟道 MOS管 耐压20V 过流2.1A 的集成MOS管&#xff0c;封装TSOT23-8封装&#xff0c;体积小&#xff0c;适用于板子较小的板子。相当于2个SI2301、2个SI2302的集成模块。 芯片的内阻 N沟道的基本参数 P沟道的基本参数 这种结构的方式是适用于正反接都能充电的结构…

【每日一题】无限集中的最小数字

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;有限集合方法二&#xff1a;有序集合 写在最后 Tag 【有序集合】【2023-11-29】 题目来源 2336. 无限集中的最小数字 题目解读 设计一个类实现移除无限集中的最小整数以及向该无限集中增加一个原集合中不存在的整数。…