Taaewoo
Data Engineering Blog
Taaewoo
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • Computer Science (16)
      • Algorithm (6)
      • OS (1)
      • Java (2)
      • C++ (6)
      • Python (1)
    • Hadoop Ecosystem (27)
      • Hadoop (6)
      • Spark (5)
      • NiFi (6)
      • Hive (9)
      • Kafka (1)
    • BigData Engineering (14)
      • Jupyter (1)
      • Docker (3)
      • CDH (3)
      • Riot Data Pipeline (7)
    • Back-end 개발 (0)
      • Spring (0)
    • Algorithm 문제 풀이 (9)
      • 백준 (5)
      • LeetCode (4)
    • Conference (1)
      • LINE DEVELOPER DAY 2021 (1)
      • if(kakao) 2021 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • NiFi
  • java
  • hadoop
  • BigData
  • metastore
  • 프로그래밍
  • CS
  • 코딩
  • hdfs
  • kafka
  • algorithm
  • C++
  • 빅데이터
  • Coding
  • docker
  • 알고리즘
  • 정렬
  • spark
  • Hive
  • sort

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Taaewoo

Data Engineering Blog

[Docker] Docker로 Hadoop 구성하기 #2 - Hadoop 설치 및 세팅
BigData Engineering/Docker

[Docker] Docker로 Hadoop 구성하기 #2 - Hadoop 설치 및 세팅

2021. 5. 31. 02:43

Docker

 내가 원하는 환경의 서버를 container라는 개념으로 쉽게 생성 및 삭제할 수 있는 플랫폼.

 

관련 글

[Docker] Docker로 Hadoop 구성하기 #1 - MacOS에 Docker 설치 및 CentOS 실행

[Docker] Docker로 Hadoop 구성하기 #3 - Hadoop 클러스터 구성 및 실행


 

 이전 글에서  docker  설치 및 CentOS container를 생성했다면 이번 글에서는 CentOS에  hadoop  설치 및 세팅을 합니다.  docker 로  hadoop  cluster를 구성하기 위해선 다수의 서버가 필요합니다. 각각의 서버에 기본적인 프로그램들을 설치하기엔 번거로우니 hadoop-base 라는 이름의 container에  hadoop 과 기타 프로그램들을 설치한 뒤 이미지화시켜 다수의 container를 생성시키겠습니다.

 

hadoop-base container 생성

 

 가장 먼저 CentOS 7버전의 container를 생성 및 접속하여 기본 프로그램들을 설치해줍니다.

/* Mac Terminal */
$ docker run -it --name hadoop-base centos:7
/* CentOS Container */
$ yum update
$ yum install wget -y
$ yum install vim -y
$ yum install openssh-server openssh-clients openssh-askpass -y
$ yum install java-1.8.0-openjdk-devel.x86_64 -y

 

 그리고 각 노드들끼리 패스워드 입력 없이 원할한 접속을 위해 공개키 생성을 해줍니다.

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
$ ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ""
$ ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519 -N "" 

 

 Java를 설치한 이후에는 Java 환경변수 설정을 해줘야합니다. Java가 설치된 경로를 알기위해 아래의 명령어를 수행하고 bashrc 파일에 JAVA_HOME을 추가합니다.

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64/bin/javac

$ vim ~/.bashrc
.
.
/* readlink의 결과에서 bin 디렉토리 이전까지 경로 */
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
.
.

 

 이제 드디어  hadoop 을 설치할 차례입니다. 아래에서는  hadoop  2.7.7 버전을 사용했지만 원하는 버전이 있다면  hadoop  link를 참고해 버전만 바꿔주시면 됩니다.

-  hadoop  link : https://archive.apache.org/dist/hadoop/common/

$ mkdir /hadoop_home
$ cd /hadoop_home

$ wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

$ tar -xvzf hadoop-2.7.7.tar.gz

 

 hadoop 을 설치했다면 환경변수를 설정해줍니다.

$ vim ~/.bashrc
.
.
export HADOOP_HOME=/hadoop_home/hadoop-2.7.7
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

/usr/sbin/sshd
.
.
$ source ~/.bashrc

 

 

 지금부터는  hadoop  설정 파일을 세팅해줘야합니다. 우선 mapred-site.xml 파일을 만들어줍니다.

$ cd $HADOOP_CONFIG_HOME
$ cp mapred-site.xml.template mapred-site.xml

 

 위에서 만든 파일을 포함하여  $HADOOP_CONFIG_HOME 경로에 있는 3개의  hadoop  설정 파일들을 수정합니다.

 

core-site.xml

<!-- core-site.xml -->
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop_home/temp</value>
    </property>

    <property>
        <name>fs.default.name</name>
        <value>hdfs://nn:9000</value>
        <final>true</final>
    </property>
</configuration>

 fs.default.name의 value는 NameNode의 hostname을 적어줍니다. 뒤에서 nn이라는 이름으로 만들예정인데 다른 이름을 원하는 경우에는 nn 대신에 다른 이름으로 적어줍니다.

 

 

hdfs-site.xml

<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <final>true</final>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/hadoop_home/namenode_dir</value>
        <final>true</final>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/hadoop_home/datanode_dir</value>
        <final>true</final>
    </property>
</configuration>

 dfs.namenode.name.dir, dfs.datanode.data.dir의 value에는 각각의 데이터가 저장될 경로를 적어주고 해당 폴더들을 생성해줍니다.

$ mkdir /hadoop_home/temp
$ mkdir /hadoop_home/namenode_dir
$ mkdir /hadoop_home/datanode_dir

 

 

mapred-site.xml

<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>nn:9001</value>
    </property>
</configuration>

 

 마지막으로 NameNode를 포맷해주고 지금까지 작업한 container를 이미지화 시킵니다.

$ hadoop namenode -format
$ exit
/* Mac Terminal */
$ docker commit hadoop-base centos:hadoop

 

 

References

 

https://it-sunny-333.tistory.com/79

https://soft.plusblog.co.kr/136

http://www.gleamsky.com/2016/08/610

저작자표시 비영리 (새창열림)

'BigData Engineering > Docker' 카테고리의 다른 글

[Docker] Docker로 Hadoop 구성하기 #3 - Hadoop 클러스터 구성 및 실행  (8) 2021.06.15
[Docker] Docker로 Hadoop 구성하기 #1 - MacOS에 Docker 설치 및 CentOS 실행  (0) 2021.05.21
    'BigData Engineering/Docker' 카테고리의 다른 글
    • [Docker] Docker로 Hadoop 구성하기 #3 - Hadoop 클러스터 구성 및 실행
    • [Docker] Docker로 Hadoop 구성하기 #1 - MacOS에 Docker 설치 및 CentOS 실행
    Taaewoo
    Taaewoo

    티스토리툴바