当前位置: 首页 > news >正文

hadoop学习(二)

一.MapReduce

1.1定义:是一个分布式运算程序的编程框架

1.2核心功能:将用户编写的业务逻辑代码自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

1.3优点

1)易于编程

它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行(正是因为这个特点使MapReduce编程变得非常流行)

2)良好扩展性

可以通过简单地增加机器来扩展它的计算能力。

3)高容错性

MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。

4)适合PB级以上海量数据地离线处理

可以实现上千台服务器集群并发工作,提供数据处理能力。

1.4缺点

1)不擅长实时计算

无法像MySQL一样,在毫秒或者秒级内返回结果

2)不擅长流式计算

流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。

3)不擅长有向无环图计算

每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

1.5MapReduce核心思想

1)分布式的运算程序往往需要分成至少2个阶段。

2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。

3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。

4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

总结分析WordCount数据流走向深入理解MapReduce核心思想

1.6 MapReduce进程

一个完整的MapReduce程序在分布式运行时有三类实例进程

1)MrAppMaster:负责整个程序的过程调度及状态协调。

2)MapTask:负责Map阶段的整个数据处理流程。

3)ReduceTask:负责Reduce阶段的整个数据处理流程。

1.7常用数据反序列类型

1.8 编程规范

编写程序可分为Mapper、Reducer和Driver三部分。

Mapper阶段:

1)自定义的Mapper要继承自己的父类

2)Mapper的业务逻辑写在map()方法中

3)Mapper的输入、输出数据是K-V对的形式

4)map()方法(Map Task进程)对每一个k-V调用一次

Reducer阶段

1)自定义的Reduce要继承自己的父类

2)业务逻辑写在reduce()方法中

3)Reduce的输入数据类型对应Mapper的输出数据类型

4)ReduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

Driver阶段

相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象。

二、Hadoop序列化

2.1 序列化和反序列化

序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。 

反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。

2.2为何不使用Java的序列化

Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输

2.3 Hadoop序列化的特点

1)紧凑:高效使用存储空间

2)快速:读写数据的额外开销小

3)互操作:支持多语言的交互

2.4 实现bean对象序列化

1)必须实现Writable接口(FlowBean继承Writable接口)

2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造

public FlowBean() {
super();
}

(3)重写序列化方法

@Override
public void write(DataOutput out) throws IOException {
out.writeLong(upFlow);
out.writeLong(downFlow);
out.writeLong(sumFlow);
}

(4)重写反序列化方法

@Override
public void readFields(DataInput in) throws IOException {
upFlow = in.readLong();
downFlow = in.readLong();
sumFlow = in.readLong();
}

(5)反序列化的顺序和序列化的顺序相同

(6)要想把结果显示在文件中,需要重写toString(),可用"\t"分开,方便后续用。

(7)如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce框中的Shuffle过程要求对key必须能排序。

@Override
public int compareTo(FlowBean o) {
//设置从大到小排序
return this.sumFlow > o.getSumFlow() ? -1 : 1;
}

3.InputFormat数据输入

3.1 MapTask并行度决定机制

数据块:BlockHDFS物理把数据分成一块一块。数据块是HDFS存储数据单位

数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储数据切片是MapReduce程序计算输入数据的单位,一个切片会对应启动一个MapTask。

相关文章:

hadoop学习(二)

一.MapReduce 1.1定义&#xff1a;是一个分布式运算程序的编程框架 1.2核心功能&#xff1a;将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 1.3优点 1&#xff09;易于编程 它简单的实现一些接口&#…...

WXZ196微机消谐装置的运行方式了解一下

WXZ196微机消谐装置是一种用于抑制铁磁谐振的设备&#xff0c;可以在电力系统中快速消除各种频率的铁磁谐振&#xff0c;同时可以区分过电压、铁磁谐振以及单相接地&#xff0c;并给出相应的报警信号。该装置采用高速增强型单片机作为核心元件&#xff0c;对PT开口三角电压进行…...

单链表的建立

一.前言 单链表的建立一共有两种方法&#xff0c;一种是头插法&#xff0c;将元素插入在链表的头部&#xff0c;也叫前插法。另外一种则就是尾插法&#xff0c;将元素插入在链表尾部&#xff0c;也叫后插法。 二. 头插法 首先从一个空表开始&#xff0c;重复读入数据&#xff1…...

Shell脚本编程学习

IPv4和IPv6有什么区别&#xff1f; - 知乎 (zhihu.com) Shell 是一个命令解释权&#xff0c;它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序&#xff0c;用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。 可以查看当前系统的进程 ps -ef...

从宏基因组量化细菌生长动态

Introduciton 了解细菌在各种环境中的生长动态对于人类健康和环境监测等广泛领域至关重要。传统研究细菌生长的方法往往依赖于培养技术&#xff0c;这不仅耗时&#xff0c;而且对易培养的物种有偏向。然而&#xff0c;随着宏基因组测序技术的兴起&#xff0c;我们现在可以直接…...

Linux---git工具

目录 初步了解 基本原理 基本用法 安装git 拉取远端仓库 提交三板斧 1、添加到缓存区 2、提交到本地仓库 3、提交到远端 其他指令补充 多人协作管理 windows用户提交文件 Linux用户提交文件 初步了解 在Linux中&#xff0c;git是一个指令&#xff0c;可以帮助我们做…...

【JavaScript】函数的动态传参

Javacript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名&#xff0c;但是它也被用到了很多非浏览器环境中&#xff0c;JavaScript基于原型编程、多范式的动态脚本语言&…...

从0到1,AI我来了- (4)AI图片识别的理论知识-II

上篇文章&#xff0c;我们理解了我们程序的神经网络设计&#xff0c;这篇我们继续&#xff0c;把训练迭代过程分析一下&#xff0c;完成这两篇文章&#xff0c;下面问题&#xff0c;应该能回答了。 一张图片&#xff0c;如何被计算机读懂&#xff1f;pytorch 封装的网络&#…...

2024 Java 高分面试宝典 一站式搞定技术面

前言 每年9月和10月&#xff0c;被业界称为“金九银十”&#xff0c;这是人才市场一年中最活跃的时期。此时&#xff0c;企业为了来年的业务扩展&#xff0c;纷纷加大招聘力度&#xff0c;空缺岗位众多&#xff0c;招聘需求集中。同时&#xff0c;初秋的招聘活动也避开酷暑&am…...

MongoDB - 聚合操作符 $eq、$gte、$in、$sum、$avg

文章目录 1. $eq2. $gte3. $in4. $sum5. $avg 1. $eq $eq比较两个值并返回&#xff1a;true &#xff08;当值相等时&#xff09;|false&#xff08;当值不相等时&#xff09; { $eq: [ <expression1>, <expression2> ] }构造测试数据&#xff1a; db.inventory…...

C语言 | Leetcode C语言题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; // 判断是否为完全平方数 bool isPerfectSquare(int x) {int y sqrt(x);return y * y x; }// 判断是否能表示为 4^k*(8m7) bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7; }int numSquares(int n) {if (isPerfect…...

在appium中,如何通过匹配图片来进行断言?

在Appium中进行图片匹配断言&#xff0c;可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。 首先&#xff0c;需要确保安装了必要的库&#xff1a; pip install opencv-python-headless pip install opencv-python pip install numpy然后&#xf…...

昇思25天学习打卡营第21天|CV-Shufflenet图像分类

打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…...

python 图片转文字、语音转文字、文字转语音保存音频并朗读

一、python图片转文字 1、引言 pytesseract是基于Python的OCR工具&#xff0c; 底层使用的是Google的Tesseract-OCR 引擎&#xff0c;支持识别图片中的文字&#xff0c;支持jpeg, png, gif, bmp, tiff等图片格式 2、环境配置 python3.6PIL库安装Google Tesseract OCR 3、安…...

SSRF (服务端请求伪造)

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…...

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN

在SQL中&#xff0c;JOIN操作是连接两个或多个数据库表&#xff0c;并根据两个表之间的共同列&#xff08;通常是主键和外键&#xff09;返回数据的重要方法。其中&#xff0c;LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;和INNER JOIN…...

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过&#xff0c;可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法&#xff1a; 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…...

【React】详解“最新”和“最热”切换与排序

文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…...

BUUCTF [MRCTF2020]Ezpop

这道题对于刚接触到pop链的我直接把我整懵了&#xff0c;一边看着魔术方法一边分析 魔术方法可以看这里PHP 魔术方法 - 简介 - PHP 魔术方法 - 简单教程&#xff0c;简单编程 (twle.cn) 代码解析 经过以上的分析我们可以理一下解题思路&#xff1a;接收参数反序列化之前先触发…...

RV1126 Linux 系统,接外设,时好时坏(一)应该从哪些方面排查问题

在 Linux 系统中接外设时,遇到“时好时坏”的问题,可能是由多种因素引起的。以下是一些排查问题的建议。 1. 硬件方面的排查 1.1 连接检查 物理连接: 确保外设与主板之间的连接良好,检查插头、插座及线缆是否牢固。引脚配置: 确认设备树中引脚的配置是否正确,尤其是引脚…...

基于Java的私人牙科诊所管理系统(10008)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

嵌入式调试进阶:JScope RTT模式移植与性能实测(对比HSS,速度提升千倍)

嵌入式调试革命&#xff1a;JScope RTT模式深度优化与高频数据采集实战 在电机控制、电源管理和高速信号处理等嵌入式应用场景中&#xff0c;开发人员经常需要实时监控关键变量的变化趋势。传统调试工具往往面临采样率低、数据延迟大等问题&#xff0c;而SEGGER JScope的RTT模式…...

Illustrator脚本革命:7个必备工具彻底改变你的设计工作流

Illustrator脚本革命&#xff1a;7个必备工具彻底改变你的设计工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否还在Adobe Illustrator中重复着枯燥的手工操作&#xff…...

onlybooks/llm项目解析:大语言模型本地部署与微调实战指南

1. 项目概述与核心价值最近在折腾大语言模型本地部署和微调的朋友&#xff0c;估计没少在各种开源社区和模型仓库里翻找。我自己也是&#xff0c;从早期的GPT-2到现在的各种百亿、千亿参数模型&#xff0c;一路踩坑过来&#xff0c;深感一个清晰、易用、维护良好的项目对效率提…...

AMD锐龙处理器深度调优终极指南:5种专业级配置策略

AMD锐龙处理器深度调优终极指南&#xff1a;5种专业级配置策略 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitco…...

Attu:向量数据库可视化管理工具的终极指南

Attu&#xff1a;向量数据库可视化管理工具的终极指南 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu 还在为复杂的向量数据库命令行操作而烦恼吗&#xff1f;Attu作为Milvus向量数据库的官方图形化管理工具&#xf…...

龙标管官方,凰标护民间:中国文化双轨时代到来@凤凰标志

龙标掌正统 凰标护民间 中国文艺进入「双轨」新时代官方有规制&#xff0c;民间有温度&#xff1b; 一龙定正统&#xff0c;一凰润众生。失衡百年&#xff1a;单轨秩序的盲区 长久以来&#xff0c;中国文艺创作领域存在一处结构性失衡&#xff1a;官方正统民间原创有规制、有标…...

从数据提取到AI记忆:WeChatMsg项目开发者协作实战蓝图

从数据提取到AI记忆&#xff1a;WeChatMsg项目开发者协作实战蓝图 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

人机冲突类型学:基于意义行为原生论与自感痕迹论的系统性分析

人机冲突类型学&#xff1a;基于意义行为原生论与自感痕迹论的系统性分析 摘要&#xff1a;本文旨在构建一种新的人机冲突类型学&#xff0c;其理论基础是岐金兰的“意义行为原生论”与“自感痕迹论”。不同于现有研究从外部功能或伦理原则出发分类冲突&#xff0c;本文提出&am…...

DroidCam OBS插件终极指南:零成本将手机变身高清直播摄像头

DroidCam OBS插件终极指南&#xff1a;零成本将手机变身高清直播摄像头 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin 还在为专业直播设备价格昂贵而烦恼&#xff1f;想用手机摄像头获得…...