Hadoop原理期末作业
一、搭建一个由三个节点构成的完全分布式非HA集群;
1、主机角色分配: 主机名称 主机IP JYM2018122101001Master 192.168.30.10 NameNode 角色 ResourceManager 2、搭建HDFS集群:
(1)core-site.xml配置文件代码及注释所编辑的代码行作用:(5分)
(2)hadoop-env.sh配置文件代码及注释所编辑的代码行作用:(5分) export JAVA_HOME=/home/YM/software/jdk1.8.0_45
(3)hdfs-site.xml配置文件代码及注释所编辑的代码行作用:(5分)
NodeManager NodeManager JYM2018122101001Slave01 192.168.30.20 JYM2018122101001Slave02 192.168.30.30 DataNode、SecondNameNode DataNode
(4)slaves配置文件代码:(1分) JYM2018122101001Slave01 JYM2018122101001Slave02
(5)将Hadoop配置到/etc/profile系统环境变量;(2分) export JAVA_HOME=/home/YM/software/jdk1.8.0_45 export JRE_HOME=/home/YM/software/jdk1.8.0_45/jre
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export HADOOP_HOME=/home/YM/software/hadoop-2.8.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(6)批量启动HDFS集群,查看各个节点的进程,并截图,要求截图中必须含有用户及主机名;(5分)
2、搭建简单yarn集群:
(1)yarn-site.xml配置文件的内容及注释所编辑的代码行作用;(5分)
(2)批量启动Yarn集群,查看各个节点的进程,并截图,要求截图中每行必须含有用户及主机名;(5分)
二、使用MapReduce编写一个简单程序统计指定文件中英文单词出现的次数 :
1、数据目录:
(1)数据源目录:HDFS文件系统中/wordcount/input/:自定义一个文本文件; (2)目标输出目录:HDFS文件系统中/wordcount/output/
2、程序代码:(三个类)客户端生成工程Jar,且该工程Jar包在Hadoop的运行平台为本地模式:Local(10分)
WordCountReducer.java package zhutu.mapreduce.wc; import java.io.IOException; import java.util.Iterator;
import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; /**
* 当前实现类的父类Reducer的泛型:
* 1、keyIn:接收key,并且是单词名称,Text类型;
* 2、ValueIn:接收value,是单词名称所对应值,IntWritable类型; * 3、KeyOut:当前程序全局汇总结果中key,分组名称,即单词名称,Text;
* 4、ValueOut:当前程序全局汇总结果中key所对应的Value值,即单词出现的总次数; */
public class WordCountReducer extends Reducer
* 每调用一次reduce()方法,ReducerTask任务就会向其传送一个分组数据; * 参数一:分组中的key,Text类型;
* 参数二:分组中的Value,因为一个key对应了多个value值,该参数被定义迭代器类型,用于接收分组所形成的多个1;
* 参数三:用于存储每个分组进行聚合时所产生的中间结果; */
@Override
protected void reduce(Text key, Iterable
InterruptedException {
// 1、定义一个变量int类型的变量存储一个分组值聚合结果; int count = 0;
// 2、生成一个迭代器,使用iterator()方法从Iterable
代器;
Iterator
IntWritable value = iterator.next(); count += value.get();
} } }
WordCountMapper.java package zhutu.mapreduce.wc; import java.io.IOException;
import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordCountMapper extends Mapper
/**
* 第一个参数为行偏移量 * 第二个参数为一行的内容
* 第三个参数用于存储每一行处理结果上下文件对象;
* map()方法:用于在其编写用户的实际运算逻辑,每调用该方法一次,只读取文件块中的一行,通
// 4、将分组的聚合结果写入到Context实例 context.write(key, new IntWritable(count));
过多次反复调用,完成对整个切片中行数据从头到尾的依次读取;;
Hadoop原理期末作业(5)



