hadoop使用过程的问题
在这两天的研究与使用过程中,发现了几个比较重要的问题,也是困扰我两天的问题:
1、使用本地代码提交任务
问题由来:
通过对hadoop的学习,发现hadoop目前的工作方式是你自己开发的程序需要打包好,然后使用hadoop的命令加载并运行,使用起来不太方便,想通过本地的eclipse直接运行。
解决方法:
通过查找网上资料发现在hadoop的安装包中有一个目录contrib,里面有eclipse-plugin,但是版本是0.18的版本,目前我使用的是0.20,好像存在兼容问题。
在网上偶然发现一个博客http://www.cnblogs.com/spork/archive/2010/04/07/1706162.html,其中分析了hadoop命令中作业提交的实现原理和方式,并使用java程序实现了该功能,从而解决了使用代码实现作业提交的功能。
但是在使用过程中发现,如果提交作业的开发机用户名和hadoop服务启动时的用户名不一致是会出现权限问题,即不能在HDFS中创建目录,无法设置权限等,解决方式就是在本机创建一个同名用户就可以了。
?
2、MapRed集群不能正常工作
问题由来:
在使用过程中发现,虽然每个机器上的进程都已经启动完毕了,但是通过hadoop的web客户端查看状态发现如下情况:
在Cluster Summary中的Nodes总是不对,通过查看hadoop_home/logs目录中的hadoop-hadoop-tasktracker-gcpserver.log日志文件发现其中总是连接集群的主节点,总是连接不上在不断的重连。
分析发现,连接的服务地址使用的是hostname,不是ip地址。而在我的环境中hostname是存在重复的。而且我的开发机和服务器不在同一个网段内。
解决方法:
分别对每一台机器设置hosts文件,指定每个服务的hostname和ip,并且保持唯一,在开发机中也指定。重启后解决了该问题。
?