하둡의 두번째 동작 모드는 가상 분산모드인다.





이 경우에는 java 프로세스를 복수로 생성하여 localhost에서 job tracker와 namenode를 관리하여 동작하는듯 싶다.(나도 잘 모름)
가상 분산모드 부터는 퍼미션 설정을 따로 해줘야 한다.
말은 거창하지만 그냥 root 계정을 만들어서 이걸로 로그인 하면 된다.
root로 로그인을 안 할 경우에는 namenode의 파일 시스템에 접근이 불가능하므로 대몬을 돌릴수가 없다.
root 계정 만드는 방법은 다음과 같다.
sudo -s
passwd root
=> 설정할 root 비밀번호 입력
=> 설정할 root 비밀번호 재입력
위 작업을 해준 뒤 로그아웃을 하고, 그놈 로그인 메뉴의 others를 눌러 사용자 이름에 root를 넣고 비밀번호에 새로 설정한 비밀번호를 넣고 로그인을 한다.(안되면 재부팅)
루트로 로그인을 한 뒤에는 원격 데스크탑과 네트워크 설정을 다시 해 주어야 한다.
hadoop이 설치된 폴더에는 여전히 접근 가능하므로 별도로 새로 해줄 필요는 없다.(jdk도 마찬가지)
가상 분산모드에서의 설정은 다음과 같다.
우선 ssh localhost 명령을 사용하여 localhost에 접속해보자
이때 암호를 물어보는데, 앞으로 hadoop을 돌리기 위해 쉘 명령어를 사용할 것인데, 이때 일일이 퍼미션을 물어보지 않게 하기 위해서 간단하게 두줄을 추가하자
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
위 명령어를 입력하면 앞으로 로컬호스트에서 웬만하면 암호 안 물어본다.
로컬호스트에서 하둡을 실행하기 위해 기본적인 설정을 해준다.
수정해야 할 파일은 하둡 루트의 /conf 에 있다.
conf/core-site.xml:
| <configuration> |
| <property> |
| <name>fs.default.name</name> |
| <value>hdfs://localhost:9000</value> |
| </property> |
| </configuration> |
conf/hdfs-site.xml:
| <configuration> |
| <property> |
| <name>dfs.replication</name> |
| <value>1</value> |
| </property> |
| </configuration> |
conf/mapred-site.xml:
| <configuration> |
| <property> |
| <name>mapred.job.tracker</name> |
| <value>localhost:9001</value> |
| </property> |
| </configuration> |
다음은 하둡 대몬을 실행해보자.
우선 하둡의 파일시스템을 포맷해야 한다.
$ bin/hadoop namenode -format
그리고 실행한다.
$ bin/start-all.sh
위와 같이 결과가 나왔다면 올바르게 실행된 것이다.
이제 웹 페이지에서 namenode와 job tracker의 정보를 볼 수 있다.
각 페이지의 주소는 다음과 같다.
- NameNode - http://localhost:50070/
- JobTracker - http://localhost:50030/
앞으로 실행할 작업은 위 페이지에서 업데이트 확인이 가능하다.
이제 가상 분산모드에서 실제로 map reduce를 실행해보자
우선 input파일을 복사한다
$ bin/hadoop fs -put conf input
그리고 예제 jar 파일을 실행해보자.
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
위 커맨드를 입력하면 아래와 같이 나와야 정상이다.
이러면서 뭔가 실행되고 ouput 파일을 뱉어낸다.
뭔가 정체를 알 수 없는 output을 뱉어냈는데, 도무지 알 길이 없군.
output 파일을 보는 방법은 다음과 같다.
$ bin/hadoop fs -get output output
$ cat output/*
$ cat output/*
다음 포스팅에서는 레알 분산모드로 돌려보고 hadoop에서 돌아가는 어플이 어떤 형태로 되어있나 봐야겠다.




덧글