【大数据】MapReduce

文章目录

    • @[toc]
      • 海量数据分流技术
        • 传统Hash
        • 一致性Hash(Consistent Hashing)
      • MapReduce执行流程
        • InputFormat
        • Shuffle
          • Partitioner
          • Spill
          • Combiner
      • MapReduce两个重要的进程
        • JobTracker
        • TaskTracker
      • MapReduce物理配置
        • 查看系统资源限制
        • 设置合适的slot
      • Hadoop Streaming
        • Streaming选项

因上努力

个人主页:丷从心·

系列专栏:大数据

果上随缘


海量数据分流技术

传统Hash
  • Hash(key) % max
一致性Hash(Consistent Hashing)
  • 将哈希值映射到一个哈希环上
  • 每个节点通过哈希函数映射到这个环上一个或多个点
  • 数据项也通过哈希函数映射到环上的某个点,然后按照顺时针方向查找到第一个节点,这个节点就是该数据项存储的地方

MapReduce执行流程

1

InputFormat
  • M a p R e d u c e MapReduce MapReduce框架基础类之一,进行 D a t a S p l i t Data \ Split Data Split数据分割和 R e c o r d R e a d Record \ Read Record Read记录读取
  • B l o c k Block Block是底层的文件块, M a p Map Map无法直接读取,需要将 B l o c k Block Block转换为内部可以识别的 R e c o r d Record Record
  • '\n'保证每条记录在数据切割时不被切散,实际上每个 S p l i t Split Split包含后一个 B l o c k Block Block中开头部分的数据,解决 R e c o r d Record Record B l o c k Block Block问题
  • R e c o r d R e a d e r Record \ Reader Record Reader每读取一条 R e c o r d Record Record,就调用一次 M a p Map Map函数
Shuffle
  • M a p Map Map任务的输出到 R e d u c e Reduce Reduce任务的输入之间的过程
Partitioner
  • 决定数据由哪个 R e d u c e Reduce Reduce处理,从而分区
  • P a r t i t i o n Partition Partition在一个环形内存缓冲区中进行,每个缓冲区大小默认 100 M 100 M 100M,溢写阈值为 100 M × 80 % = 80 M 100 M \times 80\% = 80 M 100M×80%=80M,缓冲区中的数据为 ( p a r t i t i o n , k e y , v a l u e ) (partition , key , value) (partition,key,value)三元组
Spill
  • 在内存缓冲区达到阈值时, S p i l l Spill Spill溢写线程会锁住 80 M 80 M 80M的缓冲区,开始将数据写到本地磁盘上,然后释放内存
  • 每次溢写都生成一个数据文件
  • 数据溢写前会对 k e y key key进行快速排序以及 C o m b i n e Combine Combine
Combiner
  • 将相同的 k e y key key的数据的 v a l u e value value进行合并
  • 减少数据量,提高数据传输效率

2

MapReduce两个重要的进程

JobTracker
  • 主进程,负责接收 C l i e n t Client Client作业提交,调度任务到从节点上运行
  • 监控工作节点状态及任务进度
  • 利用一个线程池来同时处理心跳和用户请求
TaskTracker
  • J o b T r a c k e r JobTracker JobTracker指派任务,实例化用户程序,在本地执行任务
  • 通过周期性的心跳来通知 J o b T r a c k e r JobTracker JobTracker其当前的健康状态,每 3 3 3秒心跳一次,每一次心跳包含了可用的 M a p Map Map R e d u c e Reduce Reduce任务数目、占用的数目以及运行中的任务详细信息

MapReduce物理配置

查看系统资源限制
ulimit -a
设置合适的slot
  • mapred.tasktracker.map.tasks.maximum默认值为 2 2 2
  • mapred.tasktracker.reduce.tasks.maximum默认值为 2 2 2

Hadoop Streaming

  • M a p Map Map R e d u c e Reduce Reduce只需要从 s t d i n stdin stdin读和写到 s t d o u t stdout stdout
  • S t r e a m i n g Streaming Streaming默认只能处理文本数据,如果对二进制数据进行处理,比较好的方法是将二进制的 k e y key key v a l u e value value进行 b a s e 64 base64 base64的编码转换,得到文本
Streaming选项
  • -cacheFile选项指定一个文件,需要上传到 H D F S HDFS HDFS
  • -cacheArchive选项指定一个目录结构,需要上传到 H D F S HDFS HDFS
  • -file选项将本地文件分发到计算节点上
  • -jobconf选项
    • mapred.job.priority表示作业优先级
    • mapred.job.map.capacity表示最多同时运行的 M a p Map Map任务数
    • mapred.job.reduce.capacity表示最多同时运行的 R e d u c e Reduce Reduce任务数
    • mapred.task.timeout表示任务未响应的最大时间

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

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

相关文章

python创建新环境并安装pytorch

python创建新环境并安装pytorch 一、创建新环境1、准备工作2、创建虚拟环境并命名3、激活虚拟环境 二、安装pytorch1、pytorch官网2、选择与你的系统相对应的版本3、安装成功 一、创建新环境 1、准备工作 本次创建的环境是在anaconda环境下,否则需要在纯净环境下创…

解放双手,批量自动上传视频到微信视频号

文件夹里面有很多视频,一个个手工上传到视频号很麻烦,可以借助AI来自动化。 先把视频号上传流程熟悉一遍,把一些按钮截图,记录一些屏幕坐标。 然后,在deepseek的代码助手中输入提示词: 你是一个Python编程…

SpringBoot自动配置源码解析+自定义Spring Boot Starter

SpringBootApplication Spring Boot应用标注 SpringBootApplication 注解的类说明该类是Spring Boot 的主配置类,需要运行该类的main方法进行启动 Spring Boot 应用 SpringBootConfiguration 该注解标注表示标注的类是个配置类 EnableAutoConfiguration 直译&#…

Es6-对象新增了哪些扩展?

​🌈个人主页:前端青山 🔥系列专栏:Javascript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Javascript篇专栏内容:Es6-对象新增了哪些扩展? 目录 一、参数 二、属性 函数的length属性 …

自学VBA 设置单元格文字格式 笔记

一.设定对应单元格对应需要显示的格式 Cells(1, 1).Font.Size 18 字体大小 Cells(1, 2).Font.Color RGB(255, 0, 0) 字体颜色 Cells(1, 3).Font.Name "黑体" 字体类型 Cells(1, 4).Font.Italic True 字体斜体 Cells(1, 5).Font.FontStyle "BOLD"…

三相电子负载:技术创新与发展

随着科技的不断发展,电力系统的需求也在不断增长。为了满足这些需求,充电三相电子负载技术也在不断创新和发展。这种技术主要用于测试和验证电源、充电器、电池等设备的性能和可靠性,以确保它们能够在各种条件下正常工作。 充电三相电子负载的…

【文末附gpt升级方案】探讨当前时机是否适合进入AIGC行业(一)

随着科技的飞速发展,人工智能生成内容(AIGC)作为新兴的技术领域,正逐步走进公众的视野,并在多个行业展现出巨大的应用潜力。然而,对于创业者、投资者以及希望进入这一领域的专业人士来说,当前时…

Redhat 8.0更换centos8.0yum源

Redhat 8.0更换centos8.0yum源 一、先检查一下系统内核以及版本二、更换yum源三、生成缓存并下载epel扩展源四、Redhat安装指定myslq5.7报错 一、先检查一下系统内核以及版本 1、查看内核 [rootlocalhost ~]# uname -a Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 …

Leetcode-有效的括号(带图)

20. 有效的括号 - 力扣(LeetCode)https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

echart柱状图的第一个柱子超出了y轴

解决 boundaryGap 此属性与坐标轴两端空白有关。默认值为true即留空,false则表示柱子顶头,而出现上述现象,是因为代码中参数 boundaryGap设置为了false 将boundaryGap的值改为true或者去掉那行代码不使用该参数即可 xAxis: {type: category,boundaryGap: true,// …

JUnit5嵌套测试

什么是嵌套测试: 测试用例体现业务的层级 Nested使用场景: 定制化执行用例用列层级、业务关系更加清晰 在不使用Nested注解时,其在执行时不能体现逻辑关系,导致很难判断 而使用Nested注解,需要结合class使用&#…

[OpenGL] 点光源阴影(万向阴影贴图)

本章节源码 点击此处 文档持续更新 一 为什么采用点透视投影 透视投影: 由于点光源是一个点向四周发散的光线,所以这将导致点光源会以不同的角度到达场景中的不同表面,造成近大远小的效果,所以要采用透视投影矩阵来处理点光源的阴影,透视投影能够正确反映这种随着…