Cloudera Hadoop 6.3.0 Install

 

·       Version : CDH 6.3.0, Centos 7

 

Cloudera Hadoop (CDH) 사용하여 Hadoop 환경을 구성하는 방법에 대해서 알아본다. 이번 실습에서는 실제 운영환경과 유사한 환경을 구성하기 위하여 로컬 컴퓨터에 가상화 머신을 사용하여 Master Node 1, Data Node 4개의 Multi Node 구성한다. 기본적인 가상화 환경 설정은 이번 포스트에서는 다루지 않는다.

Node

OS

RAM

DISK

ETC

HD-Master

Centos 7

5GB

50GB

Open JDK 1.8

HD-Node1

Centos 7

2GB

20GB

Open JDK 1.8

HD-Node2

Centos 7

2GB

20GB

Open JDK 1.8

HD-Node3

Centos 7

2GB

20GB

Open JDK 1.8

HD-Node4

Centos 7

2GB

20GB

Open JDK 1.8

 

[OS Installation]

CDH 구성할 환경의 OS Centos 7 버전을 사용하며, 아래 링크에서 다운로드 받아 설치 있다.

·       Download Centos : https://www.centos.org/download/

 

OS 설치 하였으면 기본적인 환경 세팅을 한다. 아래 명령어는 리눅스 설치 필자가 기본적으로 설치하는 패키지 이다.

--Default Setting and yum update

yum upgrade

yum update

 

yum groupinstall "base"

yum groupinstall "development tools"

 

yum intsall net-tools

 

실제 운영환경에서는 보안 정책에 따라 방화벽을 사용해야하지만, 실습에서는 예상하지 못한 사이드이펙트 발생을 최소화하기 위해 방화벽을 OFF 하도록 한다.

--Firewall Disable

yum install firewalld

 

--SELINUX값만 disabled로 변경

vi /etc/sysconfig/selinux

(아래 명령부분을 disabled 로 수정)

SELINUX=disabled

 

--vi 모드에서 실행

setenforce 0

 

systemctl disable firewalld (또는systemctl stop firewalld )

 

-- 아래 명령 실행 후  runnuing 이면 reboot 진행

firewall-cmd --state

 

VM 복사하여 사용하였을 경우 아래 명령을 사용하여 hostname 변경할 있다.

--Hostname Change

hostnamectl set-hostname hd-master

 

기본적인 설정이 완료 되었으면 Python 버전을 확인한다. Centos 7에는 기본적으로 Python 2.7.X 버전이 설치되어 있다.

--Check Python Version

>>python --version

Python 2.7.5

 

전체 노드의 hosts 파일에 node 정보를 입력한다. 아래 IP 필자의 CDH 설치 환경이므로 사용자에 맞게 수정하여 사용한다.

--host setting

vi /etc/hosts

 

172.17.139.91 hd-master

172.17.139.90 hd-node1

172.17.139.87 hd-node2

172.17.139.86 hd-node3

172.17.139.83 hd-node4

 

 

[Master Node]

Master Node에서 Cloudera Manager 환경을 설치하여 CDH Manager Web UI 사용하여 CDH Environment 구축한다. CDH Install 대한 자세한 내용은 아래 공식 가이드를 참고할 있도록 한다.

·       Official Installation Guide : https://docs.cloudera.com/documentation/enterprise/6/latest/topics/installation.html

 

CDH 다운로드 있도록 Repository 설정하고, JDK 설치한다. 오라클 JDK 경우 상용라이선스이기 때문에 필자는 Open JDK 설치 하였다. 그리고 Cloudera Manager Packages 설치한다.

--Configure a Repository

yum-config-manager –add-repo https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/cloudera-manager.repo

 

--Install open jdk

yum install java-1.8.0-openjdk-devel

 

--install Cloudera Manager Pakckages

yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

 

Hadoop Echo System에서 사용할 각종 메타 데이터를 저장하기 위해 MySQL 설치한다. 사용자 기호에 따라 MariaDB, PostgreSQL, Oracle 설치할 있다.

--Install and Configure MySQL for Cloudera Software

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

sudo yum update

sudo yum install mysql-server

sudo systemctl start mysqld

sudo systemctl stop mysqld

 

MySQL 서비스 환경을 구성한다. 사용자의 시스템 리소스에 따라 my.cnf 환경변수를 수정하여 사용할 있도록 한다. my.cnf 기능에 대한 설명은 이번 포스트에서는 생략한다.

--my.cnf 수정

vi /etc/my.cnf

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

transaction-isolation = READ-COMMITTED

# Disabling symbolic-links is recommended to prevent assorted security risks;

# to do so, uncomment this line:

symbolic-links = 0

 

key_buffer_size = 32M

max_allowed_packet = 32M

thread_stack = 256K

thread_cache_size = 64

query_cache_limit = 8M

query_cache_size = 64M

query_cache_type = 1

 

max_connections = 550

#expire_logs_days = 10

#max_binlog_size = 100M

 

#log_bin should be on a disk with enough free space.

#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your

#system and chown the specified folder to the mysql user.

log_bin=/var/lib/mysql/mysql_binary_log

 

#In later versions of MySQL, if you enable the binary log and do not set

#a server_id, MySQL will not start. The server_id must be unique within

#the replicating group.

server_id=1

 

binlog_format = mixed

 

read_buffer_size = 2M

read_rnd_buffer_size = 16M

sort_buffer_size = 8M

join_buffer_size = 8M

 

# InnoDB settings

innodb_file_per_table = 1

innodb_flush_log_at_trx_commit  = 2

innodb_log_buffer_size = 64M

innodb_buffer_pool_size = 4G

innodb_thread_concurrency = 8

innodb_flush_method = O_DIRECT

innodb_log_file_size = 512M

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

sql_mode=STRICT_ALL_TABLES

 

MySQL 서비스를 시작하고, MySQL Security 환경을 세팅한다. 아래 스크립트에서 Y/N 세팅에 대한 Y/N 답변 순서이다.

--MySQL Start

sudo systemctl enable mysqld

sudo systemctl start mysqld

 

--setting for mysql security

sudo /usr/bin/mysql_secure_installation

 

y

y

n

y

y

 

MySQL 설치가 완료되었으면 Hadoop Echo System에서 사용할 JDBC 드라이버를 설치 한다.

--mysql jdbc install

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

tar zxvf mysql-connector-java-5.1.46.tar.gz

sudo mkdir -p /usr/share/java/

cd mysql-connector-java-5.1.46

sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

 

--Tip : JDBC에러로 Hive 메타스토어 설치 실패시 아래 버전으로 설치

yum install http://repo.mysql.com/yum/mysql-connectors-community/el/7/i386//mysql-connector-java-8.0.16-1.el7.noarch.rpm

 

 

MySQL 접속하여 Hive, Oozie, Hue에서 사용할 데이터베이스를 생성하고 권한을 부여한다. 이번 실습에서는 편의상 root 권한을 사용하였다.

-Connect to myslq and Installation for Database

mysql -u root -p

 

CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

CREATE DATABASE oozie_oozie_server DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

 

GRANT ALL PRIVILEGES  ON *.* TO 'root'@'%' IDENTIFIED BY 'YOURPASSWORD';

 

 

Cloudera Server 설치하고 CDH 서비스를 실행한다.

--Preparing the Cloudera Manager Server Database

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

 

--Install Cloudera  server

yum install cloudera-manager-daemons cloudera-manager-server cloudera-manager-server-db-2 -y

 

--Start for cloudera DB and Server daemon

service cloudera-scm-server-db start

service cloudera-scm-server start

 

정상적으로 서비스가 실행되면 Web browser에서 Manager UI 접근할 있다. Web Service 주소는 HD-Master 노드의 IP:7180 으로 접속한다.

--Connect to Cloudera Manager UI

172.17.139.91:7180/

 

 

 

[Data Node]

JDK 설치만 하면 나머지 작업은 CDH Manager 에서 자동으로 필요한 패키지를 설치한다.

--Install open jdk

yum install java-1.8.0-openjdk-devel

 

 

[CDH Manager Setting]

Cloudera Manager Web UI에서 클러스터 환경 구성 사용자에게 필요한 Echo System 구성할 있다. 아래 그림은 진행 사항을 캡처한 화면으로 사용자마다 화면의 내용이 조금씩 다를 있기 때문에 기본적인 참고 용도로 사용한다. Manager 접속하며 기본 계정 비밀번호는 admin 입력한다.

 

 

 

실습환경에서는 무료 버전인Cloudera Express 선택한다. Enterprise Trial 사용할 경우 60 지나면 자동으로 Express 버전으로 동작한다.

 

클러스터에서 사용할 이름을 지정한다.

 

클러스터를 구성할 Host 입력한다. 입력 방식은 아래 그림을 참고한다. (VM 여러번 설치하고 실습하는 과정에서 일부 스크린샷의 IP Node 정보가 실습 환경이 다를 있습니다.) 노드 통신이 정상적으로 확인되면 아래와 같이 서버 목록이 자동으로 나타난다.

 

Package 사용자가 직접 설치할 수도 있으나 권장사항인 Use Parcels 선택하여 사용하였다. 학습을 위한 환경이기 때문에 처음에는 기본 세팅을 사용하도록 하며 (예상치 못한 문제 발생 방지) 익숙해지면 사용자 커스터마이징을 하는 것을 권장한다.

 

JDK 설치에서는 체크박스를 선택하지 않도록 한다. 이미 CDH 설치 과정에서 Open JDK 설치 하였기 때문에 해당 스텝은 스킵하도록 한다. (Oracle JDK 경우 상용 라이선스 이므로 주의한다.)

 

실습환경에서는 root 계정을 모두 사용 사용으로 설정하였다.

 

노드에 Agent 설치되는데, 설치 시간이 조금 오래 걸린다. 만약 단계에서 설치 에러가 발생한다면 전체 Retry 하지 말고 노드 옆의 Retry 사용하여 개별 설치를 진행하면 성공적으로 설치된다. (필자의 경우 실습할때마다 성공과 실패가 랜덤하게 발생하였음)

 

Cloudera Agent 설치가 완료되면 Parcels 인스톨 과정이 시작된다. 외부 네트워크에서 필요한 파일을 다운로드 받고 Node 자동으로 설치한다.

 

클러스터 세팅이 완료되었으면 Inspect 상태를 나타내는데, 마지막 항목을 클릭하여 마무리 한다.

 

클러스터 구축 필요한 Echo System 설치하는데, 마지막의 Custom Services 선택하여 사용자에 필요한 환경을 설치 있도록 한다. 필자의 경우 아래 리스트의 서비스를 설치 하였다.

·       hdfs

·       hue

·       impala

·       yarn

·       spark

·       hive

·       hbase

·       zookeeper

·       oozie

 

서비스에 대한 Role 어느 Node에서 담당할지 선택한다. 안정적인 HA구성을 위해서는 다른 Node 할당할 있도록 한다. 특히 Name Node 경우 HDFS 데이터에 대한 정보를 보관하고 있기 때문에 매우 중요하다. 또한 Hadoop에서  SPOF (Single Point Of Failure) 이기 때문에 HA 구성이 필수이다. 실제 운영 환경에서는 롤에 따라 노드를 배분해야 하지만 실습에서는 기본 선택을 사용할 있도록 한다.

 

서비스에서 사용할 메타데이터를 저장하는 데이터베이스 연결정보를 입력한다. 필자의 경우 MySQL 설치하였으며 Database Hostname에서 MySQL 포트(3306) 변경하여 사용한다.

 

HDFS 설정에서는 분산 파일 단위의 크기를 설정할 있으며, 기본 크기는 128MB이다.

 

 

 

서비스 설치가 완료되면 Cloudera Manager에서 아래와 같이 서비스에 대한 상태를 모니터링 있다. 대시보드에서 추가 서비스를 설치할 수도 있으며 각종 트러블 슈팅에 필요한 로그를 확인할 있다.

 

 

 

[참고자료]

·       Download Centos : https://www.centos.org/download/

 

 

 

 

2019-11-13 / Sungwook Kang / http://sungwookkang.com

 

Hadoop, Cloudera Hadoop, CDH, 하둡, 클라우데라 하둡, 스팍, Spark, YARN, Hadoop 2.0, Cloudera Manager

'SW Engineering > Hadoop' 카테고리의 다른 글

HDFS 블록  (0) 2019.11.16
HDFS 파일 저장(로컬 업로드)  (0) 2019.11.14
하둡실행  (0) 2015.07.22
하둡 환경설정 파일 수정  (0) 2015.07.22
하둡 인코딩 방식 설정  (0) 2015.07.22

+ Recent posts