MapReduce分布式计算及其应用

实验名称:MapReduce分布式计算及其应用

实验内容

Hadoop是一个能够对大量数据进行分布式处理的软件框架,已被广泛应用到各个领域,Hadoop框架最核心的设计是分布式文件系统(HDFS)、分布式计算框架(MapReduce)和集群资源管理系统(YARN)。本实验要求实现如下内容。

1.搭建分布式Hadoop集群环境,采用伪分布式或完全分布式模式。

2.应用MapReduce模型,实现词频统计。

3.应用MapReduce模型,对电影数据分析,实现用户喜好评定。(选作)

实验环境

  • Windows 10
  • VMware Workstation 16 Pro
  • Ubuntu 20.04 LTS
  • Docker V1.26
  • Docker Image:(Hadoop镜像)
  • registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop

实验过程

Hoop实验环境所使用的工具搭建过程。

拉取Docker镜像,创建Docker容器

Hoop实验环境搭建过程

通过终端进入Docker容器:

  1. 关闭防火墙 systemctl stop iptables.service
  2. 设置主机名 vi /etc/sysconfig/network
  3. 添加映射关系 vi /etc/hosts
  4. 配置Hadoop文件
    1. core.site.xml
    2. hdfs-site.xml
    3. mapred-site.xml
    4. yarn-site.xml
  5. 启动Hadoop /usr/local/hadoop/sbin/start-all.sh
  6. 验证配置

成功访问Web配置页面:

 

 

应用的实现过程,包括步骤及测试结果

  1. hadoop fs -mkdir /input 在HDFS中创建文件
  2. cd /usr/local/hadoop 进入目录
  3. touch in.txt 创建文件
  4. vi in.txt 打开文件,添加信息(之后求出现次数)
  5. hadoop fs -put in.txt /input/ 文件添加到HDFS的 /input/下
  6. cd share/hadoop/mapreduce 切换目录
  7. hadoop jar hadoop-mapreduce-examples-2.7.6.jar \ 使用
  8. wordcount /input /output 执行
  9. hadoop fs -cat /output/part-r-00000 查看结果

也可以自己生成jar包,发布到Hadoop运行:
编译、打包 Hadoop MapReduce 程序,我们将 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中,在 ~/.bashrc 中增加如下几行:

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_CLASSPATH=$(hadoop classpath)

执行 source ~/.bashrc 使变量生效,接着就可以通过 javac 命令编译。

javac -classpath $HADOOP_CLASSPATH -d . JobMain.java WordCountMapper.java WordCountReducer.java

打包成一个 Jar 文件:

jar -cvf wordcount.jar -C . .

运行Hadoop程序:

hadoop jar wordcount.jar hit.dstOS.lab2.JobMain /input/in.txt /output/wordcount/

项目实现过程中遇到的问题及解决方案

编译Hadoop程序时,Java报错:package org.apache.hadoop.conf does not exist

这是需要确保Hadoop 的相关依赖,根据报告上文的配置,可以解决该问题。

运行Hadoop程序报错:

Exception in thread "main" java.lang.ClassNotFoundException: JobMain

这是因为Hadoop 找不到 JobMain 类,由于类路径或包结构不正确造成的。

正确的运行命令,应该指定jar包的类路径(要明确包结构)。

例如我的包结构是package hit.dstOS.lab2;

那么,运行命令指定的类路径就是 hit.dstOS.lab2.JobMain。

posted @ 2024-10-14 23:17  江水为竭  阅读(15)  评论(0编辑  收藏  举报