새로운 것 함 해볼려고 Hadoop설치했는데. 아직 나한테 잘 다가온다. 대용량 파일, 검색에는 유효하지만, 그리 많지 않다면 쓸 필요가 없다. 내가 하는 일에는 대용량 파일이 없고, 검색할 일이 없어서.. 아직 쓰지 않는다.

 

Hadoop이 무엇인지 아는 사람이 설치하러 왔으므로, 자세한 Hadoop의 이야기는 http://hadoop.apache.org/ 에서 참조하길 바란다.

 

자 이제 설치해보자, (리눅스에서 설치)

#1. 하둡을 다운로드 한다.

http://hadoop.apache.org/core/releases.html

나는 개인적으로 최신 release는 쓰지 않는다. 그 바로 전 것을 쓴다. 현재 0.19버젼이 나왔으니. 0.18버젼으로 다운로드

/share/hadoop-0.18.3 디렉토리에 다운받고 풀어준다.

 

#2. JAVA_HOME 설정

.bashrc에, export JAVA_HOME=/usr/local/jdk6

 

#3. Hadoop 개인정보 설정

groupadd users
useradd -d /hdfs/home -g users hadoop
chown -R hadoop:users /hdfs
chown -R hadoop:users /share
passwd hadoop

 

#4. hadoop 계정으로 들어

su - hadoop

 

#5 Hadoop 설정 파일

나는 로컬에서만 돌려볼 것이라서 single machine 설정이다. 만약 multiple machine에서 돌릴꺼면, 아래 참조 references를 볼 것.

/share/hadoop-0.18.3/conf] vi hadoop-site.xml

 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>


<property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
</property>

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

<property>
        <name>dfs.name.dir</name>
        <value>/hdfs/filesystem/name</value>
</property>

<property>
        <name>dfs.data.dir</name>
        <value>/hdfs/filesystem/data</value>
</property>

<property>
        <name>mapred.system.dir</name>
        <value>/hdfs/filesystem/mapreduce/system</value>
</property>

<property>
        <name>mapred.local.dir</name>
        <value>/hdfs/filesystem/mapreduce/local</value>
</property>

 

</configuration>

설정은 자유다. 하지만 중요한 것이 있다. 절대로 dfs.name.dir은 mkdir로 만들지 말 것...

임의로 만들면 namenode daemon이 뜨지 않는다.

 

#6 디렉토리 생성

/share/hadoop-0.18.3]# mkdir -p /hdfs/filesystem/data
/share/hadoop-0.18.3]# mkdir -p /hdfs/filesystem/mapreduce/system
/share/hadoop-0.18.3]# mkdir -p /hdfs/filesystem/mapreduce/local
/share/hadoop-0.18.3]# mkdir -p /hdfs/filesystem/name/image

 

#7 namenode 데몬을 위핸 포맷을 한다.

/share/hadoop-0.18.3]# bin/hadoop namenode -format

주의점, 꼭 로그를 확인해서 문제가 없는지 확인한다.

logs라는 디렉토리에서 꼼꼼하게 제대로 format되는지 확인한다.

여기서 문제면 진도가 나가지 않는다.

 

#8 Hadoop 실행

/share/hadoop-0.18.3/bin/start-all.sh

 

hadoop계정으로 실행했으므로 namenode 데몬(관리자), datanode(실행노드)로 지정된 서버에 ssh 들어가게 된다. 이거 패스워드 입력하라고 하는데.. 귀찮지 않은가??

그냥 password 안넣게 아래 링크보고 하면 된다.

http://kldp.org/node/40578

 

#9 자바 데몬이 뜨는 것을 보고 아래 URL이 정상적인지 확인하다.

http://서버 ip:50060/tasktracker.jsp
http://서버 ip:50030/jobtracker.jsp
http://서버 ip:50070/dfshealth.jsp

#10. 테스트

소스를 보면 많은 도움 된다. 역시 Batch 개념은 어디서나 만난다.

 

/share/hadoop-0.18.3]  bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
09/03/03 10:26:59 INFO mapred.FileInputFormat: Total input paths to process : 10
09/03/03 10:26:59 INFO mapred.FileInputFormat: Total input paths to process : 10
09/03/03 10:27:00 INFO mapred.JobClient: Running job: job_200903031008_0001
09/03/03 10:27:01 INFO mapred.JobClient:  map 0% reduce 0%

09/03/03 10:27:06 INFO mapred.JobClient:  map 18% reduce 0%
09/03/03 10:27:09 INFO mapred.JobClient:  map 36% reduce 0%
09/03/03 10:27:12 INFO mapred.JobClient:  map 45% reduce 0%
09/03/03 10:27:13 INFO mapred.JobClient:  map 54% reduce 0%
09/03/03 10:27:15 INFO mapred.JobClient:  map 63% reduce 0%
09/03/03 10:27:16 INFO mapred.JobClient:  map 72% reduce 0%
09/03/03 10:27:17 INFO mapred.JobClient:  map 81% reduce 0%
09/03/03 10:27:19 INFO mapred.JobClient:  map 90% reduce 0%
09/03/03 10:27:20 INFO mapred.JobClient:  map 100% reduce 0%

09/03/03 10:27:29 INFO mapred.JobClient:  map 100% reduce 9%
09/03/03 10:27:30 INFO mapred.JobClient:  map 100% reduce 12%
09/03/03 10:27:34 INFO mapred.JobClient:  map 100% reduce 18%
09/03/03 10:27:39 INFO mapred.JobClient:  map 100% reduce 27%
09/03/03 10:27:42 INFO mapred.JobClient: Job complete: job_200903031008_0001
09/03/03 10:27:42 INFO mapred.JobClient: Counters: 16
09/03/03 10:27:42 INFO mapred.JobClient:   File Systems
09/03/03 10:27:42 INFO mapred.JobClient:     HDFS bytes read=48319
09/03/03 10:27:42 INFO mapred.JobClient:     HDFS bytes written=1907
09/03/03 10:27:42 INFO mapred.JobClient:     Local bytes read=1549
09/03/03 10:27:42 INFO mapred.JobClient:     Local bytes written=3680
09/03/03 10:27:42 INFO mapred.JobClient:   Job Counters
09/03/03 10:27:42 INFO mapred.JobClient:     Launched reduce tasks=1
09/03/03 10:27:42 INFO mapred.JobClient:     Launched map tasks=11
09/03/03 10:27:42 INFO mapred.JobClient:     Data-local map tasks=11
09/03/03 10:27:42 INFO mapred.JobClient:   Map-Reduce Framework
09/03/03 10:27:42 INFO mapred.JobClient:     Reduce input groups=49
09/03/03 10:27:42 INFO mapred.JobClient:     Combine output records=100
09/03/03 10:27:42 INFO mapred.JobClient:     Map input records=1554
09/03/03 10:27:42 INFO mapred.JobClient:     Reduce output records=49
09/03/03 10:27:42 INFO mapred.JobClient:     Map output bytes=1552
09/03/03 10:27:42 INFO mapred.JobClient:     Map input bytes=47484
09/03/03 10:27:42 INFO mapred.JobClient:     Combine input records=107
09/03/03 10:27:42 INFO mapred.JobClient:     Map output records=56
09/03/03 10:27:42 INFO mapred.JobClient:     Reduce input records=49
09/03/03 10:27:42 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
09/03/03 10:27:43 INFO mapred.FileInputFormat: Total input paths to process : 1
09/03/03 10:27:43 INFO mapred.FileInputFormat: Total input paths to process : 1
09/03/03 10:27:43 INFO mapred.JobClient: Running job: job_200903031008_0002
09/03/03 10:27:44 INFO mapred.JobClient:  map 0% reduce 0%
09/03/03 10:27:48 INFO mapred.JobClient:  map 100% reduce 0%
09/03/03 10:27:51 INFO mapred.JobClient: Job complete: job_200903031008_0002
09/03/03 10:27:51 INFO mapred.JobClient: Counters: 16
09/03/03 10:27:51 INFO mapred.JobClient:   File Systems
09/03/03 10:27:51 INFO mapred.JobClient:     HDFS bytes read=1907
09/03/03 10:27:51 INFO mapred.JobClient:     HDFS bytes written=1135
09/03/03 10:27:51 INFO mapred.JobClient:     Local bytes read=1549
09/03/03 10:27:51 INFO mapred.JobClient:     Local bytes written=3134
09/03/03 10:27:51 INFO mapred.JobClient:   Job Counters
09/03/03 10:27:51 INFO mapred.JobClient:     Launched reduce tasks=1
09/03/03 10:27:51 INFO mapred.JobClient:     Launched map tasks=1
09/03/03 10:27:51 INFO mapred.JobClient:     Data-local map tasks=1
09/03/03 10:27:51 INFO mapred.JobClient:   Map-Reduce Framework
09/03/03 10:27:51 INFO mapred.JobClient:     Reduce input groups=3
09/03/03 10:27:51 INFO mapred.JobClient:     Combine output records=0
09/03/03 10:27:51 INFO mapred.JobClient:     Map input records=49
09/03/03 10:27:51 INFO mapred.JobClient:     Reduce output records=49
09/03/03 10:27:51 INFO mapred.JobClient:     Map output bytes=1429
09/03/03 10:27:51 INFO mapred.JobClient:     Map input bytes=1821
09/03/03 10:27:51 INFO mapred.JobClient:     Combine input records=0
09/03/03 10:27:51 INFO mapred.JobClient:     Map output records=49
09/03/03 10:27:51 INFO mapred.JobClient:     Reduce input records=49

 

 

#11 테스트 결과 확인

좀 익숙해져야 하는게. bin/hadoop fs -ls  나 bin/hadoop dfs -cat 이런거다.

마치 CDROM에 dev 장치에 mount해서 파일 복사해오는 느낌이랄까??

 

/share/hadoop-0.18.3] bin/hadoop fs -get output output
/share/hadoop-0.18.3] cat output/*

또는

/share/hadoop-0.18.3] bin/hadoop fs -ls output/  해서 결과파일이 있는지 확인한다. 파일크기가 0이면 내가 잘못했음을 의미한다.

/share/hadoop-0.18.3] bin/hadoop fs -cat output/part-00000

 

결과값 확인

 

3       dfs.class
3       dfs.
2       dfs.name.dir
2       dfs.data.dir
2       dfs.period
1       dfs.http.address
1       dfs.balance.bandwidth
1       dfs.block.size
1       dfs.blockreport.initial
1       dfs.blockreport.interval
1       dfs.client.block.write.retries
1       dfs.client.buffer.dir
1       dfs.datanode.address
1       dfs.datanode.dns.interface
1       dfs.datanode.dns.nameserver
1       dfs.datanode.du.pct
1       dfs.datanode.du.reserved
1       dfs.datanode.handler.count
1       dfs.datanode.http.address
1       dfs.datanode.https.address
1       dfs.datanode.ipc.address
1       dfs.default.chunk.view.size
1       dfs.df.interval
1       dfs.file
1       dfs.heartbeat.interval
1       dfs.hosts
1       dfs.hosts.exclude
1       dfs.https.address
1       dfs.impl
1       dfs.max.objects
1       dfs.namenode.decommission.interval
1       dfs.namenode.decommission.interval.
1       dfs.namenode.decommission.nodes.per.interval
1       dfs.namenode.handler.count
1       dfs.namenode.logging.level
1       dfs.permissions
1       dfs.permissions.supergroup
1       dfs.replication
1       dfs.replication.consider
1       dfs.replication.interval
1       dfs.replication.max
1       dfs.replication.min
1       dfs.replication.min.
1       dfs.safemode.extension
1       dfs.safemode.threshold.pct
1       dfs.secondary.http.address
1       dfs.servers
1       dfs.web.ugi
1       dfsmetrics.log

 

잘 모르는 게 있으면, 이곳을 참조하자. 여기서 참조해서 나도 한 거라서^^

 

http://ausgang.egloos.com/1806517
http://tida.tistory.com/
http://hadoop.apache.org/core/docs/current/quickstart.html
http://www.joinc.co.kr/modules/moniwiki/wiki.php/JCvs/Search/Document/nutch/Hadoop
http://hadoop.apache.org/core/docs/current/cluster_setup.html
http://www.hadoop.or.kr/?mid=lecture&document_srl=406
http://public.yahoo.com/gogate/hadoop-tutorial/start-tutorial.html

 

 

출처는 꼭 남기시길..^^

'general java' 카테고리의 다른 글

JMX에서의 Internalization  (0) 2009.03.25
toString 구현을 쉽게 구현하기  (0) 2009.03.25
javax.mail.Transport.send 메소드 사용시 block되는 현상  (0) 2009.03.24
sping 2.0 aop @aspect 사용 예제  (0) 2009.03.06
Hadoop 사용 예제  (0) 2009.03.04
Hadoop 설치 하기  (0) 2009.03.04
Posted by 김용환 '김용환'
TAG