hadoop程序运行

hadoop命令的使用:

Usage: hadoop [--config confdir] COMMAND 


这里COMMAND为下列其中一个:

 
 
  1. namenode -format        格式化DFS文件系统  
    secondarynamenode       运行DFS的第二个namenode  
    namenode                    运行DFS的namenode  
    datanode                    运行一个DFS的datanode  
    dfsadmin            运行一个DFS的admin 客户端  
    fsck                运行一个DFS文件系统的检查工具  
    fs                  运行一个普通的文件系统用户客户端  
    balancer            运行一个集群负载均衡工具  
    jobtracker          运行MapReduce的jobTracker节点  
    pipes               运行一个Pipes作业  
    tasktracker     运行一个MapReduce的taskTracker节点  
    job                 处理MapReduce作业  
    version         打印版本  
    jar <jar>       运行一个jar文件  
    distcp <srcurl> <desturl>   递归地复制文件或者目录  (采用分布式复制方法,一般用于两个HDFS集群中)
    archive -archiveName NAME <src>* <dest> 生成一个Hadoop档案       (将har当作一个新的文件系统,《权威指南3.8节》)
    daemonlog               获取或设置每个daemon的log级别  
    或CLASSNAME              运行名为CLASSNAME的类大多数命令会在使用w/o参数  
                            时打出帮助信息。

     


  • 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进行分析排序。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值