얼마전 윈도우 환경하에서 VM웨어로 리눅스를 설치하고 싱글노드 Hadoop을 설치하고 테스트 한적이 있다.
Hadoop은 여러 노드들을 붙여서 분산처리하기 위해서 나온 것인데, 환경이 안되다 보니 공부를 순수하게 학습 목적으로 테스트하였는데, 벌써부터 기억이 가물거려 그동안 봉인후 꺼내보지 않았던, 아주 오래된 노트북에 우분투를 설치하고, 데스크탑에 VM 리눅스환경에서 2 node hadoop을 설치하였다.
아래는 다음에 설치하면 까먹지 않기 위한 설치방법에 대한 정리이다.
우선 설치가 완성된후 jps를 돌린 상태 스샷.
1. master node(master,slave02)
2. slave01 node
host파일 내용은 아래와 같이 모든 노드에 동일하게 사용하여야 한다.(데스크탑을 사용하는 master node는 slave02의 역활도 함)
192.168.0.20 master
192.168.0.21 slave01
192.168.0.20 slave02
설치 방법
1. 준비물
JDK(http://www.oracle.com/technetwork/java/javase/downloads/jdk6u37-downloads-1859587.html)
hadoop(http://hadoop.apache.org/releases.html)
ssh(openssh-server)
2. hadoop용 계정 추가
$sudo adduser hadoop
3. hadoop이 사용할 디렉토리 구조 만들기
/home/hadoop/temp --> temp 용도의 디렉토리(hadoop을 실행하게 되면 map,reduce 하는 과정에 사용할 temp용도의 디렉토리)
4. ssh 키생성후 authorized_keys 로 등록하기(비밀번호 입력없이 바로 접속할수 있다)
hadoop@ubuntu:~$ssh-keygen -t rsa -P ""
hadoop@ubuntu:~$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
hadoop@ubuntu:~$scp ~/.ssh/authorized_keys hadoop@[slave 서버들]:~/.ssh/
5. hadoop package 다운로드후 설치(압축풀기)
hadoop@ubuntu:~$tar xvfz hadoop-1.0.4.tar.gz
hadoop@ubuntu:~$mkdir bin
hadoop@ubuntu:~$mv hadoop-1.0.4 ./bin/
hadoop@ubuntu:~$cd bin
hadoop@ubuntu:~$ln -s hadoop-1.0.4 hadoop
6. JAVA-JDK설치하기
hadoop@ubuntu:~$./jdk-6u37-linux-i586.bin
hadoop@ubuntu:~$sudo mv jdk1.6.0_37 /usr/local/
hadoop@ubuntu:~$cd /usr/local
hadoop@ubuntu:~$sudo chown -R root:root /usr/local/jdk1.6.0_37
hadoop@ubuntu:~$sudo ln -s jdk1.6.0_37 java-6-sun
7. hadoop 환경 설정 파일 수정해주기
1) java home 설정해주기(hadoop-env.h)
hadoop@ubuntu:~/bin/hadoop/conf$ cat hadoop-env.sh
# Set Hadoop-specific environment variables here.
# The only required environment variable is JAVA_HOME. All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.
# The java implementation to use. Required.
export JAVA_HOME=/usr/local/java-6-sun
2)각종 site 파일들 수정해주기(core-site.xml, hdfs-site.xml, mapred-site.xml)
hadoop@ubuntu:~/bin/hadoop/conf$ cat core-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://master:10001</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/temp</value>
</property>
</configuration>
hadoop@ubuntu:~/bin/hadoop/conf$ cat hdfs-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>dfs.replication</name>
<value>1</value>
</property>
</configuration>
hadoop@ubuntu:~/bin/hadoop/conf$ cat mapred-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>mapred.job.tracker</name>
<value>master:10002</value>
</property>
</configuration>
8. hadoop format 하기
hadoop@ubuntu:~/bin/hadoop$ bin/hadoop namenode -format
12/11/07 06:32:29 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.0.4
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct 3 05:13:58 UTC 2012
************************************************************/
12/11/07 06:32:29 INFO util.GSet: VM type = 32-bit
12/11/07 06:32:29 INFO util.GSet: 2% max memory = 19.33375 MB
12/11/07 06:32:29 INFO util.GSet: capacity = 2^22 = 4194304 entries
12/11/07 06:32:29 INFO util.GSet: recommended=4194304, actual=4194304
12/11/07 06:32:30 INFO namenode.FSNamesystem: fsOwner=hadoop
12/11/07 06:32:30 INFO namenode.FSNamesystem: supergroup=supergroup
12/11/07 06:32:30 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/11/07 06:32:30 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
12/11/07 06:32:30 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/11/07 06:32:30 INFO namenode.NameNode: Caching file names occuring more than 10 times
12/11/07 06:32:31 INFO common.Storage: Image file of size 112 saved in 0 seconds.
12/11/07 06:32:31 INFO common.Storage: Storage directory /home/hadoop/temp/dfs/name has been successfully formatted.
12/11/07 06:32:31 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
9. hadoop start(반드시 master 노드에서 시작)
hadoop@ubuntu:~/bin/hadoop/bin$ ./start-all.sh
starting namenode, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-namenode-ubuntu.out
slave02: starting datanode, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-ubuntu.out
slave01: starting datanode, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-nuke-Satellite-A10.out
master: starting secondarynamenode, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-jobtracker-ubuntu.out
slave02: starting tasktracker, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-ubuntu.out
slave01: starting tasktracker, logging to /home/hadoop/bin/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-nuke-Satellite-A10.out
hadoop@ubuntu:~/bin/hadoop/bin$ /usr/local/java-6-sun/bin/jps
5471 NameNode
6010 JobTracker
6316 Jps
5710 DataNode
5927 SecondaryNameNode
6239 TaskTracker
다음 글 부터는 하둡을 사용한 예제 코드들을 올릴 예정.
'공부하고(?) > Linux' 카테고리의 다른 글
Hadoop - MapReduce를 사용한 Inverted Index 만들어보기. (0) | 2012.11.12 |
---|---|
Hadoop - MapReduce를 이용한 간단한 단어수 계산하는 방법 (0) | 2012.11.09 |
생각보다 잘 까먹는 우분투 네트워크 설정 방법. (0) | 2012.11.07 |
IPVSADM man 매뉴얼 - 분산운영 (1) | 2012.08.11 |
ipvsadm을 사용한 로드 밸런스와 클러스터 (0) | 2012.08.11 |