본문 바로가기

Hadoop

하둡 설치

#하둡 설치를 위한 디렉토리 부터 만들어준다.

mkdir -p /home/hadoop/hdfs/data

mkdir -p /home/hadoop/hdfs/temp

mkdir -p /home/hadoop/hdfs/name

# mkdir 의 -p 옵션은 디렉토리를 만들어줄 경로상에 디렉토리가 없으면 만들어준다.

 

#hadoop압축파일 풀기

tar xzvfp hadoop.tar.gz

 

#hadoop 파일을 원하는 위치로 옮겨준다.

mv hadoop /usr/local/hadoop

 

#hadoop 폴더 안에 conf폴더로 이동

cd /usr/local/hadoop/conf

ls -al

(ll과 같다)

 

하둡 설정을 위해 설정해주어야하는  파일

###############core-site.xml

#하둡에서 이용할 포트번호가 9000번이라는 것과 하둡이 운영되는 디폴트 디렉토리가 /home/hadoop/hdfs/temp임을 명시

#이 디렉토리 안에 하둡이 운영되면서 쌓이는 로그파일이 생성된다.

<?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://namenode:9000</value>
        </property>
        <property>
         <name>hadoop.tmp.dir</name>
         <value>/home/hadoop/hdfs/temp</value>
        </property>
</configuration>

 

 

################hdfs-site.xml

#hdfs-site.xml파일에서는 dfs.replication의 갯수를 <value>에 정의한다.(datanode의 갯수)

# 64MB단위로 나눈 파일들을 복사본을 3개 생성하여 각 노드에 저장한다는 말이다.

#하둡은 데이터를 복사하여 각 노드에 저장하고 어떤하나의 노드가 다운되면 다른 노드에 저장된 같은 데이터를 수집하여 #처리한다.

<?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>3</value>
        </property>
        <property>
        <name>dfs.http.address</name>
        <value>namenode:50070</value>
        </property>
        <property>
        <name>dfs.secondary.http.address</name>
        <value>snamenode:50090</value>
        </property>
</configuration>

 

 

#################hadoop-env.sh

#하둡이 java가 설치된 위치를 찾아 갈수 있도록 설정한다.

# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/usr/local/java

 

 

######################mapred-site.xml

#job-tracker가 작성할 로그파일을 저장할 위치 설정

 

<?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>namenode:9001</value>
        </property>
        <property>
        <name>mapred.local.dir</name>
        <value>/home/hadoop/hdfs/mapred</value>
        </property>
        <property>
        <name>mapred.system.dir</name>
        <value>/home/hadoop/hdfs/mapred</value>
        </property>
</configuration>

 

##############masters

#namenode가 다운되어 하둡을 사용할 수 없게 되었을때 대신해서 돌아갈 서브제어노드

snamenode

 

###########slaves

#namenode의 통제 아래 돌아가는 노드들이름

snamenode
datanode1
datanode2

 

 

 

#위의 내용을 파일마다 해준다.

vi core-site.xml

vi hadoop-env.sh

vi hdfs-site.xml

vi mapred-site.xml

vi masters

vi slaves

 

#메인 노드에서 설정한 하둡 파일을 다른 노드에 전달하여 다른노드에도 하둡을 설치한다.

#현재 노드의 하둡파일을 압축

tar czvfp hadoop.tar.gz hadoop

 

#압축한 하둡 파일을 scp 프로토콜을 통해 다른 노드에 저장하고 싶은 폴더경로로 전달

#모든 노드 마다 전달해야 하므로 반복!

scp -rp hadoop.tar.gz [노드이름]:[폴더 경로]

ex ) scp -rp hadoop.tar.gz snamenode:/usr/local

 

#파일을 전달한 모든 노드에서 압축을 풀어준다.

tar xzvfp hadoop.tar.gz

 

#hadoop 폴더에 대해 링크를 건다.

ln -s hadoop hadoop

 

#hadoop의 환경변수 설정을 해준다.

vi /etc/profile

 

#환경변수 설정

export HADOOP_HOME=/usr/local/hadoop

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

 

#hadoop 실행~~

#hadoop 폴더로 ~

cd hadoop

#메인노드의 hadoop이 위치한 폴더들을 초기화한다.

hadoop [메인노드] -format

ex) hadoop namenode -format

#hadoop 시작

start-all.sh

#hadoop 을 구성하는 노드들이 정상적으로 실행되고 있는지 확인

jps

#namenode 3개

#snamenode 4개

#datanode1 3개

#datanode2  3개

 

 

 

#hadoop 멈추기

stop-all.sh

 

####################################

###################################

리눅스에서 명령어를 쉽게 사용하기 위해서 명령어의 별칭을 정해놓는 ~/.bashrc파일을 수정한다.

#서버는 꺼지면 안되는데 우리가 사용하는 리눅스 서버는 끄고 집에 가므로  temp와  mapred폴더안에 로그 파일이 있으면

#하둡이 이전 로그로 인해 실행 되지 않는다.

#그래서 삭제하는 명령어를 만들어주기로 한다.

#하둡에서 사용하는 로그파일을 저장하는 폴더

alias tr='rm -rf /home/hadoop/hdfs/temp/*'

#하둡에서 사용하는 jobtracker가 사용하는 로그 폴더
alias mr='rm -rf /home/hadoop/hdfs/mapred/*'

#하둡에서 노드들 끼리 연결 시킬때 방화벽 문제로 연결되지 않는 경우가 있다

#그럴 경우를 대비해서 노드에서 방화벽을 해제하는 명령을 별칭화 해놓는다.

alias sps='systemctl stop firewalld'

 

##################################

#서버 재 실행시 

#모든 노드에서 실행해야하는 명령어 4개

 

# ip주소가 달라졌을 수 있으므로 다시 돌려 놓기

ips

# 방화벽을 해제

sps

# jobtracker가 사용하는 로그폴더에 로그를 삭제

mr

# 하둡에서 사용하는 로그폴더에 로그를 삭제

tr

 

####################################

#재실행시 메인 노드에서 실행시켜주어야할 내용

hadoop namenode -format

start-all.sh

 

'Hadoop' 카테고리의 다른 글

하둡 wordcount  (0) 2022.11.23
hive 설치 및 구동  (0) 2022.11.22
리눅스 설치  (0) 2022.11.22
리눅스에서 SSH설정  (0) 2022.11.21
리눅스에서 자바 설치하기  (0) 2022.11.21