【hadoop学习】在伪分布式hadoop上手把手实践word count程序【下】
2012-10-11 23:50
519 查看
3. 准备输入的数据文件
前段时间看svm,也参考了libsvm,其中有个分类测试数据,内容如下:
当然实际不止这十行,还有很多,我就不都列出来了。刚好,可以统计这些项在整个文件中出现的次数。
将这个文件放到hdfs上去,首先建立一个input路径,用命令
bin/hadoop fs -mkdir ./input
检查是否创建成功,用命令
bin/hadoop fs -ls
为啥总是写“bin/hadoop”?可以cd到bin目录下,不过运行hadoop命令也需要写“./hadoop ......”,一样麻烦。接下来,将这个文件放到hdfs的./input目录中,用命令
bin/hadoop fs -put /Volumes/Data/Works/TryJava/hadoopWordCount/dataTry.txt ./input
第一个是本地路径,第二个是hadoop路径。
注意:每次重新开机,都要重新启动hadoop,用bin/start_all.sh脚本。否则hadoop不会自动启动,hadoop没有启动起来,fs命令根本运行不了。
4. 在hadoop上运行hadoopWordCount程序
运行如下命令
bin/hadoop jar /Volumes/Data/Works/TryJava/hadoopWordCount/bin/helloWordCount.jar hadoopWordCount.hadoopWordCount ./input/dataTry.txt ./output
第一个参数是jar包的本地路径;第二个参数其实由helloWordCount类的main函数决定(args[1]),是输入数据的路径,是hdfs路径;第三个参数是输出结果的路径。需要注意的是,输出结果的路径必须是不存在的。否则hadoop认为这已经有了结果,会拒绝执行任务。
一切顺利的话,从控制台上可以看到输出信息:
信息的具体含义,可以查hadoop相关书籍。很多书都会做很详细的解释,我这里就不解释了。总之,运行成功!
5. 查看运行结果文件
在hdfs的“./output”目录下,有两个文件:_logs和part-r-00000(表示这是reduce任务的第0个输出)。用如下命令查看结果:
bin/hadoop fs -cat ./output/part-r-00000 | less
结果显示如下:
呵呵,可以看到,“-1”出现的次数是23510,就这个文件来说,-1表示负类的样本数;相应的,正样本数是7446。接下来,特征“100:1”出现的次数是53,特征“101:1”是79......我就不具体解释了,做过机器学习算法的人都会知道上面表示什么意思。
总之,word count程序在我macbook pro的伪分布式上成功运行!将来,可以在进一步折腾了。
前段时间看svm,也参考了libsvm,其中有个分类测试数据,内容如下:
-1 5:1 7:1 14:1 19:1 39:1 40:1 51:1 63:1 67:1 73:1 74:1 76:1 78:1 83:1 -1 3:1 6:1 17:1 22:1 36:1 41:1 53:1 64:1 67:1 73:1 74:1 76:1 80:1 83:1 -1 5:1 6:1 17:1 21:1 35:1 40:1 53:1 63:1 71:1 73:1 74:1 76:1 80:1 83:1 -1 2:1 6:1 18:1 19:1 39:1 40:1 52:1 61:1 71:1 72:1 74:1 76:1 80:1 95:1 -1 3:1 6:1 18:1 29:1 39:1 40:1 51:1 61:1 67:1 72:1 74:1 76:1 80:1 83:1 -1 4:1 6:1 16:1 26:1 35:1 45:1 49:1 64:1 71:1 72:1 74:1 76:1 78:1 101:1 1 5:1 7:1 17:1 22:1 36:1 40:1 51:1 63:1 67:1 73:1 74:1 76:1 81:1 83:1 1 2:1 6:1 14:1 29:1 39:1 42:1 52:1 64:1 67:1 72:1 75:1 76:1 82:1 83:1 1 4:1 6:1 16:1 19:1 39:1 40:1 51:1 63:1 67:1 73:1 75:1 76:1 80:1 83:1 1 3:1 6:1 18:1 20:1 37:1 40:1 51:1 63:1 71:1 73:1 74:1 76:1 82:1 83:1
当然实际不止这十行,还有很多,我就不都列出来了。刚好,可以统计这些项在整个文件中出现的次数。
将这个文件放到hdfs上去,首先建立一个input路径,用命令
bin/hadoop fs -mkdir ./input
检查是否创建成功,用命令
bin/hadoop fs -ls
为啥总是写“bin/hadoop”?可以cd到bin目录下,不过运行hadoop命令也需要写“./hadoop ......”,一样麻烦。接下来,将这个文件放到hdfs的./input目录中,用命令
bin/hadoop fs -put /Volumes/Data/Works/TryJava/hadoopWordCount/dataTry.txt ./input
第一个是本地路径,第二个是hadoop路径。
注意:每次重新开机,都要重新启动hadoop,用bin/start_all.sh脚本。否则hadoop不会自动启动,hadoop没有启动起来,fs命令根本运行不了。
4. 在hadoop上运行hadoopWordCount程序
运行如下命令
bin/hadoop jar /Volumes/Data/Works/TryJava/hadoopWordCount/bin/helloWordCount.jar hadoopWordCount.hadoopWordCount ./input/dataTry.txt ./output
第一个参数是jar包的本地路径;第二个参数其实由helloWordCount类的main函数决定(args[1]),是输入数据的路径,是hdfs路径;第三个参数是输出结果的路径。需要注意的是,输出结果的路径必须是不存在的。否则hadoop认为这已经有了结果,会拒绝执行任务。
一切顺利的话,从控制台上可以看到输出信息:
hello world for hadoop word count! 12/10/11 22:37:18 INFO input.FileInputFormat: Total input paths to process : 1 12/10/11 22:37:18 INFO mapred.JobClient: Running job: job_201210112225_0002 12/10/11 22:37:19 INFO mapred.JobClient: map 0% reduce 0% 12/10/11 22:37:31 INFO mapred.JobClient: map 100% reduce 0% 12/10/11 22:37:43 INFO mapred.JobClient: map 100% reduce 100% 12/10/11 22:37:45 INFO mapred.JobClient: Job complete: job_201210112225_0002 12/10/11 22:37:45 INFO mapred.JobClient: Counters: 17 12/10/11 22:37:45 INFO mapred.JobClient: Job Counters 12/10/11 22:37:45 INFO mapred.JobClient: Launched reduce tasks=1 12/10/11 22:37:45 INFO mapred.JobClient: Launched map tasks=1 12/10/11 22:37:45 INFO mapred.JobClient: Data-local map tasks=1 12/10/11 22:37:45 INFO mapred.JobClient: FileSystemCounters 12/10/11 22:37:45 INFO mapred.JobClient: FILE_BYTES_READ=9876916 12/10/11 22:37:45 INFO mapred.JobClient: HDFS_BYTES_READ=2207611 12/10/11 22:37:45 INFO mapred.JobClient: FILE_BYTES_WRITTEN=14815403 12/10/11 22:37:45 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1164 12/10/11 22:37:45 INFO mapred.JobClient: Map-Reduce Framework 12/10/11 22:37:45 INFO mapred.JobClient: Reduce input groups=125 12/10/11 22:37:45 INFO mapred.JobClient: Combine output records=0 12/10/11 22:37:45 INFO mapred.JobClient: Map input records=30956 12/10/11 22:37:45 INFO mapred.JobClient: Reduce shuffle bytes=4938455 12/10/11 22:37:45 INFO mapred.JobClient: Reduce output records=125 12/10/11 22:37:45 INFO mapred.JobClient: Spilled Records=1380897 12/10/11 22:37:45 INFO mapred.JobClient: Map output bytes=4017851 12/10/11 22:37:45 INFO mapred.JobClient: Combine input records=0 12/10/11 22:37:45 INFO mapred.JobClient: Map output records=460299 12/10/11 22:37:45 INFO mapred.JobClient: Reduce input records=460299
信息的具体含义,可以查hadoop相关书籍。很多书都会做很详细的解释,我这里就不解释了。总之,运行成功!
5. 查看运行结果文件
在hdfs的“./output”目录下,有两个文件:_logs和part-r-00000(表示这是reduce任务的第0个输出)。用如下命令查看结果:
bin/hadoop fs -cat ./output/part-r-00000 | less
结果显示如下:
-1 23510 1 7446 100:1 53 101:1 79 102:1 64 103:1 613 104:1 36 105:1 23 106:1 28 107:1 67 108:1 17 109:1 26 10:1 1978 110:1 47 111:1 44 112:1 56 113:1 12 114:1 58 115:1 33 116:1 12 117:1 16 118:1 15 119:1 98 11:1 1222 120:1 19 121:1 31 122:1 20 123:1 1 12:1 14 13:1 6 14:1 6186 15:1 6189 16:1 6197 17:1 6177
呵呵,可以看到,“-1”出现的次数是23510,就这个文件来说,-1表示负类的样本数;相应的,正样本数是7446。接下来,特征“100:1”出现的次数是53,特征“101:1”是79......我就不具体解释了,做过机器学习算法的人都会知道上面表示什么意思。
总之,word count程序在我macbook pro的伪分布式上成功运行!将来,可以在进一步折腾了。
相关文章推荐
- 【hadoop学习】在伪分布式hadoop上手把手实践word count程序【上】
- 【hadoop学习】在伪分布式hadoop上实践word count程序——c/c++ streaming版本(未完)
- 【hadoop学习】在伪分布式hadoop上实践word count程序——c/c++ pipes版本
- 小白学习大数据之路——Hadoop3.0.0-alpha2 安装以及测试程序wordcount实践
- hadoop学习-wordcount程序c++重写执行
- Hadoop入门实践之从WordCount程序说起
- 一步一步跟我学习hadoop(2)----hadoop eclipse插件安装和运行wordcount程序
- Hadoop完全分布式环境配置及 Word Count 程序运行
- 查看jar里面到底什么鬼~(hadoop学习wordcount程序代码查看)
- hadoop学习之HDFS(2.1):linux下eclipse中配置hadoop-mapreduce开发环境并运行WordCount.java程序
- HADOOP 分布式集群环境下第一个mapReduce程序—WordCount
- Hadoop学习6--里程碑式的开始之执行第一个程序wordcount
- Hadoop的单机伪分布式搭建和运行第一个WordCount程序
- 【学习笔记】用Hadoop在MapReduce中WordCount简单程序运行详细流程
- Hadoop入门实践之从WordCount程序说起
- 安装伪分布式Hadoop系统与WordCount程序实验
- Hadoop学习笔记---1.wordcount程序的剖析
- hadoop学习笔记(三)mapreduce程序wordcount
- Hadoop学习笔记(1):WordCount程序的实现与总结
- 知识学习——Hadoop MapReduce开发入门程序WordCount详解