본문 바로가기

Dev/Data

Hadoop Single Node 설치 (linux)

1. 기본 설정 

# JAVA 설치 
- OS에 맞춰 설치(다운로드) 후 JAVA_HOME 환경변수 설정 


# Hadoop 실행 계정 생성 및 SSH Key 등록 

- 노드에서 다른 노드로 접속(ssh) 시 패스워드 없이 접속을 위해 키 생성 및 등록 

- ssh localhost 명령에서 패스워드가 없이 접속이 되어야 성공 

$ useradd hadoop


$ su - hadoop

$ ssh-keygen -t rsa

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ chmod 0600 ~/.ssh/authorized_keys


$ ssh localhost   # 패스워드 없이 접속이 되어야 함 


# Hadoop Download 

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

wget http://mirror.apache-kr.org/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

tar -zxvf hadoop-2.7.2.tar.gz

sudo cp -R hadoop-2.7.2 /usr/local/

sudo chown -R hadoop:hadoop /usr/local/hadoop-2.7.2

sudo ln -s /usr/local/hadoop-2.7.2 /usr/local/hadoop

# ~/.bashrc 

# HADOOP_HOME  설정 및 bin path 설정 


export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$HADOOP_HOME/bin


2. Hadoop 설정파일 

# $HADOOP_HOME/etc/hadoop/hadoop-env.sh

- JAVA_HOME 설정 

# The java implementation to use.

export JAVA_HOME=/usr/local/java


# $HADOOP_HOME/etc/hadoop/core-site.xml

- 9000 포트에 hdfs:// 프로토콜 서비스 

- hadoop.tmp.dir 의 디폴트 경로 :  /tmp/hadoop-${user.name} 

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://0.0.0.0:9000</value>

    </property>

</configuration>

- 추가적으로 hadoop.tmp.dir 설정이 필요 하다면

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://0.0.0.0:9000</value>

    </property>

    <property>

       <name>hadoop.tmp.dir</name>

       <value>/hdfs/dfs/tmp</value>

    </property>

</configuration>


# $HADOOP_HOME/etc/hadoop/hdfs-site.xml

- dfs.replication : block replication (default : 3)

- dfs.namenode.name.dir : namenode 디렉토리 위치 

- dfs.datanode.data.dir : datanode 디렉토리 위치 

- dir을 지정하지 않으면 각각 file://${hadoop.tmp.dir}/dfs/name file://${hadoop.tmp.dir}/dfs/data 에 위치 

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

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

        <value>file:/hdfs/dfs/name</value>

    </property>

    <property>

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

        <value>file:/hdfs/dfs/data</value>

    </property>

</configuration>


# namenode format 

# dir 경로에 권한 부여 

$ sudo mkdir /hdfs

$ sudo chown hadoop:hadoop /hdfs


# namenode fomat 

$ hdfs namenode -format 



# $HADOOP_HOME/etc/hadoop/mapred-site.xml

$ cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>


# $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>


3. Hadoop 구동

- hdfs 및 yarn 서비스 시작  (hadoop 계정으로 실행)

- jps 를 통해서 Namemode, Datanode 등 실행 되는지 학인 

$ sudo - hadoop 

$ $HADOOP_HOME/sbin/start-dfs.sh

$ $HADOOP_HOME/sbin/start-yarn.sh 


# 서비스 확인 

$ jps

2609 DataNode

2485 NameNode

3334 Jps

2779 SecondaryNameNode

2940 ResourceManager

3039 NodeManager


$ hdfs dfs -ls /

$ hdfs dfs -mkdir /data

$ hdfs dfs -put /home/hadoop/data/* /data/


# 서비스 PORT

- 9000 : ipc 서비스 포트, hdfs:// 

- 50070 : Namenode 웹 어드민 

- 50075 : Datanode 웹 어드민