您的位置:首页 > 运维架构

hadoop程序运行

2015-05-09 20:42 92 查看
hadoop命令的使用:

Usage: hadoop [--config confdir] COMMAND

这里COMMAND为下列其中一个:

hadoop程序的编译:(我是用的hadoop版本为hadoop-0.20.203.0)

1.注意的是要将hadoop的core包加入到classpath中,命令如下:

javac -classpath ~/hadoop-0.20.203.0/hadoop-core-0.20.203.0.jar  FileSystemDoubleCat.java

(这里还有一个疑问:我用通配符添加jar包时一直失败(使用 *.jar),提示找不到类??????)
运行hadoop程序的方法如下:

1.直接使用hadoop CLASSNAME 【args】 运行,

    ( 注意此时需设置环境变量 HADOOP_CLASSPATH中包含当前类。其中当前目录中应该包含.class文件,这个可以通过在eclipse中的bin文件下取得,或用上面的方法进行编译)

如:hadoop FileSystemDoubleCat hdfs://localhost:9000/user/kqiao/uploadFile

2.将程序打包成jar包,然后使用hadoop jar命令运行。

     这只相当于将上面中的.class文件打包,然后运行该jar文件。(注意,如果以集群模式下运行hadoop,则只能使用这种方法,因为需要在各网络节点上分发jar包)并且主程序中要有:

job.setJarByClass(MaxTemperature.class)这句,用于设定jar类

命令如下:jar -cvf FileSystemDoubleCat.jar FileSystemDoubleCat.class 

                    hadoop jar FileSystemDoubleCat.jar FileSystemDoubleCat hdfs://localhost:9000/user/kqiao/uploadFile

3.安装eclipse的hadoop插件,直接在eclipse中编辑程序,然后运行

     这应该算是最简单的运行方法了吧。。。。

   在run configuration下完成配置,然后 run on hadoop即可。

-----------------------------------------------------------------------------------------------------------------------------------

  以后记录我在运行中遇到的问题~

(1)-D mapred.reduce.tasks=2   或  job.setNumReduceTasks(2) 设置reducer的数量  

    (换了一个hadoop版本,不知道为什么,使用-D  选项设置reducer数量失败了,没有报错,但是reducer保持为1,只能使用job.set来设置?未解决。。)

  (2)如果已经确定有某类的存在,却一直提示找不到该类,一般是因为class_path的设置问题。

  (3)如果自定义的mapper类是主类的内部类时,一定记得将其定义为static。

  (4)hadoop程序,如果有运行错误,主要通过查看job或task的日志解决:看看抛出了什么样的异常,在哪个阶段,哪个任务抛出了异常。

   如果是运行结果与预期不符,则通过查看计数器判断那部分出错,另一方面可以在程序中加入输出语句,System.out.println("****");然后在web页面中的job下查看各个job的task日志,看看 stdout log, stderr log进行分析排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: