显示标签为“Eclipse”的博文。显示所有博文
显示标签为“Eclipse”的博文。显示所有博文

2012年5月5日星期六

Hadoop&Struts2 开发所需lib参考,解决了某些错误。关键字:Java,Tomcat,Struts2,Linux,Eclipse,Hadoop,Jar包,API

  • 之前那个Windows下无法用Eclipse运行Hadoop例子程序WordCount的问题并没找到解决方法,于是我把开发环境搭建到Linux Mint下了。
  • 目的是利用Struts2框架开发一个基于Hadoop之HDFS的网络硬盘Web应用。作为开始,我编写了一个index.jsp,利用Ajax发送请求到后台,执行一个动作读取出HDFS文件系统某目录下的文件名。折腾了好几天今天终于能正确运行了。很关键的一个问题就是正确地设置Eclipse中的库。
  • 最终我将所有需要用到的jar包都放入了WebContent\WEB-INF\lib里,并在Eclipse里刷新项目,Clean All后重新编译并运行。将里面的文件列于此处,愿日后有人遇到此类问题作为参考。
  •  WebContent\WEB-INF\lib
    asm-3.3.jar
    asm-commons-3.3.jar
    asm-tree-3.3.jar
    aspectjrt-1.6.5.jar
    aspectjtools-1.6.5.jar
    commons-beanutils-core-1.8.0.jar
    commons-chain-1.2.jar
    commons-cli-1.2.jar
    commons-codec-1.4.jar
    commons-collections-3.2.1.jar
    commons-configuration-1.6.jar
    commons-daemon-1.0.1.jar
    commons-digester-2.0.jar
    commons-el-1.0.jar
    commons-fileupload-1.2.2.jar
    commons-httpclient-3.0.1.jar
    commons-io-2.0.1.jar
    commons-lang-2.5.jar
    commons-logging-1.1.1.jar
    commons-math-2.1.jar
    commons-net-1.4.1.jar
    commons-validator-1.3.1.jar
    freemarker-2.3.18.jar
    hadoop-capacity-scheduler-1.0.1.jar
    hadoop-core-1.0.1.jar
    hadoop-fairscheduler-1.0.1.jar
    hadoop-thriftfs-1.0.1.jar
    hsqldb-1.8.0.10.jar
    hsqldb-1.8.0.10.LICENSE.txt
    jackson-core-asl-1.8.8.jar
    jackson-mapper-asl-1.8.8.jar
    javassist-3.11.0.GA.jar
    jdeb-0.8.jar
    jersey-core-1.8.jar
    jersey-json-1.8.jar
    jersey-server-1.8.jar
    jets3t-0.6.1.jar
    jetty-6.1.26.jar
    jetty-util-6.1.26.jar
    jsch-0.1.42.jar
    junit-4.5.jar
    kfs-0.2.2.jar
    kfs-0.2.LICENSE.txt
    libfilelist.txt
    log4j-1.2.15.jar
    mockito-all-1.8.5.jar
    ognl-3.0.4.jar
    oro-2.0.8.jar
    slf4j-api-1.4.3.jar
    slf4j-log4j12-1.4.3.jar
    struts2-core-2.3.1.2.jar
    xmlenc-0.52.jar
    xwork-core-2.3.1.2.jar
    

2012年4月21日星期六

Hadoop报错,Failed to set permissions of path...staging to 0700

首先我已搭建了一个Hadoop开发环境,伪分布式,然后在Windows下用Eclipse连接进行开发。
Hadoop版本:1.0.1
 本机操作系统:Windows 7,虚拟机操作系统:Linux Mint
Windows下使用Eclipse 3.7,安装了Hadoop Map/Reduce 1.0.1插件,配置好后在Linux里运行一个Example,能正常运行,并且在Windows下Eclipse 里能看到DFS Locations 连接里的文件变化,结果成功输出到output,说明插件连接正常。

于是我直接在Eclipse里新建了Map/ReduceProject,将src\examples\org\apache\hadoop\examples\WordCount.java 复制过来,新建了名为org.apache.hadoop.examples的包(与源代码中相符),按照官网上的英文指南设置好Run configurations...运行,控制台错误信息如下:

12/04/21 19:41:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/04/21 19:41:30 ERROR security.UserGroupInformation: PriviledgedActionException as:F cause:java.io.IOException: Failed to set permissions of path: \home\fang\hadoop\data\mapred\staging\F1815921702\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \home\fang\hadoop\data\mapred\staging\F1815921702\.staging to 0700
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
    at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
    at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
    at org.apache.hadoop.examples.WordCount.main(WordCount.java:67)

尝试 hadoop fs -chmod 777修改hdfs里目录权限未能解决。
尝试 chmod 777修改虚拟机里作为hadoop.tmp.dir目录权限也未能解决。
后来同时修改Eclipse那个连接里和虚拟机/hadoop/conf/core-site.xml  的hadoop.tmp.dir一项,改为/home/fang/tempdata
stop-all.sh后重新format,然后重新start-all.sh,问题仍未解决。同时,错误信息的\home\fang\hadoop\data\mapred\staging\ 部分没有改变。
这个问题实在难以解决。网上有人说自己编译Hadoop或许能解决这个问题。
————————————————————————————————
最后我是在Linux里装了Eclipse,在Linux下开发来回避这个问题的。