windows配置hadoop-1.1.0的伪分布式环境(续)

windows配置hadoop-1.1.0的伪分布式环境(续) 博客分类: bigdata windowshadoop

在前一篇文章中,介绍了一写常见问题的解决方法。

但是,当我重装系统,再次按照前面一篇文章( http://winseclone.iteye.com/blog/1734737 ) 安装cygwin和hadoop-1时,发现伪分布式环境使用mapred时,总是报错。(忘了,但是好像当时没有遇到过这种情况。就当是安装win8送给自己的礼物吧!)。

怀疑了很多东西,配置有问题,重新自定hadoop.tmp.dir,把hadoop-1.1.0换成hadoop-1.0.0等等。

错误日志如下:

$ hhadoop fs -rmr /test/output ; hhadoop jar hadoop-examples-1.0.0.jar wordcount /test/input /test/outputDeleted hdfs://WINSE:
9000/test/output13/03/23 22:46:07 INFO input.FileInputFormat: Total input paths to process : 113/03/23 22:46:08 INFO mapred.JobClient: Running job: job_201303232144_000213/03/23 22:46:09 INFO mapred.JobClient: map 0% reduce 0%13/03/23 22:46:16 INFO mapred.JobClient: Task Id : attempt_201303232144_0002_m_000002_0, Status : FAILEDjava.lang.Throwable: Child Error at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:272)Caused by: java.io.IOException: Task process exit with nonzero status of -1. at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:259)13/03/23 22:46:16 WARN mapred.JobClient: Error reading task outputhttp://WINSE:50060/tasklog?plaintext=true&attemptid=attempt_201303232144_0002_m_000002_0&filter=stdout13/03/23 22:46:16 WARN mapred.JobClient: Error reading task outputhttp://WINSE:50060/tasklog?plaintext=true&attemptid=attempt_201303232144_0002_m_000002_0&filter=stderr13/03/23 22:46:22 INFO mapred.JobClient: Task Id : attempt_201303232144_0002_m_000002_1, Status : FAILED

经过修改原来,不断的修改,加入sysout打印,算是最终找出程序出现错误的地方!

org.apache.hadoop.mapred.DefaultTaskController.java #launchTask
org.apache.hadoop.mapred.JvmManager.java #runChild
org.apache.hadoop.mapred.TaskRunner.java #launchJvmAndWait

org.apache.hadoop.fs.FileUtil.java #checkReturnValue
org.apache.hadoop.fs.RawLocalFileSystem.java  #setPermission  #mkdirs

发现在org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(Path)方法中,建立文件的路径方法检查attempt_201303232144_0002_m_000001_0是否为文件夹会失败!

而在cygwin中查看:

Winseliu@WINSE ~/hadoop/logs/userlogs/job_201303232144_0002$ ll总用量 9lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000001_0 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_0lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000001_1 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_1lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000001_2 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_2lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000001_3 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000001_3lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000002_0 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_0lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000002_1 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_1lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000002_2 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_2lrwxrwxrwx 1 Winseliu None 89 3月 23 22:46 attempt_201303232144_0002_m_000002_3 -> /cluster/mapred/local/userlogs/job_201303232144_0002/attempt_201303232144_0002_m_000002_3-rwxr-xr-x 1 Winseliu None 404 3月 23 22:46 job-acls.xml

对于linux来说,这些就是引用到另一个文件夹,它本身应该也是文件夹!但是window的jdk不认识这些东西!

public boolean mkdirs(Path f) throws IOException { Path parent = f.getParent(); File p2f = pathToFile(f); return (parent == null || mkdirs(parent)) && (p2f.mkdir() || p2f.is
Directory()); }

所以在判断p2f.isDirectory()返回false,然后会抛出IOException,最终以-1的状态退出Map Child的程序!

使用org.apache.hadoop.mapred.TaskRunner.prepareLogFiles(TaskAttemptID, boolean)方法来制定了输出的日志输出的位置。在最终执行的会在shell命令中把输出的sysout和syserr输出到日志文件中。userlogs的父目录是使用hadoop.log.dir系统属性来配置的!

mapred.DefaultTaskController.launchTask()

|--mapred.TaskLog.buildCommandLine()

临时解决方法:

把hadoop.log.dir定位到真正mapred日志的目录( mapred.local.dir : ${hadoop.tmp.dir}/mapred/local )!

export HADOOP_LOG_DIR=/cluster/mapred/local

把windows的/cluster映射到cygwin(linux)的/cluster:

Winseliu@WINSE ~/hadoop$ ll /cygdrive/c | grep clusterdrwxr-xr-x+ 1 Winseliu None 0 3月 24 00:08 clusterWinseliu@WINSE ~/hadoop$ ll / | grep clusterlrwxrwxrwx 1 Winseliu None 19 3月 23 09:39 cluster -> /cygdrive/c/cluster

但是,运行wordcount的例子时,还是不正常!查看tasktracker的日志时,发现有String装成Integer的NumberFormatException异常!

修改org.apache.hadoop.mapred.JvmManager.JvmManagerForType.JvmRunner.kill()方法。添加pidStr为空字符串的检查!

String pidStr = jvmIdToPid.get(jvmId);if (pidStr != null && !pidStr.isEmpty()) {

然后,终于看到Finish咯!在/test/output/part-r-00000中也看到了结果。

其他一些简化处理,即配置文件:
alias start
Cluster="~/hadoop/bin/start-all.sh"alias stopCluster="~/hadoop/bin/stop-all.sh; ~/hadoop/bin/stop-all.sh"alias hhadoop="~/hadoop/bin/hadoop"
Winseliu@WINSE ~$ ll | grep hadooplrwxrwxrwx 1 Winseliu None 12 3月 23 10:44 hadoop -> hadoop-1.0.0drwx------+ 1 Winseliu None 0 3月 24 00:06 hadoop-1.0.0
<!-- core-site.xml --><configuration><property><name>fs.default.name</name><value>hdfs://WINSE:9000</value></property><property><name>hadoop.tmp.dir</name><value>/cluster</value></property></configuration><!-- hdfs-site.xml --><configuration><property><name>dfs.
replication</name><value>1</value></property><property> <name>dfs.permissions</name> <value>false</value></property><property> <name>dfs.permissions.supergroup</name> <value>None</value></property><property><name>dfs.safemode.extension</name><value>1000</value></property></configuration><!-- mapred-site.xml --><configuration><property><name>mapred.job.tracker</name><value>WINSE:9001</value></property></configuration>

关于查看启动的进程,看可以通过任务管理器来查看:

大小: 56.6 KB 查看图片附件

时间: 2024-07-29 20:54:46

windows配置hadoop-1.1.0的伪分布式环境(续)的相关文章

大数据-hadoop伪分布式环境搭建

问题描述 hadoop伪分布式环境搭建 最近开始新学hadoop,想搭建个伪分布式环境,而自己的电脑配置不高,不能运行虚拟机,可以利用阿里云来搭建伪分布式运行环境吗? 解决方案 阿里云搞几台机器在一个局域网就可以搭建或者用单机模式 解决方案二: 嗯,单机模式是不是不用装虚拟机

Hadoop 2.x伪分布式环境搭建详细步骤_数据库其它

本文以图文结合的方式详细介绍了Hadoop 2.x伪分布式环境搭建的全过程,供大家参考,具体内容如下 1.修改hadoop-env.sh.yarn-env.sh.mapred-env.sh 方法:使用notepad++(beifeng用户)打开这三个文件 添加代码:export JAVA_HOME=/opt/modules/jdk1.7.0_67 2.修改core-site.xml.hdfs-site.xml.yarn-site.xml.mapred-site.xml配置文件 1)修改core-

安装Hadoop1.0.4伪分布式的方法

 一.使用环境 操作系统:Ubuntu12.04 Hadoop版本:1.0.4 二.Hadoop官网安装手册  单机安装分为"standalone"和"pseudo-distributed"两种模式,我使用的是伪分布式模式. 手册的安装步骤很详细,没有必要当翻译工了.但是手册为了通用性,牺牲了一些关键问题的讨论.第三节中提及一下. 三.手册缺陷  手册主要有两个问题没有说清楚: 1.Hadoop安装在哪个目录下好? 选择一般有两种:/usr/local和家目录下.我

在ubuntu部署hadoop之单机模式与伪分布式模式部署

这几天刚接触Hadoop,在学习如何搭建一个Hadoop集群.对于初学者来说,环境搭建还是比较麻烦的,我这里说一下我的配置方法,仅供大家参考. 我的环境是ubuntu12.10+hadoop1.1.0. Hadoop的运行模式有以下三种. 单机模式(standalone) 单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为空.当配置文件为空时,Hadoop会完全运行在本地.因为不需要

Hadoop学习之HBase的伪分布式安装

HBase的伪分布式安装 1.   HBase单台机器上的安装 a)    使用winscp将win下的HBase软件(hbase-0.94.7-security.tar.gz)包复制到linux下的/usr/local/下 b)   解压文件hbase-0.94.7-security.tar.gz #tar -xzvf hbase-0.94.7-security.tar.gz 更名为hbase #mv hbase-0.94.7-security hbase c)    增加hbase的环境变量

Hadoop伪分布式搭建操作步骤指南

一.准备工作 在 /opt/目录下创建文件夹modules,和softwares 修改操作权限(切换至root用户下) chown -R wxt:wxt /opt/  然后切换至普通用户 mkdir softwares    mkdir modules   安装lrzsz (在linux里可代替ftp上传和下载.) 首先安装lrzsz yum -y install lrzsz  上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可. rz  下载文件,执行命令sz sz  二.H

Hadoop全分布式环境搭建

视频演示:http://v.youku.com/v_show/id_XNTY4NDM3NDQ4.html Hadoop的单击版和伪分布式版环境都好搭建(具体方法参见:hadoop单击版与伪分布式安装方法),这个全分布式还真是费了我不少时间.下面说说我的步骤: (一)准备工作 1.准备3台装有linux的机器,具有相同的用户名(这个是必须的,我这里都是liujiacai) 三台机器的ip与主机名 192.168.6.38 master 192.168.6.21 node1 192.168.6.24

windows安装hadoop时,到mapred.JobClient: map 0% reduce 0%不动了

问题描述 大侠们好:在Windows下利用cygwin仿unix环境安装配置Hadoop.1.我这里在做wordcount例子的时候,到下面这里一直就停住了,10/03/0816:31:54INFOinput.FileInputFormat:Totalinputpathstoprocess:110/03/0816:31:54INFOmapred.JobClient:Runningjob:job_201003051834_002010/03/0816:31:55INFOmapred.JobClie

《Hadoop实战第2版》——2.3节在Windows上安装与配置Hadoop

2.3 在Windows上安装与配置Hadoop 2.3.1 安装JDK 1.6或更高版本相对于Linux,JDK在Windows上的安装过程更容易,你可以在http://www.java.com/zh_CN/download/manual.jsp下载到最新版本的JDK.这里再次申明,Hadoop的编译及MapReduce程序的运行,很多地方都需要使用JDK的相关工具,因此只安装JRE是不够的.安装过程十分简单,运行安装程序即可,程序会自动配置环境变量(在之前的版本中还没有这项功能,新版本的JD