Eclipse里编写第一个Hadoop程序
2013-08-13 18:13
423 查看
Hadoop Eclipse插件: http://www.cnblogs.com/BennyTian/archive/2013/03/05/2944899.html
Eclipse 新建一个 MapReduce项目
然后按照 hadoop 安装包里的 WordCount 例子源码 手敲一遍,对,是手动敲,不要复制.
在写代码的时候,会出现各种问题.最主要的是 新/老 AIP不兼容的问题.
比如 :
FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
新老包导错了会编译不过去...
然后运行.在Main方法类里右键,Run As -> Run Configurations -> Arguments
配置一下运行参数,主要有2个. 一个是 hdfs的 输入, 一个是输出.(输出文件夹必须是不存在的)
我的是: hdfs://centos1:9000//user/hadoop/input hdfs://centos1:9000//user/hadoop/output
可能出现的异常:
1.
Hadoop Failed to set permissions of path
这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。
解决方法是,修改/hadoop-xxx/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉生成class文件替换安装目录下的 hadoop-core-x.xx.xxx.x.jar
2.
org.apache.hadoop.security.AccessControlException: Permission denied: user=BennyTian, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
这个主要是hdfs权限问题.因为Eclipse使用hadoop插件提交作业时,会默认以 你开发的PC 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/xxx , 我的为/user/hadoop , 由于 PC 用户对hadoop目录并没有写入权限,所以导致异常的发生。
解决办法1: 到 hdfs-site.xml 里添加这个节点(如果存在就将值改为flase):
<property> <name>dfs.permissions</name> <value>false</value> <description> If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories. </description> </property>
解决办法2: 放开 hadoop 目录的权限 , 命令如下 :$ hadoop fs -chmod 777 /user/hadoop
3:
org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hadoop/output2/_temporary. Name node is in safe mode.
以正常情况来说,启动Hadoop后会停留在safe mode几秒中!(所谓的safe mode是指等待各节点传送状态资料到主节点时HDFS的只读模式) 但当遇到因为不正常的关闭Hadoop,节点出现错误,也会导致name node一直停留在safe mode
这时只能通过命令强迫离开 safe mode了
bin/hadoop dfsadmin -safemode leave
-safemodel 其他参数:
leave : 离开安全模式
enter :进入安全模式
get :返回安全模式状态
wait :-一直等到安全模式结束
相关文章推荐
- 如何使用eclipse编写第一个jQuery程序实例
- 创建Hbase索引表之在eclipse上运行与直接在hadoop集群上运行的程序编写的差异
- 001_Eclipse编写第一个Java程序
- [转载]Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- eclipse下第一个hadoop程序出现错误ClassCastException
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序(3)
- 【菜鸟入门】安装配置eclipse 并编写运行第一个Java程序
- 使用Eclipse编写第一个“Hello World!”程序
- 一起学Hadoop——使用IDEA编写第一个MapReduce程序(Java和Python)
- Eclipse编写Hadoop程序,无法查看源码,提示Source not found的解决
- 如何在eclipse中编写好程序,然后打包成jar文件,在hadoop分布式集群上运行
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- IntelliJ IDEA + Maven环境编写第一个hadoop程序
- eclipse + JBoss 5 + EJB3开发指南(6):编写第一个实体Bean程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序