EDIT: 실제로 HDFS 가 저장되는 디렉토리를 지정해줘야 합니다. 지정 안해주면 기본적으로 /tmp 밑에 파일이 생기는 데 리부팅(rebooting) 하게 되면 파일이 사라져서 두번째 부터는 네임노드 (namenode)가 구동하지를 않습니다.


저번 포스트 (누름) 에서 Stand Alone 방식에 대해서 알아봤습니다. 이번에는 가 분산 방식입니다. 

'가 분산' 방식은 한대의 컴퓨터에서 하둡 파일시스템 (hdfs) ,잡 트랙커 (Job Tracker),와  네임노드 (NameNode), 데이타노드 (DataNode) , 태스크트래커 (TaskTracker) 를 띄우는 방식입니다. 마치 분산을 풀로 하는 것처럼 보이지만 실은 한대에서만 돌리는 것이지요. 그래서 '가 분산' (Pseudo Distribuiton) 방식이라고 합니다. 

저번 StandAlone 방식까지 따라 했다는 전제하에 이어서 하겠습니다. 처음부터 여기를 접하셨다면 저번 포스트 부터 따라하시고 오면 됩니다. 

각각의 파일을 열어서 다음과 같이 설정 작업을 해줍니다. 

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>
    <property>      <name>dfs.name.dir</name>      <value>/home/crazia/work/hadoop-1.0.0/name</value>    </property>

   <property>      <name>dfs.data.dir</name>      <value>/home/crazia/work/hadoop-1.0.0/data</value>    </property>
 </configuration>


EDIT: 붉은색으로 칠해진 부분은 이번에 추가 된 부분으로 자신의 하둡이 설치되어 있는 디렉토리를 표기해준다.


conf/mapred-site.xml:

<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>

이는 각각 네임노드 (NameNode) , 레플리케이션 횟수, 잡트래커를 설정해주는 것입니다. 이와 같이 설정작업을 해 주었다면 이제는 ssh 설정 작업을 해주어야 하는 시간입니다. 

$ ssh localhost


만약 위와 같이 입력했는데 접속하지 않는 다면 , 위에서 했던 'sudo apt-get install ssh' 를 다시 한번 해봐서 이미 패키지가 설치되어 있다면 
문제 없이 될 것이고, 만약 그렇게 했는데도 안된다면 다음과 같은 명령을 실행합니다. (그런데 보통 이것은 필요 없을 수도 있습니다.)

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


EDIT: 2012-02-29
위 과정은 ssh 를 패스워드 없이 접속하기 위해서 해주는 작업으로 필수 과정입니다. 단 위 버젼은 Virtual-Box 에서만 가능하고 독립머신에 설치된 리눅스 버젼에서 작업이 가능할려면 아래 내용을 추가해 줍니다.

$ chmod 644 ~/.ssh/authorized_keys




다시 한번 다음 명령을 실행합니다.

$ ssh localhost


접속이 성공했으면 다음 명령을 써서 다시 원래대로 돌아간다. 

$ exit 


 $HADOOP_HOME 으로 이동해서 distributed-filesystem 을 포맷해줍니다.

$ bin/hadoop namenode -format 



그리고 이제 모든 프로세스들을 띄워야 하는 순간이 왔습니다. 

$ bin/start-all.sh


위와 같은 명령을 실행시켜주고 실제로 네임노드 (NameNode) 와 잡-트랙커(Job-tracker) 가 잘 띄워져 있는지 확인합니다. 하둡에서는 웹페이지로 확인할 수 있게 제공하고 있습니다.

 - 네임노드 : 분산 파일 시스템에 위치한 파일들에 대한 위치정보를 포함하는 정보. 일반적으로 파일시스템                    에서 표현되는 파일명과 디렉토리 위치에 해당한다고 보면 이해가 빠를 것이다. 

 - 잡-트랙커 : 분산 환경에서 작업을 분산시키는 스케쥴 작업을 하는 부분. 

  • NameNode - http://localhost:50070/
  • JobTracker - http://localhost:50030/

  • 위와 같이 제공됩니다. 페이지들이 정상적으로 뜬다면 하둡-분산 파일 시스템이 잘 동작하고 있다는 증거다. 그러면 실제로 잘 동작하는지 간단한 계산을 시켜보기로 하겠습니다.  스탠드얼론 방식에서 했던 테스트를 파일 시스템을 가지고 하는 것입니다. 
     

    $ bin/hadoop fs -put conf input


    위 명령은 하둡-파일 시스템 안으로 conf 에 있는 내용들을 input 이라는 이름으로 집어넣으라는 명령입니다. 자 이제는 실제로 실행을 시켜보져

    $ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'


    시간이 생각보다는 좀 걸립니다. 그리고 결과를 보고 싶으면 

    $ bin/hadoop fs -get output output 
    $ cat output/*


    하둡-파일 시스템 안에 있는 실행결과를 밖으로 꺼내 오는 것입니다. 하둡-파일시스템 안으로 넣을때는 -put , 꺼낼때는 -get 을 쓰는 것에 유의 하시면 됩니다. 
    또 하둡 파일 시스템 안에 있는 결과를 직접 볼 수도 있습니다. 

    $ bin/hadoop fs -cat output/*


    유닉스 명령과 비슷한 명령 (여기서는 -cat ) 을 지원한다. 

    $ bin/stop-all.sh


    위와 같은 명령으로 하둡 파일 시스템을 내릴 수 있습니다. 마치 웹서버 구동과 정지와 비슷합니다. (start-all , stop-all)

     
     

    + Recent posts