资源描述
云计算试验汇报
学 号:
姓 名:
提交日期:
成 绩:
试验一
【试验内容】
一、试验目的
在Linux环境下搭建hadoop平台, 掌握hadoop平台的搭建流程。
学习使用HDFS, 熟悉基本操作指令,学习在hadoop平台下运行程序。
二、试验环节
注意!试验室使用的linux系统分为两个版本,Ubuntu12和ubuntu14
Ubutun12的顾客名和密码都是haiming
Ubuntu14的顾客名是wan,密码是123
Ubuntu14登陆时需要先输入顾客名和密码登陆,然后用startx命令进入图形界面,纯熟使用linux的同学可以不用图形界面。
打开home folder,注意,不一样版本的linux操作系统打开home folder的图标不一样。
打开其中的hadoop文献夹,其中有一种haoop-1.0.3.tar.gz的压缩包。
注意:原途径下有一种解压后的haoop-1.0.3文献夹,大家把这个重命名(加个"_old")
右键点击压缩包,解压到当地,会生成一种hadoop-1.0.3的文献夹
阐明:hadoop是基于java环境,必须先安装jdk,本虚拟机的jdk已经安装完毕,本次试验不需要再安装。
打开其中的conf文献夹,hadoop的使用需要对其中的六个文献进行配置
1、修改hdfs-site.xml:HDFS配置文献,该模板的属性继承于core-site.xml
2、修改mapred-site.xml:MapReduce的配置。
3、点击图标启动一种终端,注意,不一样系统启动终端的措施不一样。
同步按Alt 和 F2,打开 “运行应用程序”对话框,输入:gnome-terminal,之后点右下角的“运行”,就打开终端工具
4、在终端中输入如下命令进行格式化,格式化后会在tmp文献夹中生成目录构造
5、格式化之后输入如下命令来启动hadoop,为简便起见,本次试验略过了ssh安装的过程,因此在启动过程中也许需要输入密码,大家输入登陆密码即可。
6、例子中的wordcount程序,以hdfs中input为输入,建立一种文献夹output为输出,运行中可以通过上边提到的网页观测程序运行进度,也可以从终端观测。
三、试验成果
试验二
一、试验内容
在Eclipse环境下编写一种mapreduce程序,掌握mapredcue编程框架
将Mapreduce程序打包,在hadoop环境下运行程序并观测成果
二、试验环节
使用eclipse新建一种java project
将hadoop-1.0.3.tar.gz解压
在工程名上点右键,选择build pathàadd external archives
选择刚刚解压的hadoop目录下的如下jar包
在src上点击右键,选择new àclass,新建类Wordcount
加入如下代码
import java.io.IOException;
import java.util.StringTokenizer;
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 org.apache.hadoop.util.GenericOptionsParser;
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 {
//构造一种用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。
StringTokenizer itr = new StringTokenizer(value.toString());
//hasMoreTokens()返回与否尚有分隔符
while (itr.hasMoreTokens()) {
//返回从目前位置到下一种分隔符的字符串
word.set(itr.nextToken());
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();
if (args.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
//Job的初始化
Job job = new Job(conf, "word count");
job.setJarByClass(Wordcount.class);
//然置Job处理的Map(拆分)、Combiner(中间成果合并)以及Reduce(合并)的有关处理类
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
//设置Job输出成果<key,value>的中key和value数据类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//调用setInputPath()和setOutputPath()设置输入输出途径
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
最终得到一种jar包,将该jar包复制到linux中hadoop1.0.3的文献夹中(与试验1用到的hadoop-examples-1.0.3.jar途径相似)使用和试验1相似的命令运行自定义的jar包MapReduce简介
本程序数据处理过程
三、试验成果
展开阅读全文