hadoop基础学习-环境及实践(一)
2013-06-22 11:43
302 查看
1.云计算的概念
狭义云计算是指IT基础设施的交付和使用模式,通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。
广义云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。
2.三层模型
Saas:more
Paas:hadoop
Iaas: openstack
3.google VS hadoop
3.hadoop的使用:
编写map和reduce函数
3.1 map :
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 {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one); //设置 key value
}
}
}
说明: map的输出key 、value和reduce的输入key、value要一致,见上面红色部分
3.2 reduce
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);
}
}
说明: map的输出key 、value和reduce的输入key、value要一致,见上面红色部分
3.3 job的配置
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count"); //job name
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(otherArgs[0])); //file input
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); //file output
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
4.命令行运行
步骤:
a.打包mapreduce函数,wordcount.jar 设类名WordCount
b.进入hadoop安装目录
c.执行方式:hadoop jar 本地jar包目录 类名 hdfs输入文件目录 hdfs输入文件目录
例如:hadoop jar /home/deke/wordcount.jar WordCount hdfs输入文件目录 hdfs输入文件目录
5.eclipse配置
步骤:
a.下载eclipse,eclipse3.3.X,其他版本会不兼容,下好eclipse-java-3.3-linux.tar.gz文件后,sudo
cp **.tar.gz /usr/lib,解压缩sudo -xvf ****.tar.gz
b.将 hadoop 文件夹下的 contrib/eclipse-plugin/hadoop-*-eclipse- plugin.jar ,拷贝到 eclipse 文件夹下的/plugins 文件夹里
c.启动 Eclipse
d.设置 Hadoop 安装文件夹的路径
Window->Preferences—>hadoop Map/Reduce设置 hadoop的linux下文件位置,如:/usr/hadoop
e.window->show view->other->MapReduce Tool ->Map/Reduce Location,在Map/Reduce Location控制台空白处,
右击选择“New Map/Reduce
Location”,在弹出的对话框里,根据core-site.xml和maperd-site.xml里的端口填写
在窗口左侧试图的'Project Explorer'里,点击'DFS Location',就会出现HDFS的目录级
到这里配置完成了
e.让你的map reduce程序直接在eclipse运行,而不需要打成jar包放到/hadoop/bin下手动在控制台run的方法:
在你建的mapreduce项目的类上,右键 -> Run As -> Open Run Dialog...
在弹出的对话框中,点击 Java Application -> 类名 -> Arguments,如下图所示:
在Arguments里填上输入路径(即待处理文件存放目录)和输出路径(即处理结果存放目录),在这里这两个目录都是HDFS的路径,不是本地目录,中间用空格隔开即可。其中的hdfs://localhost:54310
是你在core-site.xml配置文件的里定义的fs.default.name的值。
另外,/user/MR
目录需要你手工创建(在把本地待处理文件拷贝到HDFS时创建的),/user/MRout不用事先创建,HDFS会为你自动创建此目录。
3.
现在在你写的mapreduce 类里,就想平时写的java程序一样,点击Run,即可在Console里出现跟在控制台里手动run一样的输出。如下图所示:
f。这时,如下图所示,刷新
"user" 文件夹就会出现第2步定义的MRout文件夹,里面的part-r-00000就是mapreduce的处理结果,双击此文件即可打开,查看结果。
PS:
当你下次再运行程序时,会报错说 /user/MRout 目录已存在,那么解决方法也很简单,要么在步骤4里把MRout目录,右击选择"Delete";要么在步骤2里改输出路径,当然了,还是前者方便些。
使用说明:
1、查看文件系统。点击eclipse右上角的蓝色大象图标,然后在左边Project Explorer会出现DFS Locations的链接,打开就能看到HDFS的文档结构。
2、运行Job,运行的时候采用Run on hadoop。这里需要注意3点,
A、记得配置输入输出参数。
B、记得在main函数中添加conf.set("hadoop.job.ugi", "root,hadoop"); root是用户名,hadoop是密码。
C、工程需要加载hadoop下lib里的所有包以及hadoop目录下的包,当然不是全部都需要,我觉得麻烦,所以全部加上了。
参考:http://hi.baidu.com/ihsauqaxblbdmwq/item/9ddaf2fca32315b230c199a7
狭义云计算是指IT基础设施的交付和使用模式,通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。
广义云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。
2.三层模型
Saas:more
Paas:hadoop
Iaas: openstack
3.google VS hadoop
google calls it: | hadoop equivalent: |
MapReduce | Hadoop |
GFS | HDFS |
Bigtable | HBase |
Chubby | Zookeeper |
编写map和reduce函数
3.1 map :
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 {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one); //设置 key value
}
}
}
说明: map的输出key 、value和reduce的输入key、value要一致,见上面红色部分
3.2 reduce
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);
}
}
说明: map的输出key 、value和reduce的输入key、value要一致,见上面红色部分
3.3 job的配置
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count"); //job name
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(otherArgs[0])); //file input
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); //file output
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
4.命令行运行
步骤:
a.打包mapreduce函数,wordcount.jar 设类名WordCount
b.进入hadoop安装目录
c.执行方式:hadoop jar 本地jar包目录 类名 hdfs输入文件目录 hdfs输入文件目录
例如:hadoop jar /home/deke/wordcount.jar WordCount hdfs输入文件目录 hdfs输入文件目录
5.eclipse配置
步骤:
a.下载eclipse,eclipse3.3.X,其他版本会不兼容,下好eclipse-java-3.3-linux.tar.gz文件后,sudo
cp **.tar.gz /usr/lib,解压缩sudo -xvf ****.tar.gz
b.将 hadoop 文件夹下的 contrib/eclipse-plugin/hadoop-*-eclipse- plugin.jar ,拷贝到 eclipse 文件夹下的/plugins 文件夹里
c.启动 Eclipse
d.设置 Hadoop 安装文件夹的路径
Window->Preferences—>hadoop Map/Reduce设置 hadoop的linux下文件位置,如:/usr/hadoop
e.window->show view->other->MapReduce Tool ->Map/Reduce Location,在Map/Reduce Location控制台空白处,
右击选择“New Map/Reduce
Location”,在弹出的对话框里,根据core-site.xml和maperd-site.xml里的端口填写
在窗口左侧试图的'Project Explorer'里,点击'DFS Location',就会出现HDFS的目录级
到这里配置完成了
e.让你的map reduce程序直接在eclipse运行,而不需要打成jar包放到/hadoop/bin下手动在控制台run的方法:
在你建的mapreduce项目的类上,右键 -> Run As -> Open Run Dialog...
在弹出的对话框中,点击 Java Application -> 类名 -> Arguments,如下图所示:
在Arguments里填上输入路径(即待处理文件存放目录)和输出路径(即处理结果存放目录),在这里这两个目录都是HDFS的路径,不是本地目录,中间用空格隔开即可。其中的hdfs://localhost:54310
是你在core-site.xml配置文件的里定义的fs.default.name的值。
另外,/user/MR
目录需要你手工创建(在把本地待处理文件拷贝到HDFS时创建的),/user/MRout不用事先创建,HDFS会为你自动创建此目录。
3.
现在在你写的mapreduce 类里,就想平时写的java程序一样,点击Run,即可在Console里出现跟在控制台里手动run一样的输出。如下图所示:
f。这时,如下图所示,刷新
"user" 文件夹就会出现第2步定义的MRout文件夹,里面的part-r-00000就是mapreduce的处理结果,双击此文件即可打开,查看结果。
PS:
当你下次再运行程序时,会报错说 /user/MRout 目录已存在,那么解决方法也很简单,要么在步骤4里把MRout目录,右击选择"Delete";要么在步骤2里改输出路径,当然了,还是前者方便些。
使用说明:
1、查看文件系统。点击eclipse右上角的蓝色大象图标,然后在左边Project Explorer会出现DFS Locations的链接,打开就能看到HDFS的文档结构。
2、运行Job,运行的时候采用Run on hadoop。这里需要注意3点,
A、记得配置输入输出参数。
B、记得在main函数中添加conf.set("hadoop.job.ugi", "root,hadoop"); root是用户名,hadoop是密码。
C、工程需要加载hadoop下lib里的所有包以及hadoop目录下的包,当然不是全部都需要,我觉得麻烦,所以全部加上了。
参考:http://hi.baidu.com/ihsauqaxblbdmwq/item/9ddaf2fca32315b230c199a7
相关文章推荐
- Hadoop学习-基础环境搭建
- 干货丨零基础学习大数据,搭建Hadoop处理环境
- hadoop学习1---基础环境搭建与使用
- Hadoop之HBase框架学习基础实践篇(笔记16)
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
- hadoop2.5.2学习及实践笔记(一)—— 伪分布式学习环境搭建
- 大数据基础之hadoop2.0原理学习与环境搭建
- 大数据学习实践总结(2)--环境搭建,JAVA引导,HADOOP搭建
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
- 让你快速学习python基础笔记002(一起动手实践)
- Hadoop上的中文分词与词频统计实践 (有待学习 http://www.cnblogs.com/jiejue/archive/2012/12/16/2820788.html)
- Yii学习笔记之中的一个(安装与基础环境的配置)
- ASP.NET C#学习一(环境基础知识)
- 从零开始系列--R语言基础学习笔记之一 环境搭建
- 2014-11-09---Hadoop的基础学习(二)----HDFS的特性和JavaAPI源码分析
- 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础
- IDEA部署Spark1.5.2开发环境--Spark学习(基础)
- hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览
- Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记