一、谁能给我解答下Hadoop自带的wordcount中reducer函数中统计方法
就拿你的hello hadoop 和 hello world举例。
首先map会按行读取输入文件,并进行切分,得到hello和hadoop和hello和world四个值,然后将每个单词与1进行组合生成
hadoop fs -mkdir /input 在HDFS中创建input文件目录 hadoop fs -put LICENSE.txt /input 我当前在hadoop的目录下,有个LICENSE.txt的文件,把它放到hdfs的input目录下面 hadoop fs -ls /input 查看文件是否正确传入到/input目录下 hadoop fs -cat /input/LICENSE.txt查看文件内容 执行:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output 或者绝对路径: hadoop jar /home/yy/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output 按我前面的配置会卡在mapreduce.Job: Running job 在etc/hadoop/mapred-site.xml中,如果配置 mapreduce.framework.nameyarn 则使用yarn来进行计算,那么必须启动nodemanager, 如果不使用yarn,进行mapreduce.job.tracker配置,也可以用MRv2来执行job,这样就不需要启动nodemanager: mapreduce.job.trackerhdfs://192.168.1.51:8001true 修改后可以正常运行,看到这个就成功了 hadoop fs -ls /output 查看输出结果的目录 hadoop fs -cat /output/part-r-00000 查看输出结果 结果就是对LICENSE.txt文件中单词进行计数统计了,到这就运行完成了。 这时你就可以把这个example导入了eclipse中去试试啦。 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 可以看到控制台输出程序运行的信息 查看结果,执行如下命令: hadoop fs -text /output/wordcount/part-r-00000 结果数据示例如下: 登录到Web控制台,访问链接http.//master:8088/可以看到任务记录情况。 1,在hadoop包中的hadoop-2.6.0->share->hadoop->mapreduce中的hadoop-mapreduce-examples 2.6.0.jar 2,运行命令hadoop jar share/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input/ /output/wordcount就可以了,其中的input和output是存放计算文件的文件夹 1. 创建本地的示例数据文件:依次进入【Home】-【hadoop】-【hadoop-1.2.1】创建一个文件夹file用来存储本地原始数据。 并在这个目录下创建2个文件分别命名为【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。分别在这2个文件中输入下列示例语句:2. 在HDFS上创建输入文件夹呼出终端,输入下面指令:bin/hadoop fs -mkdir hdfsInput执行这个命令时可能会提示类似安全的问题,如果提示了,请使用bin/hadoop dfsadmin -safemode leave来退出安全模式。 当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。 运行期通过命令也可以进入 安全模式。意思是在HDFS远程创建一个输入目录,我们以后的文件需要上载到这个目录里面才能执行。 3. 上传本地file中文件到集群的hdfsInput目录下在终端依次输入下面指令:cd hadoop-1.2.1bin/hadoop fs -put file/myTest*.txt hdfsInput4. 运行例子:在终端输入下面指令:bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput注意,这里的示例程序是1.2.1版本的,可能每个机器有所不一致,那么请用*通配符代替版本号bin/hadoop jar hadoop-examples-*.jar wordcount hdfsInput hdfsOutput应该出现下面结果:Hadoop命令会启动一个JVM来运行这个MapReduce程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到Hadoop的库中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201202292213_0002,而且得知输入文件有两个(Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数),以及reduce输入输出记录。 查看HDFS上hdfsOutput目录内容:在终端输入下面指令:bin/hadoop fs -ls hdfsOutput从上图中知道生成了三个文件,我们的结果在"part-r-00000"中。使用下面指令查看结果输出文件内容bin/hadoop fs -cat output/part-r-00000。 就拿你的hello hadoop 和 hello world举例。 1. 首先map会按行读取输入文件,并进行切分,得到hello和hadoop和hello和world四个值,然后将每个单词与1进行组合生成对 2. hadoop会自动对map的输出结果按key进行排序分组,使得和在一个分组,和各自一个分组,然后作为reduce的输入 3. reduce接收到的输入是一个个key相同的集合(可能会有多个这样的集合,这里有三个),即,这样遍历每个集合,取value值进行相加作为value,key不变,得到新的作为输出。 不知道解释的能不能听懂,网上应该有较详细的讲解。 转载请注明出处51数据库 » hadoop中wordcount解读二、hadoop 运行wordcount 需要多久
三、如何运行自带wordcount
四、hadoop 2.6.0 wordcount 例子在哪
五、如何写wordcount在hadoop2.7.1中运行
六、谁能给我解答下Hadoop自带的wordcount中reducer函数中统计方法