Hadoop 설치

강혜성·2023년 2월 23일
0

분산처리

목록 보기
2/18
post-thumbnail
  • Window 10에 Hadoop 설치
  • Docker는 설치되어 있다 가정

Hadoop

  • cmd창에 다음을 입력
  1. 하둡용 우분투 설치
docker run -it --name hadoop-base ubuntu:18.04
  1. 설치 이후 우분투에 들어가기
docker exec -it hadoop-base /bin/bash
  • ubuntu root로 접속한 상태로 다음 실행
  1. 라이브러리 및 jdk 설치
$ apt-get update  
$ apt-get install -y net-tools vim iputils-ping wget
$ apt-get install -y openssh-server openssh-client
$ apt-get install -y openjdk-8-jdk 
$ java -version 
$ javac -version 
  1. SSH 설정
$ service ssh restart
$ netstat -plant | grep 22
  1. SSH 접속할 수 있도록 키 파일 생성 / 권한 설정
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
  1. ssh localhost 접속 확인
$ ssh localhost
  1. 오류가 발생하지 않도록 관련 디렉토리 생성
$ mkdir /var/run/sshd
  1. 하둡 설치 / unzip
$ wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
$ sudo tar -zxvf hadoop-3.3.4.tar.gz
  1. root의 bashrc 설정 파일 변경 / 환경 변수 추가
$ vi ~/.bashrc

## 아래 내용 파일에 추가

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
#Hadoop Related Options
export HADOOP_HOME=/root/hadoop-3.3.4
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
  1. bashrc 다시 적용
$ source ~/.bashrc
  1. 하둡 설정파일들을 세팅
$ cd $HADOOP_CONFIG_HOME
$ vi core-site.xml

## 아래 내용 파일에 추가

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/temp</value>
    </property>

    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
        <final>true</final>
    </property>
</configuration>
$ vi hdfs-site.xml

## 아래 내용 파일에 추가
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
		<final>true</final>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/root/namenode_home</value>
		<final>true</final>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/root/datanode_home</value>
		<final>true</final>
	</property>
</configuration>
$ vi mapred-site.xml

## 아래 내용 파일에 추가


<configuration>
	<property>
		<name>mapred.job.tracker</name>
		<value>master:9001</value>
	</property>
</configuration>
$ vi hadoop-env.sh

## 아래 내용 파일에 추가


export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ vi yarn-site.xml

## 아래 내용 파일에 추가

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
$ vi yarn-env.sh

## 아래 내용 파일에 추가

JAVA=$JAVA_HOME/bin/java
JAVA_HEAP_MAX=-Xmx1000m
$ vi workers

## 아래 내용 파일로 대체 

master
slave1
slave2
$ vi hadoop-env.sh

## 아래 내용 파일에 추가

export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
  1. /root로 이동한 후 네임노드 포맷
$ cd
$ hadoop namenode -format
  • window 10 cmd에서 실행
  1. Docker image로 만들기
 docker commit hadoop-base hyesungkang/hadoopbase
  1. Docker 이미지 적용 마스터 노드 하나, 슬레이브 노드 두 개
$ docker run -it -h master --name master -p 9870:9870  hyesungkang/hadoopbase

$ docker run -it -h slave1 --name slave1 --link master:master hyesungkang/hadoopbase

$ docker run -it -h slave2 --name slave2 --link master:master hyesungkang/hadoopbase
  • master ubuntu에서 실행
  1. 아이피 확인 후 master 도커에서 호스트 파일 수정
## 윈도우 호스트 운영체제라면
## cmd에서
docker inspect master | findstr "IPAddress"
docker inspect slave1 | findstr "IPAddress"
docker inspect slave2 | findstr "IPAddress"

#리눅스 운영체제라면
$ docker inspect master | grep IPAddress
$ docker inspect slave1 | grep IPAddress
$ docker inspect slave2 | grep IPAddress

## master로 진입

docker exec -it master /bin/bash

$ vi /etc/hosts

172.17.0.3 master
172.17.0.4 slave1
172.17.0.5 slave2
  1. ssh 재시작 / master, slave1, slave2에 적용해야 함

  2. master node에서 ssh 접속 확인

## windo10 cmd에서 
docker exec -it master /bin/bash

## master root 권한으로
$ ssh master
$ exit
$ ssh slave1
$ exit
$ ssh slave2
$ exit
  1. slaves 파일 수정
## master docker 에서 수행
## slaves 파일 없으므로 생성한 후 추가

$ cd $HADOOP_CONFIG_HOME
$ vi slaves
slave1
slave2
master
  1. 하둡 포맷 / master에 실시
$ hadoop namenode -format
  1. /root로 이동 후 스크립트 실행
$ cd
$ start-all.sh
  1. 정상 작동 확인
root@master:~# jps
1123 ResourceManager
581 DataNode
839 SecondaryNameNode
1355 NodeManager
1806 Jps
351 NameNode

https://earthconquest.tistory.com/396

https://dramatic-armchair-97f.notion.site/6d8094150f454821a4f1237f6cbdcc18

0개의 댓글