[hadoop] Hadoop Install

Download and hadoop building

$ cd /usr/local/

$ wget http://ftp.apache-kr.org/lucene/hadoop/hadoop-$version.tar.gz

$ tar zxvf hadoop-$version.tar.gz

$ cd hadoop-$version

$ ant package

hadoop-env.sh 편집

$ vi ./conf/hadoop-env.sh

아래와 같이 JAVA_HOME 경로, slaves 설정 파일 경로를 편집합니다. HADOOP_HOME은 실제로 hadoop이 설치된 경로를 설정합니다. 아래의 경우에는 /home/nutch로 가정했습니다.

export JAVA_HOME=/usr/java/jdk_$version

export HADOOP_HOME=/home/nutch

export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves

export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

hadoop-site.xml 편집

$ vi conf/hadoop-site.xml

<configuration>

<property>

  <name>fs.default.name</name>

  <value>마스터서버:9000</value>

  <description>

    The name of the default file system. Either the literal string

    “local” or a host:port for NDFS.

  </description>

</property>

<property>

  <name>mapred.job.tracker</name>

  <value>마스터서버:9001</value>

  <description>

    The host and port that the MapReduce job tracker runs at. If

    “local”, then jobs are run in-process as a single map and

    reduce task.

  </description>

</property>

<property>

  <name>mapred.map.tasks</name>

  <value>2</value>

  <description>

    define mapred.map tasks to be number of slave hosts

  </description>

</property>

<property>

  <name>mapred.reduce.tasks</name>

  <value>2</value>

  <description>

    define mapred.reduce tasks to be number of slave hosts

  </description>

</property>

<property>

  <name>dfs.name.dir</name>

  <value>/home/nutch/filesystem/name</value>

</property>

<property>

  <name>dfs.data.dir</name>

  <value>/home/nutch/filesystem/data</value>

</property>

<property>

  <name>mapred.system.dir</name>

  <value>/home/nutch/filesystem/mapreduce/system</value>

</property>

<property>

  <name>mapred.local.dir</name>

  <value>/home/nutch/filesystem/mapreduce/local</value>

</property>

<property>

  <name>dfs.replication</name>

  <value>1</value>

</property>

</configuration>

master node

$ vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 9000 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 9001 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50010 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50030 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50040 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50050 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50060 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50070 -j ACCEPT

$ /etc/init.d/iptables restart

slave node

$ vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50010 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50040 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50050 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50060 -j ACCEPT

$ /etc/init.d/iptables restart

ssh key 생성

ssh key를 scp를 이용해 각 slave 노드로 복사 (먼저 복사될 파일 시스템이 각 slave노드에 존재해야 한다.

$ scp ~/.ssh/authorized_keys who@server2:~/.ssh/authorized_keys

! 인증키가 없을 경우(~/.ssh/authorized_keys 파일이 없을 경우)

ssh-keygen으로 공개키를 만들면 된다(버전마다 다를 수 있으며 아래는 한 예임)

$ ssh-keygen -t rsa $ cp rsa.pub authorized_keys

! scp 설치시 no route to host라고 나오는 경우: 방화벽 때문에 안되는 것임

임시로 방화벽을 무력화하고 복사할 수 있다.

$ /etc/init.d/iptables stop

설정 파일 편집

master node의 slaves 파일 편집. 한줄에 노드이름 하나씩

$ cd /home/nutch/search/conf

$ vi slaves

slave노드(IP가능)

hadoop-site.xml 파일 편집. mapred.map.tasks, mapred.reduce.tasks 두 가지 항목은 각 slave 노드에서도 수정해 줘야 함

ser1> vi hadoop-site.xml

mapred.map.tasks : 4

mapred.reduce.tasks : 2

dfs.replication : 2

Namenode 포맷

먼저 master 와 모든 slave노드에 hadoop-site.xml 파일에서 설정한 dir 를 생성해 놓아야 한다.(위의 설정에서는 /home/nutch/filesystem/ )

실행 전에 conf/hadoop-env.sh가 실행되면서 $JAVA_HOME등의 값이 변하므로 Java 디렉토리가 맞지 않아서 실행이 안되면, /etc/profile말고, hadoop/conf/hadoop-env.sh에서 수정해야 함

$ ./bin/hadoop namenode -format

데몬 실행

$ ./bin/start-all.sh

마스터와 슬레이브의 모든 데몬을 한꺼번에 실행

master-slave config test

$ ./bin/slaves.sh uptime

실행 후 콘솔 창에 각 노드의 데몬이 잘 올라왔는지 보고 각 서버의 로그 확인

관련링크 :

http://lucene.apache.org/hadoop/docs/current/quickstart.html

http://www.hadoop.co.kr/

http://www.joinc.co.kr/modules/moniwiki/wiki.php/JCvs/Search/Document/nutch/Hadoop

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.