史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce

简介: 目录1 MapReduce概述2 MapReduce编程模型之通过wordcount词频统计分析案例入门MapReduce执行流程InputFormatOutputFormatOutputFormt接口决定了在哪里以及怎样持久化作业结果。
img_31c02313cd1c68e85e3ef322b328bd0f.png
目录

1 MapReduce概述

img_21772479c37477f2663b37afa25ba195.png

2 MapReduce编程模型之通过wordcount词频统计分析案例入门

img_5d2daa00b3a473373efecad040fdd45b.png

MapReduce执行流程

img_9ae90c753f87d07e3b7fdc241edc0aa8.png

img_cbb97b46bd33f93053c7c69c822efaeb.png
img_dc7e7cb5609d1a0f358884ed626850ca.png
  • InputFormat


    img_16473a45dc363ac8209c0710ce77d44e.png

    img_43390f7a5cad73be40d35df5219aaa52.png

    img_54b0d2f1f1d74018e4cf00da2de9420e.png

    img_f3cd519ba9566c789e36a1ae992d84b6.png
  • OutputFormat
    OutputFormt接口决定了在哪里以及怎样持久化作业结果。Hadoop为不同类型的格式提供了一系列的类和接口,实现自定义操作只要继承其中的某个类或接口即可。你可能已经熟悉了默认的OutputFormat,也就是TextOutputFormat,它是一种以行分隔,包含制表符界定的键值对的文本文件格式。尽管如此,对多数类型的数据而言,如再常见不过的数字,文本序列化会浪费一些空间,由此带来的结果是运行时间更长且资源消耗更多。为了避免文本文件的弊端,Hadoop提供了SequenceFileOutputformat,它将对象表示成二进制形式而不再是文本文件,并将结果进行压缩。

3 MapReduce核心概念

img_ebf4e000b41168f64408e8cd2c82785d.png

img_012fc39139036b05a3b472a52bdd01f5.png

3.1 Split

img_88e2b0cb4862ac7f00a702a40b900757.png

3.2 InputFormat

4 MapReduce 1.x 架构

img_2e9c8bad53ff5768c8035383d59c7a6b.png
img_4b43d8f44554c1f661ed6b853cf8ff76.png

img_c99f71c1d8960304ce729d90dc1af0eb.png

img_65957ec055cca28dd458567b69bd6d60.png

img_f79e62c52e5c243ce783920e55f4b37b.png

5 MapReduce 2.x 架构

img_2c490e0c50c9170c2c0f1d74e33d116e.png

6 Java 实现 wordCount

img_5127dd9a55a2f5507bc2151c4d5665d3.png

img_41227dd66b0d83cfdd106c4ea0278434.png
clean package

img_3fd46fea456df3397e9cf6e21a1c29e0.png
上传到Hadoop服务器

img_ceec34ba2cc18cfc821cff9c4e715c90.png
全路径没有问题

img_ce05f034248354a076e68ac4d0092471.png

7 重构

img_cfcd5a21a7c56e8b0d2c8fec67246cd1.png

8 Combiner编程

img_c0c578f8d99ecda4828992c076f9af3c.png

9 Partitoner

img_f5d970db39fa491d2ccc0c49b2be80c8.png

img_34ae74cbc9211497f3ca07ff881823e5.png

10 JobHistoryServer

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
11月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
233 2
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
723 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
347 11
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1820 0
分布式爬虫框架Scrapy-Redis实战指南
|
11月前
|
数据采集 缓存 NoSQL
分布式新闻数据采集系统的同步效率优化实战
本文介绍了一个针对高频新闻站点的分布式爬虫系统优化方案。通过引入异步任务机制、本地缓存池、Redis pipeline 批量写入及身份池策略,系统采集效率提升近两倍,数据同步延迟显著降低,实现了分钟级热点追踪能力,为实时舆情监控与分析提供了高效、稳定的数据支持。
479 1
分布式新闻数据采集系统的同步效率优化实战
|
12月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
3303 7
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
1068 4
|
机器学习/深度学习 分布式计算 API
Python 高级编程与实战:深入理解并发编程与分布式系统
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程和异步IO。本文将深入探讨 Python 在并发编程和分布式系统中的应用,并通过实战项目帮助你掌握这些技术。
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。