运行第一个Hadoop程序,WordCount

系统: Ubuntu14.04

Hadoop版本: 2.7.2

参照http://www.cnblogs.com/taichu/p/5264185.html中的分享,来学习运行第一个hadoop程序。

在hadoop的安装文件夹 /usr/local/hadoop下创建input文件夹

[email protected]:/usr/local/hadoop$ mkdir ./input

然后copy几个文档到input文件夹中作为WordCount的输入

[email protected]:/usr/local/hadoop$ cp *.txt ./input

执行WordCount

[email protected]:/usr/local/hadoop$ hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input/ output

运行时报错

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://hadoopmaster:9000/user/hadoop/input

按照http://rangerwolf.iteye.com/blog/1900615中提供的解决方案把usr/local/hadoop/input文件夹put到hdfs中

[email protected]:/usr/local/hadoop$ hdfs dfs -put ./input/ input (这里在input前加上 / 就不会报错了,后同)
报错:put: `input‘: No such file or directory

直接mkdir也会出现同样的问题

[email protected]:~$ hdfs dfs -mkdir input
mkdir: `input‘: No such file or directory
加上 / 成功put了后再执行WordCount,仍然报错,Input path does not exist: hdfs://hadoopmaster:9000/user/hadoop/input

这里的input文件夹路径是/user/hadoop/input,但我的路径是/usr/local/input,是不是这个原因导致找不到路径呢

参考http://stackoverflow.com/questions/20821584/hadoop-2-2-installation-no-such-file-or-directory中的回答,在hdfs中创建/user/hadoop/

[email protected]:hdfs dfs -mkdir -p /user/hadoop

将input文件夹添加到该文件夹下(这一步是在eclipse中进行的)

现在我的hdfs的文件结构是这样的

[email protected]:/usr/local/hadoop/etc/hadoop$ hdfs dfs -ls -R /
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:39 /input
-rw-r--r--   2 hadoop supergroup      15429 2016-03-16 21:39 /input/LICENSE.txt
-rw-r--r--   2 hadoop supergroup        101 2016-03-16 21:39 /input/NOTICE.txt
-rw-r--r--   2 hadoop supergroup       1366 2016-03-16 21:39 /input/README.txt
drwx------   - hadoop supergroup          0 2016-03-16 21:17 /tmp
drwx------   - hadoop supergroup          0 2016-03-16 21:17 /tmp/hadoop-yarn
drwx------   - hadoop supergroup          0 2016-03-16 21:17 /tmp/hadoop-yarn/staging
drwx------   - hadoop supergroup          0 2016-03-16 21:17 /tmp/hadoop-yarn/staging/hadoop
drwx------   - hadoop supergroup          0 2016-03-16 21:41 /tmp/hadoop-yarn/staging/hadoop/.staging
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:51 /user
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 22:02 /user/hadoop
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:57 /user/hadoop/input
-rw-r--r--   3 hadoop supergroup      15429 2016-03-16 21:57 /user/hadoop/input/LICENSE.txt
-rw-r--r--   3 hadoop supergroup        101 2016-03-16 21:57 /user/hadoop/input/NOTICE.txt
-rw-r--r--   3 hadoop supergroup       1366 2016-03-16 21:57 /user/hadoop/input/README.txt
执行
[email protected]:/usr/local/hadoop/etc/hadoop$ hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input/ output
Not a valid JAR: /usr/local/hadoop/etc/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar

换成hdfs jar则会

[email protected]:/usr/local/hadoop/etc/hadoop$ hdfs jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input/ output
Error: Could not find or load main class jar
尚不清楚原因,改天来解决。有高手知道为什么会出这样的问题的请不吝赐教。

在eclipse中执行WordCount,运行成功!下面是部分输出结果。

16/03/16 22:02:46 INFO mapreduce.Job:  map 100% reduce 100%
16/03/16 22:02:46 INFO mapreduce.Job: Job job_local1837130715_0001 completed successfully
16/03/16 22:02:46 INFO mapreduce.Job: Counters: 35
    File System Counters
        FILE: Number of bytes read=29752
        FILE: Number of bytes written=1200391
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=66016
        HDFS: Number of bytes written=8983
        HDFS: Number of read operations=33
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=6
    Map-Reduce Framework
        Map input records=322
        Map output records=2347
        Map output bytes=24935
        Map output materialized bytes=13001
        Input split bytes=355
        Combine input records=2347
        Combine output records=897
        Reduce input groups=840
        Reduce shuffle bytes=13001
        Reduce input records=897
        Reduce output records=840
        Spilled Records=1794
        Shuffled Maps =3
        Failed Shuffles=0
        Merged Map outputs=3
        GC time elapsed (ms)=17
        Total committed heap usage (bytes)=1444937728
    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=16896
    File Output Format Counters
        Bytes Written=8983

嗯,目前还不是很看得懂这个结果,明天开始看书了,基础还是最重要的。

备忘:

hadoop命令:

列出hdfs文件系统根目录下的目录和文件

hdfs dfs -ls /  (有 / )

hdfs dfs -ls    (没有有 / )

这两个的结果是不一样的,不理解为什么,这就是为什么明天要看书的原因

Error: Could not find or load main class jar
[email protected]:/usr/local/hadoop/etc/hadoop$ hdfs dfs -ls(在hdfs dfs -mkdir -p /user/[current login user]
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:57 input
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 22:02 output
[email protected]:/usr/local/hadoop/etc/hadoop$ hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:39 /input
drwx------   - hadoop supergroup          0 2016-03-16 21:17 /tmp
drwxr-xr-x   - hadoop supergroup          0 2016-03-16 21:51 /user

列出hdfs文件系统所有的目录和文件

hdfs dfs -ls  -R /(有 / 和没有 / 的结果也是不一样的,对应上面-ls的文件夹)

时间: 2024-08-05 02:27:14

运行第一个Hadoop程序,WordCount的相关文章

第六篇:Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)

需求 计算出文件中每个单词的频数.要求输出结果按照单词的字母顺序进行排序.每个单词和其频数占一行,单词和频数之间有间隔. 比如,输入两个文件,其一内容如下: hello world hello hadoop hello mapreduce 另一内容如下: bye world bye hadoop bye mapreduce 对应上面给出的输入样例,其输出样例为: bye   3 hadoop 2 hello 3 mapreduce 2 world 2 方案制定 对该案例,可设计出如下的MapRe

Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)

需求 计算出文件中每个单词的频数.要求输出结果按照单词的字母顺序进行排序.每个单词和其频数占一行,单词和频数之间有间隔. 比如,输入一个文件,其内容如下: hello world hello hadoop hello mapreduce 对应上面给出的输入样例,其输出样例为: hadoop 1 hello 3 mapreduce 1 world 1 方案制定 对该案例,可设计出如下的MapReduce方案: 1. Map阶段各节点完成由输入数据到单词切分的工作 2. shuffle阶段完成相同单

cocos2dx-3.2 运行第一个android程序

第一步,下载各种环境. 搭建android的java开发环境,android环境的搭建(包括ADT,eclipse 和 android SDK)网上有很多教程,这里不再赘述. NDK (这个简单,从官网下载后解压,然后把解压路径 设置到环境变量的path中即可) ANT (这个简单,从官网下载后解压,然后把解压路径+bin 这个路径 设置到环境变量的path中即可) Cocos2dx-3.2 (这个安装网上也有好多) Python (安装时,选完安装路径后,会有个选择组建的界面,这个界面的最后一

【DirectX11-Tutorial】运行第一个win32程序A Primer of Basic Windows

DirectX11-Tutorial 本系列主要参考此博客的文章,同时会加上一点个人实践过程. ========================================== 分割线 ========================================== <span style="font-family:Microsoft YaHei;font-size:14px;">#include <stdio.h> // include the sta

第一个hadoop程序(hadoop2.4.0集群+Eclipse环境)

一.Eclipse hadoop环境配置  1. 在我的电脑右键->属性->高级系统设置->环境变量,配置环境变量: JAVA_HOME=D:\ProgramFiles\Java\jdk1.7.0_67, HADOOP_HOME=D:\TEDP_Software\hadoop-2.4.0, PATH=.;%JAVA_HOME%\bin;%HADOOP_HOME%\bin; 2. 在Eclipse中安装好hadoop-eclipse-kepler-plugin-2.2.0.jar插件,并配

OpenCV学习笔记(一)安装及运行第一个OpenCV程序

1.下载及安装 OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ .在 http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包.OpenCV的Windows平台安装包是放在SourceForge.net网站. 我下了2.4.4版,大概217M.安装包其实就是一个压缩包,安装过程就是解压到某个文件夹.我是安装到 E:\Soft\opencv 目录,安装后文件夹如下: 我们只需要关注“build”文

Java学习(三)运行第一个JFreeChartDemo程序

在上一次的学习中,我们完成了Java开发的基本配置,那么接下来,下载安装一个Java的IDE就可以了,比如像我一样安装myeclipse 2013或者eclipse,都可以.接下来我将以myeclipse 2013为集成开发环境,运行我们的第一个java程序,不过它与图形相关,所以需要引用JFreeChart这个库. 一.新建一个java项目 File--->New--->Project: 在出现的对话框中选择Java Project,然后命名之后next,最后finish就可以了. 二.新建

【Java】使用记事本运行第一个Java程序

要编写java程序,java sdk必不可少,mac OS系统自带sdk,如果觉得版本太低,可以去官网下载最新的. 打开终端,新建一个HelloWorld.java文件: vim HelloWorld.java 开始编写程序,如图:(为了大家更好的学习,请参照图动手敲代码,舍弃复制粘贴的快感) 接下来保存关闭,终端输入: javac HelloWorld.java 可以看到多出来一个.class文件,这是java编译出来的字节码文件 执行 java HelloWorld 你成功的运行了第一个ja

运行第一个Python程序

Python的三种运行方式 交互式解释器 在终端输入python3 进入python交互式解释器 输入exit()退出交互式解释器 命令行脚本 创建python脚本 通过命令执行程序 python hello.py 集成开发环境(IDE) 通过集成开发环境编辑执行python程序 比如PyCharm.vscode 第一个python程序 方式一 命令行输入python3 进入交互式解释器 输入print("hello", "world") 即可运行 方式二 原文地址