大数据之 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.mzph.cn/news/183104.shtml

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

相关文章

90基于matlab的无迹卡尔曼滤波器参数估计的非线性最小二乘优化

基于matlab的无迹卡尔曼滤波器参数估计的非线性最小二乘优化,数据可更换自己的,程序已调通,可直接运行。 90matlab无迹卡尔曼滤波器参数估计 (xiaohongshu.com)

基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化

基于社区电商的Redis缓存架构 首先来讲一下 Feed 流的含义: Feed 流指的是当我们进入 APP 之后,APP 要做一个 Feed 行为,即主动的在 APP 内提供各种各样的内容给我们 在电商 APP 首页,不停在首页向下拉,那么每次拉的…

CentOS 7 部署 Nacos (单机版)

CentOS 7 部署 Nacos (单机版) 1. 下载 Nacos 安装包 历史版本:https://github.com/alibaba/nacos/releases/ 我选的是 2.1.0 版本,https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz 2. …

C# WPF 基础教程——触发器、行为、形状、变换与透明、路径和几何图形

触发器 简单触发器 单条件触发器 多条件触发器 事件触发器 行为 形状 矩形和椭圆 Viewbox缩放控件,直线,折线,多边形 画刷 普通画刷 线性渐变画刷 环形渐变画刷 位图画刷 虚拟画刷(复制元素外观) 位图缓存画刷 变换…

Halcon Solution Guide I basics(5): 1D Measuring(一维测距)

文章专栏 我的Halcon开发 CSDN 专栏 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 随笔分类 - Halcon入门学习教程 前言 今天来学直线测距,主要是用来测量连点之间的线段距离。感觉是用来得到工业产品精度的。 文章解读 一维测距是非常简单的这里…

小航助学题库蓝桥杯题库c++选拔赛(22年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号) 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)

burp2023专业版,配置上游代理太难找

burpsuite2023专业版的工具栏与之前的版本不同的是,工具栏中没有了user options这一选项 但在通常的使用过程中,常用到配置上游代理。之前的版本呢,上游代理的配置都在user options选项中设置,user options选项还在工具栏中&#…

血的教训---入侵redis并免密登录redis所在服务器

血的教训—入侵redis并免密登录redis所在服务器 今天就跟着我一起来入侵redis并免密登录redis所在服务器吧,废话不多说,我们直接开始吧。 这是一个体系的学习步骤,当然如果基础扎实的话可以继续往下面看 以下都是关联的文章,可以学…

机器学习:DBSCAN算法(效果比K-means好)

基本概念 核心对象:以点为圆心半径为r的圆,如果圈里面的样本点大于给定的阈值(minPts),那么这个点就叫做核心点 直接密度可达:点p在q为圆心的圆内 密度可达: p1与p2直接密度可达,p2与p3直接密度可达&…

记录创建粒子的轻量级JavaScript库——particles.js(可用于登录等背景显示)

文章目录 前言一、下载particles.js二、引入particles.js并使用三、配置数据说明如有启发,可点赞收藏哟~ 前言 本文记录使用创建粒子的轻量级JavaScript库 particles.js 可用于登录等背景显示 一、下载particles.js 先下载particles.js库,放在项目libs…

msyql迁移到mongodb

关系型数据库迁移到mongodb的理由 高并发需求,关系型数据库不容易扩展 快速迭代 灵活的json模式 大数据量需求 应用迁移难度: 关系型到关系 oracle-》mysql oracle -》 postgresql 关系到文档- oracle -》 mongodb 需要考虑: 总体架构&#…

vue3实现元素拖拽移动功能

效果图 实现拖拽移动 首先我们给需要实现功能的元素加一个draggable"true"让元素能够被拖拽 先来认识两个搭配draggable属性一起使用的事件——ondragstart和ondragend,它们的定义分别为: ①. ondragstart 事件在用户开始拖动元素或选择的文…

如何使用录屏软件在电脑录制PDF文件

我有一个PDF文件,想用录屏软件将它录制下来并添加上详细的注释,然后发给客户看,请问应该如何录制呢?有没有推荐的录屏软件呢? 不用担心,本文将会详细的为您讲解如何使用录屏软件在电脑端录制PDF文件&#…

使用MechanicalSoup库的爬虫程序

1. 首先,我们需要导入MechanicalSoup库和requests库,这两个库都是Python中爬虫常用的库。 2. 接着,我们要设置一个代理服务器,使用proxy_host和proxy_port参数来指定。 3. 使用requests.get方法来获取网页的HTML代码。 4. 使用Bea…

内存函数​(memcpy、memmove、memset、memcmp)

目录 一、memcpy的使用和实现 使用: 模拟实现: 二、memmove 使用和模拟实现 模拟实现: 2.1难点: 覆盖拷贝所在的问题 memset的使用 memcmp的函数的使用​ 一、memcpy的使用和实现 memcpy 拷贝的就是不重叠的内存。 参数…

Linux(fork+exec创建进程)

1.进程创建 内核设计与实现43页; 执行了3次ps -f ,ps -f的父进程的ID(PPID)都是一样的,即bash. 实际上Linux上这个bash就是不断的复制自身,然后把复制出来的用exec替换成想要执行的程序(比如ps); 运行ps,发现ps是bash的一个子进程;原因就是bash把自己复制一份,然后替换成ps;…

竞赛选题 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

dbeaver连接amabri-hbase

目录 尝试过程 解决之道 总结 尝试过程 注意此章节为记录试错过程,无需跟随操作,仅作试错记录。真正操作方法请看“解决之道”章节 环境ambari安装的hbase2.1.6 使用apche phoenix默认驱动配置 备注:Apache Phoenix 是一个开源的、基于…

fastadmin 如何引入自己的js

在需要的界面中&#xff1a;如何实例说明&#xff1a; 中<script> function zhuruJs(url) { let temp document.createElement( script ); temp.setAttribute( type, text/javascript" );temp.src urL; document.head . appendChild(temp); zhuruJs(location…

ffmpeg 免安装,配置环境变量

1、下载ffmpeg https://download.csdn.net/download/qq284489030/88579595 2、解压 解压ffmpeg-4.4-essentials_build.zip到目标文件夹&#xff0c;比如 d:\apps下&#xff1b; 3、配置环境变量 &#xff08;1&#xff09;电脑桌面鼠标右键点击“此电脑”&#xff0c;弹出…