새로운 것 함 해볼려고 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
출처는 꼭 남기시길..^^