CentOS 7에 Hadoop 설치

CentOS 7에 Hadoop 설치

이전 글에서 CentOS 7을 AWS에 설치 했었습니다.

AWS에 CentOS 7 설치

사실 Hadoop + HBase를 설치하기 위한 사전 작업이어서 오늘은 먼저 Hadoop을 설치해 봅니다.

먼저 JDK를 설치하는 등 기본 환경을 설정합니다.

[centos@ip-172-31-3-215 ~]$ sudo -i

# Oracle JDK 8을 다운로드합니다. 혹 아래 명령으로 다운로드가 안되면 직접 사이트에서 다운로드 해서 가져옵니다
[  root@ip-172-31-3-215 ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz"

# /opt 디렉토리에 압축을 해제합니다
[  root@ip-172-31-3-215 ~]# tar -zxvf jdk-8u25-linux-x64.tar.gz -C /opt

# 방금 설치한 Oracle JDK를 기본 JDK로 설정합니다
[  root@ip-172-31-3-215 ~]#  /usr/sbin/alternatives --install /usr/bin/java java /opt/jdk1.8.0_25/bin/java 100

# java 버전을 확인합니다
[  root@ip-172-31-3-215 ~]# java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

# /etc/profile 파일에 JAVA_HOME 환경 변수를 추가합니다
[  root@ip-172-31-3-215 ~]# vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_25

JDK 설치가 완료됐으면 이제 hadoop 계정을 추가하고 SSH 키를 생성합니다.

# root 계정으로 전환한 후 hadoop 계정을 추가합니다
[centos@ip-172-31-3-215 ~]$ sudo -i
[  root@ip-172-31-3-215 ~]# useradd hadoop
[  root@ip-172-31-3-215 ~]# su - hadoop

# 생성한 hadoop 계정으로 전환한 후 ssh-keygen 명령으로 SSH 키를 생성합니다
[hadoop@ip-172-31-3-215 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
92:14:bd:ff:f6:26:bd:4d:ad:39:99:c6:ce:2e:a4:73 hadoop@ip-172-31-3-215
The key's randomart image is:
+--[ RSA 2048]----+
|      ..         |
|       ..        |
|      .  .       |
|     . ..        |
|      o S.       |
|       .  . .   .|
|           + o oo|
|          o E.O= |
|           + OOo.|
+-----------------+

# 암호 없이 ssh 접속이 가능하도록 공개키를 authorized_keys 파일에 추가합니다
[hadoop@ip-172-31-3-215 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@ip-172-31-3-215 ~]$ chmod 0600 ~/.ssh/authorized_keys
[hadoop@ip-172-31-3-215 ~]$ ssh localhost
Last login: Sun Mar  8 07:01:41 2015

이제 hadoop을 내려받고 설치합니다.

[hadoop@ip-172-31-3-215 ~]$ wget http://apache.mirror.cdnetworks.com/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz
[hadoop@ip-172-31-3-215 ~]$ tar xvfz hadoop-2.5.2.tar.gz

.bashrc 파일에 관련 환경 변수를 추가합니다

[hadoop@ip-172-31-3-215 ~]$ cd hadoop-2.5.2
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi ~/.bashrc
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

source 명령을 이용해서 환경 변수를 현재 환경에 읽어 들입니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ source ~/.bashrc

$HADOOP_HOME/etc/hadoop/core-site.xml 파일을 열고

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi etc/hadoop/core-site.xml

아래와 같이 내용을 추가합니다.

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

$HADOOP_HOME/etc/hadoop/hdfs-site.xml 파일을 열고

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ vi etc/hadoop/hdfs-site.xml

아래와 같이 내용을 추가합니다.

<configuration>

  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
    <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
  </property>

  <property>
    <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
  </property>

</configuration>

$HADOOP_HOME/etc/hadoop/mapred-site.xml 파일을 열고

아래와 같이 내용을 추가합니다.

<configuration>

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

</configuration>

namenode를 포맷합니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ hdfs namenode -format

Hadoop을 시작합니다.

# dfs daemon을 시작합니다
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ start-dfs.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-namenode-ip-172-31-3-215.ap-northeast-1.compute.internal.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-datanode-ip-172-31-3-215.ap-northeast-1.compute.internal.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.5.2/logs/hadoop-hadoop-secondarynamenode-ip-172-31-3-215.ap-northeast-1.compute.internal.out

# yarn daemon을 시작합니다
[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.5.2/logs/yarn-hadoop-resourcemanager-ip-172-31-3-215.ap-northeast-1.compute.internal.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-2.5.2/logs/yarn-hadoop-nodemanager-ip-172-31-3-215.ap-northeast-1.compute.internal.out

jps(Java Virtual Machine Process Status Tool)로 java 프로세스를 확인합니다.

[hadoop@ip-172-31-3-215 hadoop-2.5.2]$ $JAVA_HOME/bin/jps
4981 NodeManager
5400 Jps
4889 ResourceManager
4747 SecondaryNameNode
4494 NameNode


신고