实验名称: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容器:
- 关闭防火墙 systemctl stop iptables.service
- 设置主机名 vi /etc/sysconfig/network
- 添加映射关系 vi /etc/hosts
- 配置Hadoop文件
- core.site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- 启动Hadoop /usr/local/hadoop/sbin/start-all.sh
- 验证配置
成功访问Web配置页面:
应用的实现过程,包括步骤及测试结果
- hadoop fs -mkdir /input 在HDFS中创建文件
- cd /usr/local/hadoop 进入目录
- touch in.txt 创建文件
- vi in.txt 打开文件,添加信息(之后求出现次数)
- hadoop fs -put in.txt /input/ 文件添加到HDFS的 /input/下
- cd share/hadoop/mapreduce 切换目录
- hadoop jar hadoop-mapreduce-examples-2.7.6.jar \ 使用
- wordcount /input /output 执行
- 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。
标签:CLASSPATH,jar,hadoop,Hadoop,MapReduce,应用,input,分布式计算 From: https://www.cnblogs.com/Az1r/p/18466387