windows 설정 hadop-1.1.0 의 의사 분포 식 환경
Cygwin 설치
http://cygwin.com/install.html
Cygwin 설정 sshd
http://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#CBHIAFGI
의사 분산 식 설정
문서 경로 설정:hadop-1.1.0/docs/singlenode_setup.html
bin/hadoop namenode -format
bin/start-all.sh
bin/stop-all.sh
http://localhost:50030
http://localhost:50070
직면 한 문제 및 해결:
실제 운행 할 때 몇 가지 문제 가 발생 할 수 있 습 니 다.
1.설 정 된 경 로 는 cygwin Liux 의 경 로 를 사용 하 는 것 이 아 닙 니 다.
hadop.tmp.dir 는/tmp 디 렉 터 리 아래 에 있 습 니 다.이론 적 으로 C:\cygwin\tmp 이 어야 하지만 실제 경 로 는 C:\tmp 입 니 다.
경로 가 동의 하지 않 으 면 우 리 는 자신의 디 렉 터 리 를 설정 하면 된다.
<property>
<name>hadoop.tmp.dir</name>
<value>/cygwin/home/Winseliu/cloud</value>
</property>
2.datanode 와 jobtracker 를 시작 하고 tasktacker 를 시작 할 때 경로 권한 이 있 는 문제
2012-11-25 13:53:05,031 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:Winseliu cause:java.io.IOException: Failed to set permissions of path: C:\cygwin\home\Winseliu\hadoop-1.1.0\logs\history to 0755
2012-11-25 13:53:05,032 FATAL org.apache.hadoop.mapred.JobTracker: java.io.IOException: Failed to set permissions of path: C:\cygwin\home\Winseliu\hadoop-1.1.0\logs\history to 0755
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:670)
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.mapred.JobHistory.init(JobHistory.java:510)
2012-11-25 13:53:04,389 INFO org.apache.hadoop.mapred.TaskTracker: Good mapred local directories are: /cygwin/home/Winseliu/cloud/mapred/local
2012-11-25 13:53:04,396 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: \cygwin\home\Winseliu\cloud\mapred\local\taskTracker to 0755
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:670)
권한 문제,FileUtils 의 checkReturnValue()방법 을 직접 수정 하고 hadop-core-1.1.0.jar 의 FileUtils.class 파일 을 교체 합 니 다.
private static void checkReturnValue(boolean rv, File p,
FsPermission permission
) throws IOException {
if (!rv) {
// FIXME
try {
throw new IOException("Failed to set permissions of path: " + p
+ " to " + String.format("%04o", permission.toShort()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.jps 를 사용 하여 제대로 실행 되 지 않 은 자바 프로 세 스 를 찾 습 니 다.그 프로 세 스 가 시작 되 었 거나 시작 되 지 않 았 는 지 모 릅 니 다.
Winseliu@WINSE ~/hadoop-1.1.0
$ jps
6364 NameNode
7168 JobTracker
2692 Jps
Winseliu@WINSE ~/hadoop-1.1.0
$ ps aux | grep java
7880 1 5544 7028 ? 1001 13:20:40 /cygdrive/c/Java/jdk1.7.0_02/bin/java
5968 1 7500 4592 ? 1001 13:20:36 /cygdrive/c/Java/jdk1.7.0_02/bin/java
5784 1 484 6364 pty0 1001 13:20:31 /cygdrive/c/Java/jdk1.7.0_02/bin/java
6732 1 484 7168 pty0 1001 13:20:38 /cygdrive/c/Java/jdk1.7.0_02/bin/java
7976 1 5716 5628 ? 1001 13:20:34 /cygdrive/c/Java/jdk1.7.0_02/bin/java
4492 0 0 4492 pty0 1001 Jan 1 /cygdrive/c/Java/jdk1.7.0_02/bin/java
start-all.sh 를 직접 다시 실행 합 니 다.먼저 stop 하 라 는 알림 이 있 으 면 프로 세 스 가 시작 되 었 음 을 설명 합 니 다.
Winseliu@WINSE ~
$ cd hadoop-1.1.0/
Winseliu@WINSE ~/hadoop-1.1.0
$ bin/start-all.sh
starting namenode, logging to /home/Winseliu/hadoop-1.1.0/libexec/../logs/hadoop-Winseliu-namenode-WINSE.out
localhost: starting datanode, logging to /home/Winseliu/hadoop-1.1.0/libexec/../logs/hadoop-Winseliu-datanode-WINSE.out
localhost: starting secondarynamenode, logging to /home/Winseliu/hadoop-1.1.0/libexec/../logs/hadoop-Winseliu-secondarynamenode-WINSE.out
starting jobtracker, logging to /home/Winseliu/hadoop-1.1.0/libexec/../logs/hadoop-Winseliu-jobtracker-WINSE.out
localhost: starting tasktracker, logging to /home/Winseliu/hadoop-1.1.0/libexec/../logs/hadoop-Winseliu-tasktracker-WINSE.out
Winseliu@WINSE ~/hadoop-1.1.0
$ bin/start-all.sh
namenode running as process 2648. Stop it first.
localhost: datanode running as process 3512. Stop it first.
localhost: secondarynamenode running as process 2468. Stop it first.
jobtracker running as process 2388. Stop it first.
localhost: tasktracker running as process 860. Stop it first.
Winseliu@WINSE ~/hadoop-1.1.0
$