`

Hadoop配置和使用问题记录

阅读更多
最近在本地用cygwin环境来配置和使用hadoop。
遇到了一些问题,下面的这篇文章讲的比较全。
原文地址:http://shutiao2008.iteye.com/blog/319128
如果有补充的,我会补充进去


关于hadoop如何配置的教程网上已经有不少了,配合hadoop主页上的说明,基本可以顺利在多台机器上配置好hadoop集群。这里记录的是我在实际配置和使用hadoop时遇到的问题,其中一些属于hadoop周边,如ssh配置时容易遇到的问题和解决方法,供大家参考。我目前是在windows xp里通过cygwin安装的hadoop,版本是0.17.2.1。

1. 安装cygwin。在www.cygwin.com下载网络安装包,在选择组件的时候建议直接把openssh组件选中,有些版本的cygwin似乎不会自动安装diffutils组件,所以需要手工选中一下,否则配置ssh时会提示缺少该组件包。

2. cygwin控制台里的缺省提示符不太习惯,用export PS1="\u@\w$"设一下好多了。

3. 配置sshd比较简单,可以参考这个链接http://cha.homeip.net/blog/archives/2006/04/_winxp_cygwin_s.html。在ssh-host-config时问到“Should privilege separation be used? (yes/no)”时回答no即可,如果由于安全因素要回答yes时,在启动sshd时有可能遇到“Privilege separation user sshd does not exist”的错误信息,解决方法可参考这个链接http://www.unixguide.net/comments/sun/ssh_installation.shtml/37.shtml
4. 在配置ssh使用证书方式自动验证时花了一些时间,后来觉得可能是由于机器上有两个版本的cygwin的缘故,因为在另一台机器上安装就没有出现问题。在使用ssh-keygen -t rsa命令后提示输入密码时,直接按两次回车即可。公钥的复制等过程这里不再赘述。

5. 试图在Eclipse里运行hadoop的WordCount程序时提示异常:“javax.security.auth.login.LoginException: Login failed: CreateProcess: whoami error=2”,解决方法是把c:\cygwin\bin加入系统的path环境变量,然后重启Eclipse以便改动生效。

6. 在Eclipse里运行WordCount时遇到java heap size不够的异常,在运行配置里加入-Xms200M就可以解决。(hadoop的helloworld要求的内存比较多?)

7. 当要运行的运算依赖第三方类库时,这个链接https://issues.apache.org/jira/browse/HADOOP-1622有所讨论,但暂时没看到除了在命令行里使用hadoop jar命令以外的解决方法,比如在0.17.2和0.18.1版本里我都没有看到JobConf类里有类似addJar()这样的方法,在JobConf#setJar()里使用逗号分隔多个jar文件的方式则会报找不到文件的错误。解决方式可能有两个:a)把所需要的第三方jar文件复制到每个节点机器的jre里(暂时没有试验) b)把第三方jar包和自己的类打到一个包里。

update: 在网上找到另一种方式,通过DistributedCache实现http://www.infoq.com/cn/articles/hadoop-process-develop#view_31599,原文里可能有笔误,我试验正确的方法是调用DistributedCache.addArchiveToClassPath()方法,注意其第一个参数必须是相对路径,如“/test/lib /my.jar”,而不能是像“hdfs://192.168.0.5:47110/test/lib/my.jar”这样的绝对路径。关于 DistributedCache的说明在里有一些。

8. 调试mapreduce程序的方式,在这个链接http://shutiao2008.iteye.com/blog/319128里讲得比较清楚了,因为很有用所以特意重复一次。如果文件存放在HDFS里,那么只需要调用JobConf#.set("mapred.job.tracker", "local");即可;如果文件也是存在本地的,还需要调用JobConf#set("fs.default.name", "local");方法。我通常让文件存在HDFS里调试,因为要使用本地文件要么参数需要改变,要么代码需要改变,维护两个环境很麻烦。在程序里用System.out.println()输出的内容可以在datanode的hadoop安装路径的logs/userlogs目录里找到。



9. 当使用自定义InputFormat时,特别是使用EMF模型元素作为key的时候,需要注意并不是在代码的任何地方都能得到xmi:id的值的。具体来说,在WritableComparable#write()方法里能得到(前提是该对象本来就有resource,即eobj.eResource()!=null),而在WritableComparable#readFields()里是不能得到的,在RecordWriter#write()方法里同样不能得到,因为后两者的EMF元素对象都是反序列化得到的,已经不是内存里原来的那个实例了。

10. map进行到100%后,reduce过程进行到某个数值(如16%)后就不再继续,直到被hadoop强制关闭。在tasknode的log里记录如下:



2008-11-20 11:17:06,455 INFO org.apache.hadoop.mapred.TaskTracker: task_200811191041_0015_r_000000_0 0.16666667% reduce > copy (6 of 12 at 0.00 MB/s) >
2008-11-20 11:17:09,455 INFO org.apache.hadoop.mapred.TaskTracker: task_200811191041_0015_r_000000_0 0.16666667% reduce > copy (6 of 12 at 0.00 MB/s) >
2008-11-20 11:17:15,455 INFO org.apache.hadoop.mapred.TaskTracker: task_200811191041_0015_r_000000_0 0.16666667% reduce > copy (6 of 12 at 0.00 MB/s) >
2008-11-20 11:17:18,705 FATAL org.apache.hadoop.mapred.TaskTracker: Task: task_200811191041_0015_r_000000_0 - Killed due to Shuffle Failure: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
2008-11-20 11:17:18,705 INFO org.apache.hadoop.mapred.TaskTracker: About to purge task: task_200811191041_0015_r_000000_0
2008-11-20 11:17:18,705 INFO org.apache.hadoop.mapred.TaskRunner: task_200811191041_0015_r_000000_0 done; removing files.
2008-11-20 11:17:18,705 WARN org.apache.hadoop.mapred.TaskTracker: Unknown child task finshed: task_200811191041_0015_r_000000_0. Ignored.
2008-11-20 11:17:40,845 INFO org.apache.hadoop.mapred.TaskTracker: Received 'KillJobAction' for job: job_200811191041_0015
2008-11-20 11:17:40,845 INFO org.apache.hadoop.mapred.TaskRunner: task_200811191041_0015_m_000011_0 done; removing files.
2008-11-20 11:17:40,845 INFO org.apache.hadoop.mapred.TaskRunner: task_200811191041_0015_m_000005_0 done; removing files.



在我的java application的控制台里的输入如下:

08/11/20 11:06:39 INFO mapred.JobClient:  map 96% reduce 11%
08/11/20 11:06:40 INFO mapred.JobClient:  map 100% reduce 11%
08/11/20 11:06:43 INFO mapred.JobClient:  map 100% reduce 13%
08/11/20 11:06:47 INFO mapred.JobClient:  map 100% reduce 16% (在这里停很久)
08/11/20 11:17:12 INFO mapred.JobClient:  map 100% reduce 0%
08/11/20 11:17:12 INFO mapred.JobClient: Task Id : task_200811191041_0015_r_000000_0, Status : FAILED
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
08/11/20 11:17:14 WARN mapred.JobClient: Error reading task outputnode2
08/11/20 11:17:14 WARN mapred.JobClient: Error reading task outputnode2
08/11/20 11:17:25 INFO mapred.JobClient:  map 100% reduce 16%
08/11/20 11:17:30 INFO mapred.JobClient:  map 100% reduce 25%
08/11/20 11:17:31 INFO mapred.JobClient:  map 100% reduce 100%
08/11/20 11:17:32 INFO mapred.JobClient: Job complete: job_200811191041_0015



我想找到这个问题的所在了。是secondary name node所在的机器没有配置dfs.http.address这个参数,该参数在hadoop-default.xml里的缺省值是0.0.0.0:50070,应改为name node所在机器的ip地址。参考链接

11. 一些参考链接。

http://hayesdavis.net/2008/06/14/running-hadoop-on-windows/
http://hi.baidu.com/shirdrn/blog/category/Hadoop
http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop1/index.html
http://blog.ring.idv.tw/comment.ser?i=231

补充1:运行hadoop时出现:WARN hdfs.DFSClient: org.apache.hadoop.ipc.RemoteException:java.io.IOException: File <filename> could only be replicated to 0 nodes, instead of 1
解决:
是防火墙的问题,需要把防火墙关掉。
执行
$sudo ufw disable


分享到:
评论

相关推荐

    ubuntu 下的Hadoop配置与运行

    记录了Ubuntu下的Hadoop的配置与运行 ,经典例子

    Hadoop集群配置详细教程

    hadoop配置详细教程,涵盖了Hadoop集群配置从头到尾的所有细节部署,其中注意点已用红色标记,此文档曾用于企业Hadoop集群搭建教程,涵盖了 准备篇---配置篇----启动测试篇---问题篇,解决网络上Hadoop集群配置教程...

    Ubuntu20.04配置Hadoop.txt

    本教程是根据个人在UBUNTU虚拟机上安装配置Hadoop2.7.3的实际操作步骤一步步记录下来的,大部分指令操作的目的都加了注释以方便理解。(本教程很详细,如果还是遇到问题可以直接咨询楼主,不会让你的积分百花的)

    非root权限下配置linux hadoop集群自动SSH记录

    linux hadoop集群简单几步完成SSH配置。 不可思议。真的很简单。

    hadoop集群配置笔记

    在hadoop集群配置中边搭边记录的小白,一起学习!

    hadoop的简单配置文件

    一个基本hadoop的栩置文件合集。稍做修改就可以启动您的hadoop。

    Hadoop权威指南 第二版(中文版)

     Hadoop配置  配置管理  环境设置  Hadoop守护进程的关键属性  Hadoop守护进程的地址和端口  Hadoop的其他属性  创建用户帐号  安全性  Kerberos和Hadoop  委托令牌  其他安全性改进  利用基准测试程序...

    Hadoop权威指南(中文版)2015上传.rar

    Hadoop配置 配置管理 环境设置 Hadoop守护进程的关键属性 Hadoop守护进程的地址和端口 Hadoop的其他属性 创建用户帐号 安全性 Kerberos和Hadoop 委托令牌 其他安全性改进 利用基准测试程序测试Hadoop集群 Hadoop基准...

    Hadoop_硬件HA_配置

    在CentOS 6.3环境下配置Hadoop 1.0.4 硬件HA,消除生产环境中的单点故障。 原创,过程是自己实验的记录。

    Hadoop实战中文版

    11.1 Hive 11.1.1 安装与配置Hive 11.1.2 查询的示例 11.1.3 深入HiveQL 11.1.4 Hive小结 11.2 其他Hadoop 相关的部分 11.2.1 HBase 11.2.2 ZooKeeper 11.2.3 Cascading 11.2.4 Cloudera 11.2.5 Katta ...

    hadoop+zookeeper+hbase集群搭建配置说明

    数据仓库hadoop+zookeeper+hbase集群安装方法记录,自己搭建纯手写的记录。相关软件请自行下载

    Hadoop实战中文版.PDF

    比如使用hadoop做日志存储和挖掘,可以参考百度上面的配置。如果是作为HBase的底层存储,并且有大量的随机查询,那么使用SAS硬盘,甚至SSD都是可以的。不同的业务需要不同类型的配置。即使同一个业务,也可能需要...

    centos下Hadoop完全分布式配置安装

    本人在安装Hadoop完全分布式过程中记录的工作日志,基本可以满足初学者安装,但是在安装过程中可能会遇到问题,我可以提供建议

    Windows10 配置 单机hadoop-附件资源

    Windows10 配置 单机hadoop-附件资源

    Azkaban任务调度安装配置和使用

    Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。 它有如下特点: 兼容任何版本的hadoop 易于使用的Web用户界面 简单的工作流的上传 方便设置任务之间的关系 ...

    大数据hadoop集群部署-最详细的部署-2.8.5.pdf

    YARN的ResourceManager也存在单点故障问题,这个问题在hadoop-2.4.1得到了解决:有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。 YARN框架下的MapReduce可以开启JobHistoryServer来...

    Hadoop实战

    第一部分 Hadoop——一种分布式编程框架第1章 Hadoop简介 21.1 为什么写《Hadoop 实战》 31.2 什么是Hadoop 31.3 了解分布式系统和Hadoop 41.4 比较SQL数据库和Hadoop 51.5 理解MapReduce 61.5.1 动手扩展一个简单...

    Hadoop实战(陆嘉恒)译

    map侧过滤后在reduce侧联结5.3 创建一个Bloom filter5.3.1 Bloom filter做了什么5.3.2 实现一个Bloom filter5.3.3 Hadoop 0.20 以上版本的Bloom filter5.4 温故知新5.5 小结5.6 更多资源第6 章 编程实践6.1 开发...

    实验一Hadoop大数据集群搭建

    2. 完成虚拟机vim、net等工具的安装(最小安装的需要)、Hadoop环境变量的配置和安装。 3. 完成对namenode的链接克隆生成两台datanode,并设置好datanode的IP地址,确保其可以访问互联网。 4. 实现三台虚拟机两两之间...

    虚拟机16.04安装过以及Hadoop、spark平台配置

    东西完整,自己一步一步实现记录的,可以行的通,另外好友个别软件的安装程序

Global site tag (gtag.js) - Google Analytics