首页 > 其他分享 >2024/10/15

2024/10/15

时间:2024-10-15 23:10:58浏览次数:1  
标签:10 15 WordCount hadoop Hadoop 2024 job apache import

今天完成的是虚拟机mapduirce完成单词统计

好的,下面是使用Java在Hadoop上运行一个完整的WordCount MapReduce作业的详细步骤,包括准备环境、编写代码、编译、运行和查看输出结果。

好的,下面是使用Java在Hadoop上运行一个完整的WordCount MapReduce作业的详细步骤,包括准备环境、编写代码、编译、运行和查看输出结果。

### 步骤 1: 环境准备

1. **安装Hadoop**:确保Hadoop已经安装并配置好,包括环境变量设置。
2. **安装Java**:确保Java JDK已经安装,并设置好JAVA_HOME环境变量。
3. **配置HDFS**:启动Hadoop集群并确认HDFS正常运行。可以使用以下命令启动Hadoop集群:
   ```bash
   start-dfs.sh
   start-yarn.sh
   ```

### 步骤 2: 创建输入文件

1. 在HDFS上创建输入目录:
   ```bash
   hdfs dfs -mkdir -p /user/lty/homework/input
   ```

2. 创建一个文本文件并上传到HDFS(例如,创建一个名为`input.txt`的文件):
   ```bash
   echo -e "Hello Hadoop\nHello World" > input.txt
   hdfs dfs -put input.txt /user/lty/homework/input/
   ```

### 步骤 3: 编写WordCount程序

1. 创建一个Java文件,命名为 `WordCount.java`,内容如下:

```java
import org.apache.hadoop.conf.Configuration;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class WordCount {

    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private final static IntWritable one = new IntWritable(1);
        private Text word = new Text();

        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            String[] words = value.toString().split("\\s+");
            for (String w : words) {
                word.set(w);
                context.write(word, one);
            }
        }
    }

    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            result.set(sum);
            context.write(key, result);
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        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);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}
```

### 步骤 4: 编译Java程序

1. 在命令行中,进入到存放 `WordCount.java` 文件的目录。
2. 使用以下命令编译Java程序:
   ```bash
   javac -classpath `hadoop classpath` -d . WordCount.java
   jar -cvf wordcount.jar -C . .
   ```

### 步骤 5: 运行Hadoop作业

使用以下命令在Hadoop集群上运行WordCount作业:

```bash
hadoop jar wordcount.jar WordCount /user/lty/homework/input /user/lty/homework/output
```

### 步骤 6: 查看输出结果

1. 查看输出目录中的结果:
   ```bash
   hdfs dfs -ls /user/lty/homework/output
   ```

2. 读取输出文件内容:
   ```bash
   hdfs dfs -cat /user/lty/homework/output/part-r-00000
   ```

### 步骤 7: 清理输出(可选)

如果需要重新运行作业,可以先删除输出目录:

```bash
hdfs dfs -rm -r /user/lty/homework/output
```

### 总结

以上步骤详细描述了如何使用Java在Hadoop上编写、编译、运行一个简单的WordCount MapReduce作业。如果在任何步骤中遇到问题,请随时告诉我,我会帮助你解决!

但是会遇到以下问题:hdfs dfs -ls /user/lty/homework/output输入命令后没有任何输出

这个时候就需要用

hdfs dfs -cat /user/hadoop/homework/output/*命令来输出。

 

标签:10,15,WordCount,hadoop,Hadoop,2024,job,apache,import
From: https://www.cnblogs.com/litianyu1969/p/18468752

相关文章

  • 10.15
    今天完成了对于回文数的计算只是使用栈:点击查看代码#include<iostream>#include<stack>usingnamespacestd;boolisPalindrome(intnum){//将负数排除,因为负数不可能是回文数if(num<0)returnfalse;stack<int>stack;intoriginal=num;......
  • java学习10.15
    今天学习了java图形化编程importjava.awt.*;importjava.awt.event.*;publicclassFramePractice{publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口......
  • 10.15
    可以设置题目总数,题目难度在2年级importjava.util.HashSet;importjava.util.Random;importjava.util.Scanner;importjava.util.Set;importjavax.swing.;importjava.awt.;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassMai......
  • 10.15课程内容总结
    这节课以教育者的角度去了解AI,用AI去辅助教师更好、更便捷地教学。大语言模型是AI发展的最成果之一,其中包括:1、生成人工智能(AI-GeneratedContent)2、大语言模型(LargeLanguageModel,LLM)3、ChatGPT(gpt-GenerativePre-trainedTransformer)PPT辅助:1、MINDSHOW:https://www.......
  • 2024软考网络工程师笔记 - 第2章.数据通信基础
    文章目录信道特性1️⃣概念2️⃣信道带宽W3️⃣码元和码元速率4️⃣奈奎斯特定理5️⃣香农定理6️⃣宽带/码元速率/数据速率关系梳理......
  • 2024/10/15日工作总结
    听写32个单词,阅读一篇英文日报;完成离散课后作业;优化验证码代码:importjavax.swing.;importjava.awt.;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.util.Random;//Graphics图形绘制抽象类,绘制直线、矩形、椭圆等//Graphics2D继承......
  • 2024-10-15
    CSS简介点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document&l......
  • 10.15日
    1.上层界面设计(UI设计)Swing提供了多个组件(如按钮、标签、文本框等),通过这些组件,你可以构建用户可视化交互的界面。关键组件JFrame:代表主窗口,所有其他组件都放置在JFrame中。JPanel:用于分隔不同的UI区域,可以嵌套使用。JButton、JLabel、JTextField:分别用于创建按钮、文......
  • Tomcat&Servlet -2024/10/15
    idea中Maven部署Web项目基本架构pom.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sche......
  • 10.15
    学习了如何在JavaWeb项目中进行数据库连接操作。通过JDBC连接数据库,执行SQL查询语句获取数据。importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassDatabaseAccessExample{publicstatic......