为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何运行自带wordcount-Hadoop2?

/ 猿问

请问该如何运行自带wordcount-Hadoop2?

如何运行自带wordcount-Hadoop2


查看完整描述

3 回答

?
白板的微信

1.找到examples例子
我们需要找打这个例子的位置:首先需要找到你的hadoop文件夹,然后依照下面路径:
/hadoop/share/hadoop/mapreduce会看到如下图:

  • hadoop-mapreduce-examples-2.2.0.jar

  •  

    第二步:
    我们需要需要做一下运行需要的工作,比如输入输出路径,上传什么文件等。
    1.先在HDFS创建几个数据目录:

  • hadoop fs -mkdir -p /data/wordcount

  • hadoop fs -mkdir -p /output/

  •  

    2.目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。
    首先新建文件inputWord:

  • vi /usr/inputWord

  • 新建完毕,查看内容:

  • cat /usr/inputWord

  •  

    将本地文件上传到HDFS中:

  • hadoop fs -put /usr/inputWord /data/wordcount/

  • 可以查看上传后的文件情况,执行如下命令:

  • hadoop fs -ls /data/wordcount

  • 可以看到上传到HDFS中的文件。

     

    通过命令

  • hadoop fs -text /data/wordcount/inputWord

  • 看到如下内容:

    下面,运行WordCount例子,执行如下命令:

  • hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /data/wordcount /output/wordcount

  •  
    可以看到控制台输出程序运行的信息:

  • aboutyun@master:~$ hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /data/wordcount /output/wordcount


  • 14/05/14 10:33:33 INFO client.RMProxy: Connecting to ResourceManager at master/172.16.77.15:8032


  • 14/05/14 10:33:34 INFO input.FileInputFormat: Total input paths to process : 1


  • 14/05/14 10:33:34 INFO mapreduce.JobSubmitter: number of splits:1


  • 14/05/14 10:33:34 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapreduce.combine.class is deprecated. Instead, use mapreduce.job.combine.class


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.job.name is deprecated. Instead, use mapreduce.job.name


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class


  • 14/05/14 10:33:34 INFO Configuration.deprecation: mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir


  • 14/05/14 10:33:35 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1400084979891_0004


  • 14/05/14 10:33:36 INFO impl.YarnClientImpl: Submitted application application_1400084979891_0004 to ResourceManager at master/172.16.77.15:8032


  • 14/05/14 10:33:36 INFO mapreduce.Job: The url to track the job: http://master:8088/proxy/application_1400084979891_0004/


  • 14/05/14 10:33:36 INFO mapreduce.Job: Running job: job_1400084979891_0004


  • 14/05/14 10:33:45 INFO mapreduce.Job: Job job_1400084979891_0004 running in uber mode : false


  • 14/05/14 10:33:45 INFO mapreduce.Job:  map 0% reduce 0%


  • 14/05/14 10:34:10 INFO mapreduce.Job:  map 100% reduce 0%


  • 14/05/14 10:34:19 INFO mapreduce.Job:  map 100% reduce 100%


  • 14/05/14 10:34:19 INFO mapreduce.Job: Job job_1400084979891_0004 completed successfully


  • 14/05/14 10:34:20 INFO mapreduce.Job: Counters: 43


  •         File System Counters


  •                 FILE: Number of bytes read=81


  •                 FILE: Number of bytes written=158693


  •                 FILE: Number of read operations=0


  •                 FILE: Number of large read operations=0


  •                 FILE: Number of write operations=0


  •                 HDFS: Number of bytes read=175


  •                 HDFS: Number of bytes written=51


  •                 HDFS: Number of read operations=6


  •                 HDFS: Number of large read operations=0


  •                 HDFS: Number of write operations=2


  •         Job Counters 


  •                 Launched map tasks=1


  •                 Launched reduce tasks=1


  •                 Data-local map tasks=1


  •                 Total time spent by all maps in occupied slots (ms)=23099


  •                 Total time spent by all reduces in occupied slots (ms)=6768


  •         Map-Reduce Framework


  •                 Map input records=5


  •                 Map output records=10


  •                 Map output bytes=106


  •                 Map output materialized bytes=81


  •                 Input split bytes=108


  •                 Combine input records=10


  •                 Combine output records=6


  •                 Reduce input groups=6


  •                 Reduce shuffle bytes=81


  •                 Reduce input records=6


  •                 Reduce output records=6


  •                 Spilled Records=12


  •                 Shuffled Maps =1


  •                 Failed Shuffles=0


  •                 Merged Map outputs=1


  •                 GC time elapsed (ms)=377


  •                 CPU time spent (ms)=11190


  •                 Physical memory (bytes) snapshot=284524544


  •                 Virtual memory (bytes) snapshot=2000748544


  •                 Total committed heap usage (bytes)=136450048


  •         Shuffle Errors


  •                 BAD_ID=0


  •                 CONNECTION=0


  •                 IO_ERROR=0


  •                 WRONG_LENGTH=0


  •                 WRONG_MAP=0


  •                 WRONG_REDUCE=0


  •         File Input Format Counters 


  •                 Bytes Read=67


  •         File Output Format Counters 


  •                 Bytes Written=51



  • 查看结果,执行如下命令:

  • hadoop fs -text /output/wordcount/part-r-00000

  • 结果数据示例如下:

  • aboutyun@master:~$ hadoop fs -text /output/wordcount/part-r-00000

  • aboutyun        2

  • first        1

  • hello        3

  • master        1

  • slave        2

  • what        1


  •  
    登录到Web控制台,访问链接http://master:8088/可以看到任务记录情况。



查看完整回答
反对 回复 2019-09-14
?
潇潇雨雨

但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。
为了方便介绍,先来看几个名词:
block_size : hdfs的文件块大小,默认为64M,可以通过参数dfs.block.size设置
total_size : 输入文件整体的大小
input_file_num : 输入文件的个数
(1)默认map个数
如果不进行任何设置,默认的map个数是和blcok_size相关的。
default_num = total_size / block_size;
(2)期望大小
可以通过参数
mapred.map.tasks来设置程序员期望的map个数,但是这个个数只有在大于default_num的时候,才会生效。
goal_num =mapred.map.tasks;
(3)设置处理的文件大小
可以通过mapred.min.split.size 设置每个task处理的文件大小,但是这个大小只有在大于
block_size的时候才会生效。
split_size = max(
mapred.min.split.size,
block_size);split_num = total_size / split_size;
(4)计算的map个数
compute_map_num = min(split_num, max(default_num, goal_num))
除了这些配置以外,mapreduce还要遵循一些原则。 mapreduce的每一个map处理的数据是不能跨越文件的,也就是说max_map_num <= input_file_num。 所以,最终的map个数应该为:
final_map_num = min(compute_map_num, input_file_num)
经过以上的分析,在设置map个数的时候,可以简单的总结为以下几点:
(1)如果想增加map个数,则设置mapred.map.tasks 为一个较大的值。
(2)如果想减小map个数,则设置mapred.min.split.size 为一个较大的值。



查看完整回答
反对 回复 2019-09-14
?
慕仰0522570

job.split中包含split的个数由FileInputFormat.getSplits计算出,方法的逻辑如下:
1. 读取参数mapred.map.tasks,这个参数默认设置为0,生产系统中很少修改。
2. 计算input文件的总字节数,总字节数/(mapred.map.tasks==0 ? 1: mapred.map.tasks )=goalsize
3. 每个split的最小值minSize由mapred.min.split.size参数设置,这个参数默认设置为0,生产系统中很少修改。
4. 调用computeSplitSize方法,计算出splitsize= Math.max(minSize, Math.min(goalSize, blockSize)),通常这个值=blockSize,输入的文件较小,文件字节数之和小于blocksize时,splitsize=输入文件字节数之和。
5. 对于input的每个文件,计算split的个数。
a) 文件大小/splitsize>1.1,创建一个split,这个split的字节数=splitsize,文件剩余字节数=文件大小-splitsize
b) 文件剩余字节数/splitsize<1.1,剩余的部分作为一个split
举例说明:
1. input只有一个文件,大小为100M,splitsize=blocksize,则split数为2,第一个split为64M,第二个为36M
2. input只有一个文件,大小为65M,splitsize=blocksize,则split数为1,split大小为65M
3. input只有一个文件,大小为129M,splitsize=blocksize,则split数为2,第一个split为64M,第二个为65M(最后一个split的大小可能超过splitsize)
4. input只有一个文件,大小为20M ,splitsize=blocksize,则split数为1,split大小为20M
5. input有两个文件,大小为100M和20M,splitsize=blocksize,则split数为3,第一个文件分为两个split,第一个split为64M,第二个为36M,第二个文件为一个split,大小为20M
6. input有两个文件,大小为25M和20M,splitsize=blocksize,则split数为2,第一个文件为一个split,大小为25M,第二个文件为一个split,大小为20M
假设一个job的input大小固定为100M,当只包含一个文件时,split个数为2,maptask数为2,但当包含10个10M的文件时,maptask数为10。
下面来分析reducetask,纯粹的mapreduce task的reduce task数很简单,就是参数mapred.reduce.tasks的值,hadoop-site.xml文件中和mapreduce job运行时不设置的话默认为1。
在HIVE中运行sql的情况又不同,hive会估算reduce task的数量,估算方法如下:
通常是ceil(input文件大小/1024*1024*1024),每1GB大小的输入文件对应一个reduce task。
特殊的情况是当sql只查询count(*)时,reduce task数被设置成1。



查看完整回答
反对 回复 2019-09-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信