Java开发的mapreduce如何在hadoop中运行

来源:互联网 发布:电商行业转化率算法 编辑:程序博客网 时间:2024/05/16 19:18

最近在学习hadoop,安装的版本是hadoop2.7.3。

思考着如何把编写好的mapreduce内容部署到hadoop中并运行这个程序,下面记录了这部分实践内容。上面代码打包 hadoop-test.jar,打包方式任选。

package com.ksy.hadoop;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();        /**         * key 偏移量包括了回车所占的字符数(Windows和Linux环境会不同)         * value 一行数据         * context存储新Map的对象         */        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);            }        }    }    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {        private IntWritable result = new IntWritable();        /**         * key 为Map中的key,hadoop会把相同key的内容合并为一个list,该list就为values。         * context为存放结果的对象         */        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();        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(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]));        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));        System.exit(job.waitForCompletion(true) ? 0 : 1);    }}

 

  1. 上传包到部署有hadoop的机器上,本例子上传到/home/hadoop目录。
  2. 用工具putty/SecureCRT登录到系统,进入hadoop/bin目录下。
  3. 运行命令./hadoop jar ~/hadoop-test.jar com.ksy.hadoop.WordCount /user/hadoopfile output,这样就把该例子运行了,通过./hdfs dfs -ls /user/hadoop/output/可以查看到运行后生成了两个文件
    hadoop@ubuntu-114:/usr/local/hadoop/bin$ ./hdfs dfs -ls /user/hadoop/output/Found 2 items-rw-r--r--   1 hadoop supergroup          0 2017-07-25 19:00 /user/hadoop/output/_SUCCESS-rw-r--r--   1 hadoop supergroup      57649 2017-07-25 19:00 /user/hadoop/output/part-r-00000

     其中/user/hadoopfile是需要分析的hdfs文件,该文件可以通过shell命令上传到hdfs中,output是输出目录。

 

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小学寄读不转学籍手续怎么办 炸东西的油糊了怎么办 赠送面积为违建怎么办 执法不管违建我怎么办 司法考试毕业院校写错了怎么办 家具店西安一直拖着不交货怎么办 派出所私自迁移了我家户口怎么办? 退房子不退押金怎么办 租房子中介不退押金怎么办 租房子押金不退怎么办 外地人签户口到武汉怎么办 开发商不给办土地证怎么办 房间里的油烟味怎么办 现金借款app还不了款怎么办 学校不允许实习生自己租房怎么办 盯盯拍开不了机怎么办 向私人借钱不还怎么办 微信好友借钱不还怎么办 支付宝借不了钱怎么办 支付宝借条关了怎么办 qq群不小心解散了怎么办 qq群解散了照片怎么办 出租屋没窗户很闷怎么办 二手房交税后房主不卖怎么办 二房东收不到租拖欠房租怎么办 房东不给换门锁怎么办 租房到期房东联系不到租客怎么办 廉租房名下有车怎么办 路边停车收忘记交费怎么办 考编忘记交费了怎么办 深圳公租房入库了接下来怎么办 公租房5年以后怎么办 教务系统密码忘记了怎么办 林科大教务处密码忘记了怎么办 智学号密码忘了怎么办 正方教务管理系统忘记密码怎么办 正方教务系统忘记密码怎么办 教务网密码忘了怎么办 电动车解除限速报警器不响怎么办 公租房住满5年怎么办 广州公租房收入超标怎么办