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

【Windows下】Eclipse 尝试 Mapreduce 编程

文章目录

  • 配置环境
    • 环境准备
    • 连接 Hadoop
    • 查看 hadoop 文件
  • 导入 Hadoop 包
  • 创建 MapReduce 项目
  • 测试 Mapreduce 编程代码
  • 注意事项
  • 常见报错

配置环境

环境准备

本次实验使用的 Hadoop2.7.7 版本,实验可能会用到的文件

百度网盘链接:https://pan.baidu.com/s/1HZPOpg5MAiWXaN9DIcIUGg 提取码:gahr

迅雷云盘链接:https://pan.xunlei.com/s/VNkp2rp8az9m70YWCe5ifxm3A1?pwd=ggeq#

1)下载hadoop-eclipse-plugin-2.7.3.jar

2)将jar包把放置到eclipse文件的plugins目录下

3)将hadoop解压到E盘

配置环境变量:添加用户变量HADOOP_HOME,值为E:\hadoop-2.7.7

Path新建%HADOOP_HOME%\bin%HADOOP_HOME%\sbin

连接 Hadoop

1)打开 Eclipse ➡ Window ➡ Perspective ➡ Open Perspective ➡ other,

2)Map/Reduce ➡ Open,

3)进入界面后选择 Map/Reduce Locations,点击蓝色图标配置连接。

4)配置 hadoop 集群连接位置

Location name:myhadoop(随便填)

Host:192.168.88.102(填虚拟机IP地址)

Port:9000(填之前 Hadoop 中 core-site.xml 配置文件中,fs.defaultFS 对应的端口号)

查看 hadoop 文件

打开 myhadoop 查看文件内容,测试完全正确。

导入 Hadoop 包

选择:Window ➡ Perferencces ➡ Hadoop Map/Reduce ➡ Browse

选择所对应的 hadoop 安装包目录

创建 MapReduce 项目

1)创建 Project,File ➡ New ➡ Project

在这里插入图片描述

2)创建 MapReduce 项目

3)填写项目名 Wordcnt

4)打开引入的库可以看到 hadoop 的 jar 包已经导入,如图所示,不过我们此次要测试的 WordCount 类在测试包里面,我们现在需要先导入 hadoop 里自带的 examples 测试包。

5)构建路径配置步骤:Reference Libraries ➡ Build Path ➡ Configure Build Path

6)导入 jar 包:Java Build Path ➡ Add External JARs ➡ examples.jar ➡ Apply and Close 如图所示:

7)创建类

测试 Mapreduce 编程代码

1)Java 测试代码如下:

package org.apache.hadoop.examples;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.examples.WordCount.*;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;public class Wordcnt {public Wordcnt() {}public static void main(String[] args) throws Exception {// 使用 hadoop 的用户System.setProperty("HADOOP_USER_NAME", "user");Configuration conf = new Configuration();String[] otherArgs = (new GenericOptionsParser(conf, args)).getRemainingArgs();if (otherArgs.length < 2) {System.err.println("Usage: wordcount <in> [<in>...] <out>");System.exit(2);}// 每次运行前检查输出路径是否存在,存在就删除FileSystem fs = FileSystem.get(conf);Path outPath = new Path(otherArgs[1]);if(fs.exists(outPath)) {fs.delete(outPath, true);}// 启用跨平台,将应用程序从Windows客户端提交到Linux / Unix服务器conf.set("mapreduce.app-submission.cross-platform","true");Job job = Job.getInstance(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);for(int i = 0; i < otherArgs.length - 1; ++i) {FileInputFormat.addInputPath(job, new Path(otherArgs[i]));}FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

2)将 core-site.xml、hdfs-site.xml、log4.properties 三个文件下载放到 src 目录下

3)右击 java 文件 ➡ Run As ➡ Run Configurations

4)创建一个Java Application(双击就可以了) ➡ Arguments ➡ 第一个路径为 hadoop 上测试文件路径,第二个为输出文件路径(第二个路径用 jar 包中是不可以存在的,测试代码以更改可以存在)

5)查看运行提示信息与结果,与 Linux 中结果一致

注意事项

1)这里的 user 需要改成自己所用的用户名

// 使用 hadoop 的用户
System.setProperty("HADOOP_USER_NAME", "user");

2)同系统中不需要这行代码(这里加上是因为我的 Hadoop 是部署在 Linux 系统上,代码是在 Windows 系统上运行的)

// 启用跨平台,将应用程序从Windows客户端提交到Linux / Unix服务器
conf.set("mapreduce.app-submission.cross-platform","true");

这个参数在 mapred-default.xml 文件里写到如果启用,用户可以跨平台提交应用程序,即从 Windows 客户端提交应用程序到 Linux/Unix 服务器,反之亦然。默认情况下是关闭的。链接:hadoop.apache.org/docs/r2.7.7/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

namevaluedescription
mapreduce.app-submission.cross-platformfalseIf enabled, user can submit an application cross-platform i.e. submit an application from a Windows client to a Linux/Unix server or vice versa.

请注意,由于在 Windows 上使用 Eclipse 编写 MapReduce 程序,但实际运行是在 Linux 虚拟机上的 Hadoop 集群,所以需要 确保主机名和 IP 地址的映射 在虚拟机和 Windows 主机的 hosts 文件中都是正确的。

常见报错

1)报错内容如下:

Could not locate executable winutils.exe in the Hadoop binaries

这是因为 Hadoop 都是运行在 Linux 系统下的,在 WindowsEclipse 中运行 Mapreduce 程序需要支持插件

下载 hadoop-common-2.2.0-bin-master 把其中的 winutils.exehadoop.dll 放到 windows 安装的 hadoopbin 目录下,或者直接放到 C:\Windows\System32 目录下就可以了(版本最好对应)

2)报错内容如下:

INFO mapreduce.JobSubmitter: Cleaning up the staging area /tmp/hadoop-yarn/staging/root/.staging/job_1510302622448_0003

出错原因:单机读取的是本地的文件,分布式环境下需要从hdfs 上读取文件。

解决方案:将本地的文件上传到 hdfs 上,然后再运行可以成功执行。

报错内容:

Output directory xxx already exists

出错原因:输出目录已存在

解决方案:修改输出目录,输出目录需要为空目录,所以在后面随便加上一个目录名,则会在 /output 目录下创建目录,如果是多次计算每次都需要指定不同的目录用于存储结果。

Hadoop文件系统命令参考:FileSystem Shell

下面给出几个常用命令

# 1 新建文件夹
hadoop dfs -mkdir [-p] <paths>  
# 2 上传本地文件
hadoop fs -put localfile /hadoopdir
# 3 查看 hadoop 文件
hadoop fs -ls /hadoopfile
hadoop fs -ls -e /hadoopdir
# 4 修改文件夹权限
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
# 5 删除文件夹 
hadoop fs -rm -r /hadoopdir

相关文章:

【Windows下】Eclipse 尝试 Mapreduce 编程

文章目录 配置环境环境准备连接 Hadoop查看 hadoop 文件 导入 Hadoop 包创建 MapReduce 项目测试 Mapreduce 编程代码注意事项常见报错 配置环境 环境准备 本次实验使用的 Hadoop 为 2.7.7 版本&#xff0c;实验可能会用到的文件 百度网盘链接&#xff1a;https://pan.baidu…...

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数&#xff1a; 时间获取&#xff1a;time() ctime() gmtime() 时间格式化&#xff1a;strtime() strptime() 程序计时&#xff1a;sleep() perf_counter() 下面逐一介绍&#…...

unity 自由框选截图(两种方法,亲测有效)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、第一种方法&#xff08;1&#xff09;简介GL&#xff08;2&#xff09; GL 用法&#xff1a;&#xff08;3&#xff09;具体代码 二、第二种方法第一步&#xff1a;第二步第三…...

项目代码规范

editorconfig EditorConfig 是一种用于统一不同编辑器和 IDE 的代码风格的文件格式和插件&#xff0c;帮助开发人员在不同的编辑器和 IDE 中保持一致的代码风格&#xff0c;从而提高代码的可读性和可维护性 # EditorConfig is awesome: https://EditorConfig.org root true[…...

STM32的BKP与RTC简介

芯片的供电引脚 引脚表橙色的是芯片的供电引脚&#xff0c;其中VSS/VDD是芯片内部数字部分的供电&#xff0c;VSSA/VDDA是芯片内部模拟部分的供电&#xff0c;这4组以VDD开头的供电都是系统的主电源&#xff0c;正常使用时&#xff0c;全部都要接3.3V的电源上&#xff0c;VBAT是…...

11.Java安卓程序设计-基于SSM框架的Android平台健康管理系统的设计与实现

摘要 随着人们生活水平的提高和健康意识的增强&#xff0c;健康管理系统在日常生活中扮演着越来越重要的角色。本研究旨在设计并实现一款基于SSM框架的Android平台健康管理系统&#xff0c;为用户提供全面的健康监测和管理服务。 在需求分析阶段&#xff0c;我们明确了系统的…...

jetbrains卡顿(Pycharm等全家桶)终极解决方案,肯定解决!非常肯定!

话越短&#xff0c;越有用&#xff0c;一共四种方案&#xff0c;肯定能解决&#xff01;&#xff01;&#xff01;非常肯定&#xff01;&#xff01; 下面四种解决方案&#xff0c;笔者按照实际体验后的结果&#xff0c;按照优先级从高到低排序。你只要按顺序试试就知道了。 m…...

c++的排序算法

一&#xff1a;merge 是 C STL 中的一个算法函数&#xff0c;用于将两个已排序的序列合并成一个有序序列。 template<class InputIterator1, class InputIterator2, class OutputIterator, class Compare> OutputIterator merge(InputIterator1 first1, InputIterator1 …...

YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野

💡💡💡本文自研创新改进:SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积,使SPPF增加大kernel,提升感受野,最终提升检测精度 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),…...

【C/PTA —— 15.结构体2(课外实践)】

C/PTA —— 15.结构体2&#xff08;课外实践&#xff09; 7-1 一帮一7-2 考试座位号7-3 新键表输出7-4 可怕的素质7-5 找出同龄者7-6 排队7-7 军训 7-1 一帮一 #include<stdio.h> #include<string.h>struct student {int a;char name[20]; };struct student1 {int …...

艾泊宇产品战略:适应新消费时代,产品战略指南以应对市场挑战和提升盈利

赚钱越来越难&#xff0c;这是许多企业和个人都感到困惑的问题。 然而&#xff0c;艾泊宇产品战略告诉大家&#xff0c;我们不能把这个问题简单地归咎于经济环境或市场竞争&#xff0c;而是需要从更深层次去思考和解决。 本文将从多个角度去剖析这个问题&#xff0c;并探讨在…...

使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度23 words/s

1&#xff0c;演示视频地址 https://www.bilibili.com/video/BV1Hu4y1L7BH/ 使用autodl服务器&#xff0c;两个3090显卡上运行&#xff0c; Yi-34B-Chat-int4模型&#xff0c;用vllm优化&#xff0c;增加 --num-gpu 2&#xff0c;速度23 words/s 2&#xff0c;使用3090显卡 和…...

ORACLE数据库实验总集 实验六 SQL 语句应用

一、 实验目的 &#xff08;1&#xff09; 掌握数据的插入&#xff08;INSERT&#xff09;、 修改&#xff08;UPDATE&#xff09; 和删除&#xff08;DELETE&#xff09; 操作。 &#xff08;2&#xff09; 掌握不同类型的数据查询&#xff08;SELECT&#xff09; 操作。 二、…...

[FPGA 学习记录] 快速开发的法宝——IP核

快速开发的法宝——IP核 文章目录 1 IP 核是什么2 为什么要使用 IP 核3 IP 核的存在形式4 IP 核的缺点5 Quartus II 软件下 IP 核的调用6 Altera IP 核的分类 在本小节当中&#xff0c;我们来学习一下 IP 核的相关知识。 IP 核在 FPGA 开发当中应用十分广泛&#xff0c;它被称为…...

每日一题:LeetCode-11.盛水最多的容器

每日一题系列&#xff08;day 13&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…...

查看电脑cuda版本

1.找到NVODIA控制面板 输入NVIDIA搜索即可 出现NVIDIA控制面板 点击系统信息 2.WINR 输入nvidia-smi 检查了一下&#xff0c;电脑没用过GPU&#xff0c;连驱动都没有 所以&#xff0c;装驱动…… 选版本&#xff0c;下载 下载后双击打开安装 重新输入nvidia-smi 显示如下…...

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错&#xff0c;跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…...

CSS中 设置文字下划线 的几种方法

在网页设计和开发中&#xff0c;我们经常需要对文字进行样式设置&#xff0c;包括字体,颜色&#xff0c;大小等&#xff0c;其中&#xff0c;设置文字下划线是一种常见需求 一 、CSS种使用 text-decoration 属性来设置文字的装饰效果&#xff0c;包括下划线。 常用的取值&…...

Docker构建自定义镜像

创建一个docker-demo的文件夹,放入需要构建的文件 主要是配置Dockerfile文件 第一种配置方法 # 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量&#xff0c;JDK的安装目录 ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…...

C#生成Token字符串

Token字符串来保证数据安全性&#xff0c;如身份验证、跨域访问等。但是由于Token字符串的长度比较长&#xff0c;可能会占用过多的空间和带宽资源&#xff0c;因此我们需要生成短的Token字符串 方法一&#xff1a;使用Base64编码 Base64编码是一种常用的编码方式&#xff0c…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...