mapper-reducer编程搭建

news2025/1/15 13:00:55

一.虚拟机安装CentOS7并配置共享文件夹
二.CentOS 7 上hadoop伪分布式搭建全流程完整教程
三.本机使用python操作hdfs搭建及常见问题
四.mapreduce搭建
五.mapper-reducer编程搭建

mapper-reducer编程搭建

    • 一、打开hadoop
    • 二、创建mapper.py、reducer.py及参数文件
      • 1.创建 mapper.py
      • 2.创建reducer.py
      • 3.创建参数文件
      • 4.本地测试map与reduce
    • 三、测试
      • 1.hadfs中创建目录
      • 2.上传test00.txt到hdfs中
      • 3.执行测试例程
      • 4.下载结果文件

一、打开hadoop

在这里插入图片描述

二、创建mapper.py、reducer.py及参数文件

1.创建 mapper.py

cd /home/huangqifa/software/
touch mapper.py

编辑内容

sudo gedit mapper.py

粘贴如下内容:

#!/usr/bin/env python
import sys
for line in sys.stdin:
	line = line.strip()
	words = line.split()
	for word in words:
		print '%s\t%s' % (word, 1)
# input comes from standard input
# remove leading and trailing whitespace
# split the line into words
# write the results to STDOUT

2.创建reducer.py

touch reducer.py
sudo gedit reducer.py

粘贴如下

#!/usr/bin/env python
from operator import itemgetter
import sys
current_word = None
current_count = 0
word = None
for line in sys.stdin:
	line = line.strip()
	word, count = line.split('\t', 1)
	try:
		count = int(count)
	except ValueError:
		Continue
	if current_word == word:
		current_count += count
	else:
		if current_word:
			print '%s\t%s' % (current_word, current_count)
		current_count = count
		current_word = word
if current_word == word:
	print '%s\t%s' % (current_word, current_count)

赋权

sudo chmod +x mapper.py
sudo chmod +x reducer.py 

3.创建参数文件

touch test00.txt

粘贴如下

foo foo quux labs foo bar quux

在这里插入图片描述

4.本地测试map与reduce

测试mapper.py

echo "foo foo quux labs foo bar quux" | ./mapper.py

测试reducer.py

echo "foo foo quux labs foo bar quux" | ./mapper.py | sort -k1,1 | ./reducer.py

#其中sort -k 1起到了将mapper的输出按key排序的作用:-k, -key = POS1[,POS2] .
在这里插入图片描述

三、测试

1.hadfs中创建目录

hdfs dfs -mkdir -p /user/input

2.上传test00.txt到hdfs中

上传test00.txt到hdfs中的 /user/input目录

hdfs dfs -put /home/huangqifa/software/test00.txt /user/input

在这里插入图片描述

3.执行测试例程

hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar -files /home/huangqifa/software/mapper.py,/home/huangqifa/software/reducer.py -mapper "mapper.py" -reducer "reducer.py" -input /user/input/test00.txt -output /user/output

注意修改为自己的mapper.py、reducer.py路径

若已存在/user/output执行时会报错

hdfs dfs -rm -r /user/output

查看输出文件

hdfs dfs -cat /user/output/*

在这里插入图片描述

4.下载结果文件

hadoop fs -ls /user/output/
hadoop fs -get /user/output/part-00000

在这里插入图片描述
或者通过浏览器网页下载

在这里插入图片描述

参考
https://blog.csdn.net/andy_wcl/article/details/104610931
https://blog.csdn.net/qq_39315740/article/details/98108912

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

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

相关文章

Android Framework 如何学习,如何从应用深入到Framework?

1、为什么要学Android Framework呢? 一方面,面试考察相关内容的可能性高。随着Android开发者越来越多,企业对Android程序员的筛选也有了更高的要求, 考察对Android底层逻辑的理解和思考就是很重要的一个方面,尤其是An…

遥感测深方法综述(一)遥感测深方兴未艾

众所周知,当前世界上许多沿海近岸区域的海图数据更新滞后,甚至直接空白,大约有50%的沿海国家不具备国家级海图制图能力,特别是发展中国家常缺乏足够的水深数据或海图,总体上的浅海测深和制图能力处于从“贫乏”到“具备…

智慧社区管理系统08(维修和柱状图显现)

目录 后端代码 实体类 mapper层 mappers sql语句 Service层 接口 实现类 Controller层 前端部分 列表显示 后端代码 实体类 package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data…

跨境电商:圣诞前的狂欢,超级星期六营销白皮书

“黑五”和“网一”的促销大戏终于告一段落了。Nox聚星获悉,Adobe Analytics的初步统计显示,美国购物者在今年黑色星期五的线上支出达到创纪录的91.2亿美元,增长2.3%。今年的市场表现比预期的要好,对跨境卖家而言,是个…

01-Maven高级

回顾 知识目标 第一单元、父子工程 1、为什么使用父子工程? 1.1、痛点1:提高了代码的重用性 父控制器的存在就是为了去除重复,一个项目存在多个模块,可能由多个人开发,比如abc3个模块,3个模块都是基于…

如何设计分布式系统-分布式事务-XA?

以下为个人观点,如有纰漏敬请指正。 如何设计分布式系统-CAP和BASE理论?_技术分子的博客-CSDN博客​​​​​​ 什么是事务? 处理问题整个过程中同时具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)&am…

Fucoidan-PLGA 岩藻多糖-聚乳酸-羟基乙酸共聚物 PLGA-PEG-Fucoidan

Fucoidan-PLGA 岩藻多糖-聚乳酸-羟基乙酸共聚物 PLGA-PEG-Fucoidan 中文名称:岩藻多糖-聚乳酸-羟基乙酸共聚物 英文名称:Fucoidan-PLGA 别称:PLGA修饰岩藻多糖,PLGA-岩藻多糖 岩藻多糖修饰的壳聚糖聚乳酸-羟基乙酸共聚物[poly…

软件测试面试技巧:如何提高面试通过率?这3点一定要做到

对于想要进入到软件测试岗的新手人员来说,面试这一关是非常重要的,它直接关系着你的去留,也关系后续的期待遇问题,那么,有没有什么技巧可以帮忙提高面试通过率呢? 关于这一问题答案,我从这几个方…

云计算模式的优势

PaaS是一种云计算形式,它提供了一个平台,允许开发人员和程序员开发、运行和管理自己的应用,而无需构建和维护相关的基础架构或平台。它就像是一个地基,由专门的平台服务提供商进行搭建和运营,并将该平台以服务的方式提…

D-022 SD/TF卡硬件电路设计

SD/TF卡硬件电路设计1 简介2 SD卡和Micro接口定义3 硬件设计要点4 硬件电路实战1 简介 SD卡按尺寸可以分为:标准SD卡、MiniSD卡、MicroSD卡。SD存储卡是一种基于半导体快闪记忆器的忆器设备。它具有体积小、传输速度快、支持热插拔等优点,在便携式装置领…

无延时直播/超低延时直播画面同步性测试(实测组图)

阿酷TONY / 原创 2022-11-30 / 长沙 / 超多组图 无延时直播/超低延时直播,主要只测试延时情况,没有涉及直播产品的功能、使用操作界面,有兴趣的朋友可以加联系我实际测试哦~~~ 1.无延时直播应用场景 无延时直播/超低延时常见应用场景&a…

用字典统计序列中键和值的数量collections.Counter()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 用字典统计序列中键和值的数量 collections.Counter() 选择题 以下python代码结果错误的一项是? from collections import Counter myList[a,b,a] print(【显示】myList,myList) myDictCoun…

全波形反演的深度学习方法: 第 3 章 常规反演

本章介绍反演的基础知识, 以及工程中的常规反演. 仅供内部培训. 3.1 地震数据采集 地震勘探中常使用人工激发的振动进行数据采集. 相应装置包括: 激发器是产生震动的装置, 如炸药, 地震车 (撞击地面). 在城市道路等具有车辆会产生振动的地方, 也可以不安装这类装置;地震检波…

定时执行专家 —— 定时循环发送UDP消息(例如:控制远程电脑的开机、关机、重启、打开和关闭程序等)

目录 ◆ 定时执行专家 - 发送UDP消息功能 - 设置方法 - 使用注意事项 ◆ 两种发送方式 ◆UDP消息的两种格式类型 ◆ 关于UDP协议 ◆ 定时执行专家 - 发送UDP消息功能 - 设置方法 (1)点击 “定时执行专家” 工具栏 “新建” 图标,打开…

低温烹饪过程中真空压力的自动控制

摘要:真空低温烹饪法作为已经经典的高品质烹饪方法,并未得到广泛的应用,主要问题是无法针对各种食材进行真空度的准确设定和控制。本文将针对低温烹饪目前存在的真空度控制问题,提出相应的解决方案。解决方案的核心是采用动态平衡…

Microolap DAC for MySQL驱动程序或其他库

Microolap DAC for MySQL驱动程序或其他库 用于MySQL和Delphi/CBuilder(也称为MySQLDAC)的Microolap直接访问组件是一组Borland Delphi/CBuilder组件,允许直接连接到MySQL数据库服务器。DAC for MySQL允许您创建Delphi/CBuilder应用程序,无需BDE、ODBC或…

连表查询数据,将数据分组串联到一起

场景:用户中心,一个用户是对应多个角色的,登录系统之后需要返回用户信息给前端,其中包含多个用户角色 这个时候,group_concat函数就出场了,当然这是针对于MySql去使用; group_concat函数首先根…

PX4代码解析(6)

一、前言 上一节介绍了PX4姿态估计调用函数的流程,这一节分享一下我对PX4姿态解算的解读.首先,要理解PX4姿态解算的程序,要先从传感器的特性入手,这里主要介绍的传感器有加速度计,磁力计,陀螺仪. 二、传感…

GeoServer服务迁移出现 EncryptionOperationNotPossibleException 错误的解决方案

目录1.前言2.GeoServer服务迁移一般流程3.遇到问题4.原因分析5.解决办法6.根本原因分析7.总结1.前言 这几天我在迁移 GeoServer 服务的时候发现,报了一个错,EncryptionOperationNotPossibleException ,这个错误的大概意思是加密操作不可用异常…

Jenkins - 打造强大的前端自动化工作流

什么是 Jenkins? Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。我们可以利用 Jenkins 来对项目的持续性集成进行管控处理。 Jenkins 任务的创建 这里就简单不再累赘说明 Jenkins 的安装启动…