执行wordcount

代码

  1. package org.apache.hadoop.examples;
  2.  
  3. import java.io.IOException;
  4. import java.util.Iterator;
  5. import java.util.StringTokenizer;
  6.  
  7. import org.apache.hadoop.fs.Path;
  8. import org.apache.hadoop.io.IntWritable;
  9. import org.apache.hadoop.io.LongWritable;
  10. import org.apache.hadoop.io.Text;
  11. import org.apache.hadoop.mapred.FileInputFormat;
  12. import org.apache.hadoop.mapred.FileOutputFormat;
  13. import org.apache.hadoop.mapred.JobClient;
  14. import org.apache.hadoop.mapred.JobConf;
  15. import org.apache.hadoop.mapred.MapReduceBase;
  16. import org.apache.hadoop.mapred.Mapper;
  17. import org.apache.hadoop.mapred.OutputCollector;
  18. import org.apache.hadoop.mapred.Reducer;
  19. import org.apache.hadoop.mapred.Reporter;
  20. import org.apache.hadoop.mapred.TextInputFormat;
  21. import org.apache.hadoop.mapred.TextOutputFormat;
  22.  
  23. public class WordCount {
  24.  
  25. public static class Map extends MapReduceBase implements
  26. Mapper<LongWritable, Text, Text, IntWritable> {
  27. private final static IntWritable one = new IntWritable();
  28. private Text word = new Text();
  29.  
  30. public void map(LongWritable key, Text value,
  31. OutputCollector<Text, IntWritable> output, Reporter reporter)
  32. throws IOException {
  33. String line = value.toString();
  34. StringTokenizer tokenizer = new StringTokenizer(line);
  35. while (tokenizer.hasMoreTokens()) {
  36. word.set(tokenizer.nextToken());
  37. output.collect(word, one);
  38. }
  39. }
  40. }
  41.  
  42. public static class Reduce extends MapReduceBase implements
  43. Reducer<Text, IntWritable, Text, IntWritable> {
  44. public void reduce(Text key, Iterator<IntWritable> values,
  45. OutputCollector<Text, IntWritable> output, Reporter reporter)
  46. throws IOException {
  47. int sum = ;
  48. while (values.hasNext()) {
  49. sum += values.next().get();
  50. }
  51. output.collect(key, new IntWritable(sum));
  52. }
  53. }
  54.  
  55. public static void main(String[] args) throws Exception {
  56. JobConf conf = new JobConf(WordCount.class);
  57. conf.setJobName("wordcount");
  58.  
  59. conf.setOutputKeyClass(Text.class);
  60. conf.setOutputValueClass(IntWritable.class);
  61.  
  62. conf.setMapperClass(Map.class);
  63. conf.setCombinerClass(Reduce.class);
  64. conf.setReducerClass(Reduce.class);
  65.  
  66. conf.setInputFormat(TextInputFormat.class);
  67. conf.setOutputFormat(TextOutputFormat.class);
  68.  
  69. FileInputFormat.setInputPaths(conf, new Path(args[]));
  70. FileOutputFormat.setOutputPath(conf, new Path(args[]));
  71.  
  72. JobClient.runJob(conf);
  73. }
  74. }

首先进行编译:

  1. javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d WordCount ./WordCount/WordCount.java

然后压包

  1. jar -cvf wordcount.jar org/*

在复制到hadoop的工作目录下

然后在hadoop工作目录下面新建一个input目录 mkdir input,在目录里面新建一个文件vi file1,输入以下内容: 
hello world 
hello hadoop 
hello mapreduce 
,把该文件上传到hadoop的分布式文件系统中去

  1. ./bin/hadoop fs -put input/file* input

(6)然后我们开始执行

  1. ./bin/hadoop jar wordcount.jar org.apache.hadoop.examples.WordCount input wordcount_output

(7)最后我们查看运行结果

    1. ./bin/hadoop fs -cat wordcount_output/part-r-00000

参考:

http://cardyn.iteye.com/blog/1356361

https://blog.csdn.net/qichangleixin/article/details/43376587

二.往hdfs写数据

java代码

  1. import org.apache.hadoop.conf.Configuration;
  2. import org.apache.hadoop.fs.FileSystem;
  3. import org.apache.hadoop.fs.Path;
  4. import org.apache.hadoop.io.IOUtils;
  5.  
  6. import java.io.*;
  7. import java.net.URI;
  8.  
  9. /**
  10. * blog: http://www.iteblog.com/
  11. * Date: 14-1-2
  12. * Time: 下午6:09
  13. */
  14. public class AppendContent {
  15. public static void main(String[] args) {
  16. String hdfs_path = "input/file1";//文件路径
  17. Configuration conf = new Configuration();
  18. conf.setBoolean("dfs.support.append", true);
  19.  
  20. String inpath = "./append.txt";
  21. FileSystem fs = null;
  22. try {
  23. fs = FileSystem.get(URI.create(hdfs_path), conf);
  24. //要追加的文件流,inpath为文件
  25. InputStream in = new
  26. BufferedInputStream(new FileInputStream(inpath));
  27. OutputStream out = fs.append(new Path(hdfs_path));
  28. IOUtils.copyBytes(in, out, , true);
  29. } catch (IOException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33. }

注意指定的hdfs路径,用hdfs://localhost:9000/input/路径一直不行,不知道什么原因。

编译

  1. javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d ./classes ./my_append/AppendContent.java

压包

  1. jar -cvf ./my_jar/append.jar ./classes/*

运行

  1. ./bin/hadoop jar ./my_jar/append.jar AppendContent

AppendContent是类的名字

查看

  1. ./bin/hdfs dfs -cat input/*

或者代码可以改为通过args传参的方式传入hdfs路径, 方便多进程操作

  1. import org.apache.hadoop.conf.Configuration;
  2. import org.apache.hadoop.fs.FileSystem;
  3. import org.apache.hadoop.fs.Path;
  4. import org.apache.hadoop.io.IOUtils;
  5. import org.apache.hadoop.fs.FSDataInputStream;
  6. import org.apache.hadoop.fs.FSDataOutputStream;
  7.  
  8. import java.io.*;
  9. import java.net.URI;
  10.  
  11. /**
  12. * blog: http://www.iteblog.com/
  13. * Date: 14-1-2
  14. * Time: 下午6:09
  15. */
  16. public class AppendContent {
  17. public static void main(String[] args) {
  18. //String hdfs_path = "input/file1";//文件路径
  19. String hdfs_path = args[];
  20. Configuration conf = new Configuration();
  21. conf.setBoolean("dfs.support.append", true);
  22.  
  23. //String inpath = "./append.txt";
  24. FileSystem fs = null;
  25. try {
  26. fs = FileSystem.get(URI.create(hdfs_path), conf);
  27. FSDataOutputStream out = fs.append(new Path(hdfs_path));
  28.  
  29. String s="";
  30. for(int i=;i<;i++)
  31. {
  32. for(int j=;j<;j++)
  33. {
  34. s+='a';
  35. }
  36. int readLen = s.getBytes().length;
  37. out.write(s.getBytes(), , readLen);
  38. }
  39.  
  40. //int readLen = "0123456789".getBytes().length;
  41.  
  42. //while (-1 != readLen)
  43.  
  44. //out.write("0123456789".getBytes(), 0, readLen);
  45.  
  46. //要追加的文件流,inpath为文件
  47. //InputStream in = new
  48. // BufferedInputStream(new FileInputStream(inpath));
  49. //OutputStream out = fs.append(new Path(hdfs_path));
  50. //IOUtils.copyBytes(in, out, 4096, true);
  51. } catch (IOException e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. }

编译与压包命令同上,执行命令如下

  1. ./bin/hadoop jar ./my_jar/append.jar AppendContent input/file1

参考:https://blog.csdn.net/jameshadoop/article/details/24179413

https://blog.csdn.net/wypblog/article/details/17914021

脚本

  1. #!/bin/bash
  2.  
  3. #开始时间
  4. begin=$(date +%s%N)
  5.  
  6. for ((i=; i<;i++))
  7. do
  8. {
  9. ./bin/hadoop jar ./my_jar/append.jar AppendContent input/file${i}
  10. }
  11. done
  12.  
  13. wait
  14. #结束时间
  15. end=$(date +%s%N)
  16. #spend=$(expr $end - $begin)
  17.  
  18. use_tm=`echo $end $begin | awk '{ print ($1 - $2) / 1000000000}'`
  19. echo "花费时间为$use_tm"

二. java在ext3中的测试

程序

  1. import java.io.*;
  2. import java.net.URI;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.io.OutputStreamWriter;
  9. import java.io.RandomAccessFile;
  10.  
  11. public class Toext3 {
  12. public static void main(String[] args) {
  13. //String hdfs_path = "input/file1";//文件路径
  14. String ext3_path = args[];
  15. FileWriter writer = null;
  16. //String inpath = "./append.txt";
  17. try {
  18. String s="";
  19. for(int i=;i<;i++)
  20. {
  21. s="";
  22. for(int j=;j<;j++)
  23. {
  24. s+='b';
  25. }
  26. writer = new FileWriter(ext3_path, true);
  27. writer.write(s);
  28. System.out.println(ext3_path);
  29. }
  30.  
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }finally {
  34. try {
  35. if(writer != null){
  36. writer.close();
  37. }
  38. } catch (IOException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42.  
  43. }
  44. }

编译:

  1. javac -classpath ./share/hadoop/common/hadoop-common-2.7..jar:./share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7..jar -d ./data/classes data/Toext3.java

运行

  1. java -cp ./data/classes/ Toext3 ./data/ext3/file0

在运行中,-cp指明class文件的路径,Toext3指出要运行的类

hadoop相关的更多相关文章

  1. [Linux] 安装JDK和Maven及hadoop相关环境

    紧接上一篇,继续安装hadoop相关环境 JDK安装:     1. 下载,下面这两个地址在网上找的,可以直接下载:         http://download.oracle.com/otn-pu ...

  2. Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop

    Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop的相关介绍. Hive Pig和Hive的对比 摘要: Pig Pig是一种编程语言,它简化了Hadoop常见的工作 ...

  3. 一 hadoop 相关介绍

    hadoop 相关介绍 hadoop的首页有下面这样一段介绍.对hadoop是什么这个问题,做了简要的回答. The Apache™ Hadoop® project develops open-sou ...

  4. Hadoop自学笔记(一)常见Hadoop相关项目一览

    本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误 ...

  5. Hadoop相关问题解决

    Hadoop相关问题解决 Hive 1.查询hivemeta信息,查到的numRows为-1 集群厂商 集群版本 是否高可用 是否开启认证 cdh 不限 不限 不限 在hivemeta库中可以通过以下 ...

  6. Hadoop相关日常操作

    1.Hive相关 脚本导数据,并设置运行队列 bin/beeline -u 'url' --outputformat=tsv -e "set mapreduce.job.queuename= ...

  7. Hadoop 相关链接

    Apache   软件下载 http://mirror.bit.edu.cn/apache/ 相关文档链接: Apache Hadoop 2.5.2  http://hadoop.apache.org ...

  8. 大数据及hadoop相关知识介绍

    一.大数据的基本概念 1.1什么是大数据 互联网企业是最早收集大数据的行业,最典型的代表就是Google和百度,这两个公司是做搜索引擎的,数量都非常庞大,每天都要去把互联网上的各种各样的网页信息抓取下 ...

  9. Hadoop相关基础知识

    因为个人对这块的知识也不熟悉,所以大多内容来源于网络. 1.      Hadoop项目框架 2.      Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以 ...

  10. Hadoop相关笔记

    一.            Zookeeper( 分布式协调服务框架 ) 1.    Zookeeper概述和集群搭建: (1)       Zookeeper概述: Zookeeper 是一个分布式 ...

随机推荐

  1. POJ1390 Blocks 【动态规划】

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4173   Accepted: 1661 Descriptio ...

  2. 项目部署在windows下的tomcat里

    打包放在webapps 目录下,web的改成ROOT ok!!!

  3. Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构

    Batch Normalization Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应 ...

  4. HTML iframe 和 frameset 的区别

    转自:http://www.cnblogs.com/polk6/archive/2013/05/24/3097430.html HTML iframe 和 frameset 的区别 iframe 和 ...

  5. 基本类型转换成NSNumber类型

    int i=100; float f=2.34; NSNumber *n1=[NSNumber numberWithInt:i]; NSNumber *n2=[NSNumber numberWithF ...

  6. caffe下python环境的编译

    安装python所需的依赖包 (1)sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-n ...

  7. 个人对于React的Diff算法的一点疑问(待更新)

    本人对于Diff算法也并未做深入研究,只是大概的看过一些博文了解了些原理,但依然有了如下疑问 : 对于vdom所表示的对象中,若在该oldObj和newObj之间,发现一个元素节点所表示的子对象不见了 ...

  8. ViewPager滑动到最后一页再向左滑动进入主界面

    在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1 ...

  9. 用私有构造器或枚举类型强化Singleton

    Singleton指只有一个实例的类,只能被创建一次. 在Java1.5之前实现Singleton有两种方式,都是将构造器设为private并导出公有的静态成员实例. 第一种方式将公有的静态成员实例设 ...

  10. Codeforces Round #499 (Div. 2) D. Rocket_交互题_二分

    第一次作交互题,有点不习惯. 由于序列是循环的,我们可以将一半的机会用于判断当前是否是在说谎,另一半的机会用于二分的判断. 对于判断是否实在说谎,用1判断即可.因为不可能有比1还小的数. 本题虽然非常 ...