对于开源的东西。特别是刚出来不久。我认为最好的学习方法是能够看到源代码,doc,样品测试

为了方便查看源代码,导入与项目相关的源代码

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVlZGthbmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

先前的项目导入源代码是关联了源代码文件

block数据块,在配置文件hdfs-default.xml中能够查看到,记住要改动不是在这里

block文件存储块是最主要的单位

查看block存放位置,配置文件里查看

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVlZGthbmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

假设文件大于64M会占两个块,meta文件是校验文件,第二个文件大于64M,删除文件后,则相应block不在

datanode存放文件,一个文件能够存放在不同机器上datanode

mapreduce本身有默认的类,当什么都不写的时候,原样输出

package com.kane.mr.minidefault;





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.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;



public class TestDefault {

public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();

//GenericOptionsParser辅助工具类

   //String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

   String[] otherArgs = {"hdfs://centos:9000/kane/mini.txt","hdfs://centos:9000/kane/output"};

   if (otherArgs.length != 2) {

     System.err.println("Usage: wordcount <in> <out>");

     System.exit(2);

   }

   Job job = new Job(conf, "word count");

   job.setJarByClass(TestDefault.class);

   //中间的内容省略就採用默认的类操作,应该是原样输出

  

   FileInputFormat.addInputPath(job, new Path(otherArgs[0]));//输入參数,相应hadoop jar 相应类执行时在后面加的第一个參数

   FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));//输出參数

   System.exit(job.waitForCompletion(true) ? 0 : 1);

}

}

然后到处该类为jar包,放到hadoop文件下,执行

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVlZGthbmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

接下来自己创建须要mr执行的源文件,并导入hdfs中

当我们执行hadoop命令执行时 可能出异常。由于你编写代码的jdk可能和hadoop用到的JVM不匹配

解决java.lang.UnsupportedClassVersionError问题 
Jbuilder2006自带了1.5的JDK,但假设你还想继续用JDK1.42。假设仅仅是在Jbuilder2006的tool->configure->JDKs中加入一个JDK1.42或更低版本号,那么即使你仅仅写一个最简单的HelloWorld程序,Jbuilder2006都会给你报出长长一串错误。编写的代码在Jbuilder2005中也无法执行。JBuilder2006在执行编译project时,会针对特定版本号的VM进行编译,默认的是Java 2 SDK, v 5.0 And Late。因此。假设project用的是1.5下面的JDK,碰到都是java.lang.UnsupportedClassVersionError这个错误。

解决的办法事实上非常easy,仅仅要更改这个选项即可了。详细过程例如以下:

----------------------------------------------------------

1、右键点击project文件,选择属性(properties),

2、在属性窗体中选择 Build-->Java,在右边的选项中有四个下拉框,就能够看到编译选项了,

3、当中Compiler和Debug Option能够不用管。仅仅在Languege features和Target VM中选择对应的JDK版本号就能够了,然后确定,一切OK。

附件中是配置的图片。

-----------------------------------------------------------

假设在Target VM中选择了All Java SDKs。那么你的class文件在使用JDK1.1的VM上都能够执行(Jbuilder2006帮助中是这么说的。预计没几个人的机子上还在用JDK1.1吧 :-)

2.
Eclipse3.1相同会出现相同的问题。这时候仅仅须要把项目用的JDK与你安装的JDK搞成版本号一样就攻克了.
步骤:右击你的项目-->属性-->Java Compiler,设置合适的版本号!

默认的mr程序原样输出

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVlZGthbmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

測试wordcount

package com.kane.mr;





import java.io.IOException;

import java.util.StringTokenizer;





import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;





public class MapperClass extends Mapper<Object,Text,Text,IntWritable>{

public Text keyText=new Text("key");

public IntWritable intValue=new IntWritable(1);

@Override

protected void map(Object key, Text value,

Context context)

throws IOException, InterruptedException {

//获取输入的值

String str=value.toString();

//用什么分隔键值,默认空格或\t 或\n

StringTokenizer sTokenizer=new StringTokenizer(str);

//循环输出。假如是My name is kane 则分四次输出四个单词

while (sTokenizer.hasMoreElements()) {

Object object = (Object) sTokenizer.nextElement();

//这里每一个单词能够看做一个key

keyText.set(str);

context.write(keyText, intValue);//匹配一个就加value比如(“My”,1)

}

}



}

package com.kane.mr;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;

//map传来的键值就是text 和 intwritable

public class ReducerClass extends Reducer<Text,IntWritable, Text,IntWritable>{

public IntWritable intValue= new IntWritable(0);





@Override

protected void reduce(Text key, Iterable<IntWritable> values,//假如name出现两次。这里得到的values是 name [1,1]

Context context)

throws IOException, InterruptedException {

int sum=0;

while (values.iterator().hasNext()) {

sum+=values.iterator().next().get();



}

//这里值用intwritable输出是由于非常多情况下一个mapreduce的输出是下一个mapreduce的输入

intValue.set(sum);

context.write(key, intValue);

}



}

package com.kane.mr;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;





public class WordCounter {

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.setJarByClass(WordCounter.class);

   job.setMapperClass(MapperClass.class);

   //job.setCombinerClass(IntSumReducer.class);

   job.setReducerClass(ReducerClass.class);

   job.setOutputKeyClass(Text.class);

   job.setOutputValueClass(IntWritable.class);

   FileInputFormat.addInputPath(job, new Path(otherArgs[0]));//输入參数,相应hadoop jar 相应类执行时在后面加的第一个參数

   FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));//输出參数

   System.exit(job.waitForCompletion(true) ? 0 : 1);

}

}

版权声明:本文博主原创文章,博客,未经同意不得转载。

hadoop得知;block数据块;mapreduce实现样例;UnsupportedClassVersionError变态;该项目的源代码相关联的更多相关文章

  1. hadoop学习;block数据块;mapreduce实现样例;UnsupportedClassVersionError异常;关联项目源代码

    对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例 为了方便查看源代码,关联导入源代码的项目 先前的项目导入源代码是关联了源代码文件 block数据块,在配置 ...

  2. Hadoop hadoop 之hdfs数据块修复方法

    hadoop 之hdfs数据块修复方法: .手动修复 hdfs fsck / #检查集群的健康状态 hdfs debug recoverLease -path 文件位置 -retries 重试次数 # ...

  3. Hdfs block数据块大小的设置规则

    1.概述 hadoop集群中文件的存储都是以块的形式存储在hdfs中. 2.默认值 从2.7.3版本开始block size的默认大小为128M,之前版本的默认值是64M. 3.如何修改block块的 ...

  4. Android利用Volley异步载入数据完整具体演示样例(二)

    MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import ...

  5. 原生MapReduce开发样例

    一.需求 data: 将相同名字合并为一个,并计算出平均数 tom 小明 jerry 2哈 tom tom 小明 二.编码 1.导入jar包 2.编码 2.1Map编写 package com.wzy ...

  6. HDFS读文件过程分析:读取文件的Block数据

    转自http://shiyanjun.cn/archives/962.html 我们可以从java.io.InputStream类中看到,抽象出一个read方法,用来读取已经打开的InputStrea ...

  7. jinja2的url_for 和数据块

    1.静态文件引入:{{ url_for('static', filename='文件路径') }}   2.定义路由:{{ url_for('模块名.视图名',变量=参数) }}   3.定义数据块: ...

  8. Hadoop0.20.2 Bloom filter应用演示样例

    1. 简单介绍 參见<Hadoop in Action>P102 以及 <Hadoop实战(第2版)>(陆嘉恒)P69 2. 案例 网上大部分的说明不过依照<Hadoop ...

  9. 通过Canvas及File API缩放并上传图片完整演示样例

    创建一个只管的用户界面,并同意你控制图片的大小.上传到server端的数据,并不须要处理enctype为 multi-part/form-data 的情况.只一个简单的POST表单处理程序就能够了. ...

随机推荐

  1. Vsphere client 无法登陆VCenter 处理的方法

    上周做安全的时候将DC.DB和VCenter 三台机器的防火墙都启用了,结果Vcenter 登陆的时候总是提示服务器没有响应,连web client 都无法登陆. 处理过程 一.首先要保证 vmvar ...

  2. SWT实践过程中遇到的问题

    1.import org.eclipse.swt.widgets.Text; 诸如右所示的找不到这个包. 解决办法:project->properties->build path-> ...

  3. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

  4. sql server实现主从复制

    测试环境 :主机: 数据库sql server08 r2  系统windows server 2008 r2  IP192.168.1.202 丛机:数据库sql server12  系统window ...

  5. 软件測试系统文章(文件夹&amp;链接在此)

    前言 我会在此账号上写一系列关于软件測试的文章,故在此置顶软件測试系列文章的文件夹和链接,以方便大家阅读! 文件夹 软件測试系列之入门篇(一) 软件測试系列之了解篇(二) 软件測试系列之黑白盒(三) ...

  6. 初识google多语言通信框架gRPC系列(三)C#中使用gRPC

    我的这几篇文章都是使用gRPC的example,不是直接编译example,而是新建一个项目,从添加依赖,编译example代码,执行example.这样做可以为我们创建自己的项目提供借鉴.如果对gR ...

  7. [网络]_[0基础]_[使用putty备份远程数据]

    场景: 1. putty是windows上訪问linux服务的免费client之中的一个.用它来ssh到远程server备份数据是常见的做法(在没做好自己主动备份机制前), 通过putty界面尽管也不 ...

  8. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 具体解释

    看资料的时候常常看到各种VGA,全都混了,无奈,找了些资料总结了下,分享给大家: 这些术语都是指屏幕的分辨率. VGA:Video Graphics Array,即:显示画图矩阵,相当于640×480 ...

  9. Iphone CodeSign error: no provisioning profile at path 错

    今天在退房手续,变化了profile,当再次进行整理编译项目时.就出现了这个问题,在xCode 6 开发环境下出现了, 出现这个错误提示Code Sign error: Provisioning pr ...

  10. SQL Server数据库视图

    1:什么是视图 2:视图和查询的区别 3:视图的优点 4:如何创建和管理视图 5:如何通过视图修改基本表的数据 6:如何通过视图实现数据的安全性 A:什么是视图: 视图(view):从一个或几个基本表 ...