(3) HDP 구축 및 서비스 배포

 

-설치가능한 최신버전인 HDP-3.1.4 선택후 next

 

 

 

 

Target hosts는 앞서 설정한 hosts에서 부여한 도메인 주소를 입력

#cat /etc/hosts

SSH 공개키를 입력(------BEGIN RSA~~ 부터 ----END ~~ KEY-----까지 모두 다 붙여넣어야함)

#cat ~/.ssh/id_rsa

ambari 계정 및 포트 입력

 

 

이상없이 진행된다면 모든 노드들의 status가 success로 나오고 fail이 뜰 경우 클릭하면 무엇이 문제인지 확인이 가능하다. 그동안 진행한 과정에서 누락 또는 실수로 인한 이슈들이 주로 나올 수 있다.(기본 도구들(자바, 파이썬)의 경로나 방화벽, 권한문제가 있을 가능성이 높음)

 

 

이후 기본 HDFS 위에 원하는 서비스들을 올릴 수 있다. 서비스는 이후에 얼마든지 추가 변경 삭제가 가능하기 때문에 테스트 과정에서는 몇 개만 선택해서 설치함

 

 

- 서비스 노드의 배치과정에서는 서버들의 노드 수와 스펙에 맞춰 적절히 서비스들을 분산시키자.

- 특히 Hive와 Spark과 같이 서로 의존성이 높은 서비스들은 요구사항을 꼭 확인하고 배치시켜야한다. 이를 위해서는 설치할 서비스에 대한 사전 지식도 반드시 필요할 것이다. (본 테스트과정에서는 무시하고 그냥 설치했음)

 

 

- 각 노드별로 SlavesClients를 할당한다.

- 노드 개수와 HW 스펙에 맞춰 MasterSlave를 적절히 분배해야 함(이것을 갖추는게 전문가의 길)

- 아래 설정은 테스트로 많은 고민없이 선택된 것임(아주 기본적인 사항으로 Master노드와 Slave 노드는 분리하도록 권고하고있다.)

 

 

- 각 서비스별 추가 설정해야할 항목들을 입력해준다. 주로 서비스 계정 설정과 Default DB 정보들을 입력하게 된다.

 

 

- 관련된 모든 이슈들을 해결하고 마지막 Deploy를 클릭

 

 

- 설치 완료 후 실행에 문제가 있는 서비스 몇 개가 있음을 확인하고 NEXT

- 설치상의 문제가 아니기 때문에 이후에 Trouble shooting하면 됨.

- Ambari 메인 화면에서 모든 서비스가 정상적으로 돌아가는지 확인할 수 있다

: 모든 경고(알람)의 경우 클릭하여 상세 로그를 확인할 수 있음

: 이후 원하는 서비스를 추가 변경 삭제할 수 있음

 

 

 

 

 

 

 

 

 

 

 

 

 

(2) HDP, Ambari-2.7.4 설치를 위한 CentOS 기본 설정

1. 설치 관련 이슈

- HDP를 배포하던 HortonworksCloudera와 합병하면서 HDP 관련 공식 문서들은 cloudera 홈페이지에서 확인할 수 있으며 다음 링크를 통해 확인 가능하다.

https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/ch_Getting_Ready.html

- Ambari 버전 별로 설치 매뉴얼을 확인할 수 있으며 현재 기준으로 최신버전인 2.7.5 버전은 설치 과정에서 cloudera 계정인증 과정이 필요하다. 반면 한 단계 낮은 2.7.4 버전은 인증이 필요 없기 때문에 이를 설치함

 

1. FDQN을 위한 hosts 파일 수정

- HDP 설치할 때 각 노드들을 접근하는 방식으로 FQDN(Fully Qualified Domain Name)를 사용함

- 모든 노드가 동일하게 설정되어야함

- /etc/hosts 파일을 편집기로 열어서 맨 밑에 각 노드들에 대한 IPhostname을 설정

             192.168.0.14 hdp01 hdp01.test.com

             192.168.0.15 hdp02 hdp02.test.com

             192.168.0.16 hdp03 hdp03.test.com

             192.168.0.14 hdp01 hdp01.test.com             
             192.168.0.15 hdp02 hdp02.test.com             
             192.168.0.16 hdp03 hdp03.test.com

- hosts 파일 적용을 위해 재부팅

 

2. ambari 설치를 위한 계정 생성 및 권한 부여

- ambari-server ambari-agent 설치에 사용될 계정으로 root가 아닌 별도의 계정을 생성하여 관리하는게 좋음. HDP를 설치할 모든 노드에게 동일하게 설정 필요함

#adduser ambari
#passwd ambari

- ambari에게 root권한 부여

 

#vi /etc/sudoers

아래 설정 추가

ambari  ALL=NOPASSWD:             ALL

 

 

 

3. 모든 노드가 서로 자유롭게 접속 기능하도록 공개키 생성 및 공유 ssh-keygen

- ambari-server가 설치될 메인노드에서 ssh-keygen으로 공개키 생성

- 먼저 ambari 계정으로 변환

#su ambari
#ssh-keygen

엔터->엔터->엔터->키 생성

 

 

- 생성된 키를 ambari-agent가 설치될 나머지 모든 노드에 복사하여 공유

#ssh-copy-id ambari@hdp02
#ssh-copy-id ambari@hdp03

yes -> ambari 비밀번호 -> 복사 끝

 

 

 

- 이후 hdp01 서버에서 ssh 명령어를 통해 다른 노드를 접속했을 때 비밀번호를 물어보지 않는다면 정상적으로 설치된 것임

 

4. 기본 도구 설치 Python. Java, Mysql

: pythonjava는 모든 노드에 동일한 버전과 경로에 설치되어있어야 함

- Ambari 가이드에 따르면 파이썬 2.7 이상 버전이 설치되어야 함

: CentOS7 에는 python 2.7.5 버전이 기본 설치되어 있음

- 자바는 1.8버전 이상(Oracle_JDK or Open_JDK 둘 다 설치 가능함 확인)

: 모든 노드에 동일한 버전 동일한 경로로 설치해야함

: 라이선스 문제가 없는 Open-JDK-1.8 버전을 설치함

 

#yum install java-1.8.0-openjdk-devel.x86_64

- JAVA_HOME 환경 변수 추가

javac의 경로 찾기

 

#which javac

검색된 위치의 원본 위치 찾기

#readlink –f /usr/bin/javac

한번 더 검색된 위치의 원본 위치 찾기

#readlink –f /etc/alternatives/javac

원본 경로 = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/javac

편집기로 /etc/profile 파일을 열어서 맨 밑에 아래 내용을 추가

             export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
             export PATH=$PATH:$JAVA_HOME/bin
             export CLASSPATH="."

저장한 내용을 적용

 

#source /etc/profile

 

- HiveOozie와 같이 해당 서비스의 관리용 DB가 필요한 경우를 위한 DB가 설치되어 있어야함

: 여러 노드 중 한 노드에 설치해 공유할 수 있고 해당 서비스의 Master가 될 노드에 개별적으로 설치해 관리해도 됨

: 최신버전인 MySQL8.0 community 버전을 설치해 봤으나 ambari 테이블 중 member테이블이 생성되지 않아서 진행이 되지 않았다. 찾아보니 호환성에 문제가 있다고 한다. mysql5.7 버전을 추천한다.

CentOS에 기본등록된 mariadbmysql로 바꿔 설치하기 위해 설치파일 다운로드 후 repository 등록

#sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
#sudo yum install mysql-community-server

설치 완료 후 root 계정으로 전환하여 아래 임시 비밀번호를 확인하자. 아무리 검색해도 임시비밀번호가 나오지 않아서 헤맸었는데 계정을 root로 바꾸어 검색하니 출력되었다.

또는, service mysqld start 로 한번 실행해 주면 로그파일에 내용이 생성된다.

 

#grep 'temporary password' /var/log/mysqld.log

 

혹시나 로그파일이

그리고 mysql의 기본적인 보안설정을 할 수 있는 명령어를 실행

 

#/usr/bin/mysql_secure_installation

비밀번호를 변경할 수 있는데 정책이 강화되어서 8자리 이상에 대문자랑 숫자가 포함되어야함. 일단 그렇게 하고 나중에 변경하면 됨

{Abcd!234}로 변경

암호 정책을 낮추기 위해 mysql 설정 파일을 다음과 같이 수정

 

#vi /etc/my.cnf

아래 2줄 추가

[mysqld]
validate_password-policy=LOW
validate_password-length=4

 

mysql 서비스를 재시작하고

 

#sudo systemctl restart mysqld

mysql 접속 후 ambari 계정 생성(외부 접속도 허용해주자)

HDP 서비스들 중 hive는 기본으로 설치가 되는데 이때 DB와 계정이 필요하니 함께 생성하자

#sudo mysqld u root p

#sudo mysqld –u root –p
mysql>create user 'ambari'@'localhost' identified by 'ambari';
mysql>grant all privileges on *.* to 'ambari'@'localhost' identified by 'ambari' with grant option;
mysql>create user 'ambari'@'%' identified by 'ambari';
mysql>grant all privileges on *.* to 'ambari'@'%' identified by 'ambari' with grant option; 
mysql>flush privileges;            
mysql>create database hive;         
mysql>create user 'hive'@'localhost' identified by 'hive';       
mysql>grant all privileges on *.* to 'hive'@'localhost' identified by 'hive' with grant option;  
mysql>create user 'hive'@'%' identified by 'hive';         
mysql>grant all privileges on *.* to 'hive'@'%' identified by 'hive' with grant option;
mysql>flush privileges;

 - JDBC Connector 설치 및 확인

#sudo yum install mysql-connector-java*

#sudo yum install mysql-connector-java*

설치가 완료되면 아래 경로에 커넥터가 링크되어 있음

 

5. Ambari 설치

: Cloudera 계정 인증이 필요 없는 ambari-2.7.4 버전을 다운로드받아 설치

오랜만에 다시 확인해보니 모든 버전에서 Cloudera 계정 인증을 필요로하게 되었다.

아래 미러 사이트에서 소스를 직접 받아 빌드할 수 있으니 참고하자.

https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.7.4 

 

Installation Guide for Ambari 2.7.4 - Apache Ambari - Apache Software Foundation

Build and install Ambari 2.7.4 Refer Ambari Development for prerequisites and additional information on how to build Apache Ambari. Step 1: Download and build Ambari 2.7.4 source Go to http://www.apache.org/dyn/closer.cgi/ambari/ambari-2.7.4 and find

cwiki.apache.org

다운로드를 위해 wget 패키지 설치

#sudo yum install wget
#sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.4.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
#sudo yum repolist

 

#sudo yum install ambari-server

Importing GPG-KEY 여부: y 눌러 진행

패키지 설치 완료

-인스톨 전에 앞에서 설치한 JDBC 커넥터 경로를 지정

#sudo ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

설정 완료

 

ambari 서버 설치 전 mysql에서 Ambari table 생성

 

mysql>create database ambari;
mysql>use ambari;
mysql>SOURCE /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

 마지막으로 인스톨 시작

 

#sudo ambari-server setup

이대로 ambari-server를 실행하면 문제없이 되어야 한다..

 

#sudo ambari-server start

 

그런데 에러메시지가 떠서 확인해보니 mysqldb time-zone이 맞지않아 에러가 발생하는 것 같다.

ambari-server start 에러 로그 확인

 

#vi /etc/ambari-server/conf/ambari.properties

 

DBtimezoneAsia/Soul로 변경하면 해결되는 것 같은데, 기본 정보가 mysql table에 없어서 이를 따로 설치해야 한다. 아래 링크에서 본인 버전에 맞는 sql 파일을 다운로드받아 설치

- https://dev.mysql.com/downloads/timezones.html

 

 

- mysql db를 선택하고 쿼리를 실행, 아래와 같이 검색이 되면 설치가 정상적으로 된 것임.

 

select * from mysql.time_zone_name where NAME LIKE '%Seoul';

- 이후 /etc/my.cnf 파일에 다음을 추가

default-time-zone=Asia/Seoul

-다시 ambari-server start! 성공 메시지가 뜨면 해당 도메인의 8080포트로 ambari-server 접속이 가능함

- 기본 아이디 비번은 admin/admin

 

이상 설치 완료!

ambari-server start 에러와 관련된 모든 메시지는 아래 경로에서 확인 가능하니 문제가 있다면 꼭 확인해보면서 해결

#vi /etc/ambari-server/conf/ambari.properties

 

 

 

 

 

 

 

 

 

 

(1) CentOS 7.7 설치 및 기본 환경 세팅

: 앞서 Ubuntu 16.04.6 LTS 버전도 동일한 방식으로 설치됨을 확인하고 안정적인 운용을 위해 CentOS로 재 설치 하면서 문서 정리를 해봄

 

1. 3대의 가상머신 생성

- xcp-ngCentOS7 가상머신 3대 생성

- 메모리 8G/8G/4G 할당

2. CentOS7 최소설치(기본 터미널만)

- Root 암호 설정

- 재부팅

 

- SMBus Host Controller not enabled! 에러

  xcp-np와 같은 가상머신에서 사용할 때 발생하는 에러로 다음과 같이

  /etc/modprobe.d/dccp-blacklist.conf 파일을 편집기로 열어

  맨 밑에 다음 문구를 추가하고 재부팅

#blacklist i2c-piix4

3. 네트워크 설정

- 별도의 네트웍 설정 하지 않은 경우 yum 실행이 안됨

#dhclient 

위 명령어를 실행하면 자동 IP 할당가능 하지만 재부팅하면 다시 초기화됨

따라서 IP 고정이 필요함 아래 다음과 같이

/etc/sysconfig/network-scripts/ifcfg-{이더넷ID} 파일을 편집기로 열어

아래 두줄은 수정
ONBOOT=YES
BOOTPROTO="static"

아래 5줄은 추가
IPADDR="192.168.0.21"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="168.126.63.1"
DNS2="168.126.63.2"

그냥 DHCP 자동설정으로 하고싶으면 ONBOOT=YES 이것만 수정해도 됨(테스트용도)

이후 네트워크 재시작 또는 시스템 재시작

 

#systemctl restart network

다음 명령어로 할당된 IP 확인

#ip addr

- 노드별 시간 동기화

#yum install ntp
#systemctl start ntpd

시스템 자동 시작

#systemctl enable ntpd

 

4. OS 업데이트

- OS 기본 업데이트 수행

#yum upgrade

5. 방화벽 해제

- 특정 방화벽 포트만 허용해도 되지만, 원활한 ambari-serverambari-agent 설치를 위해서는 모든 방화벽이 열려있는게 좋음(추후 사용할 서비스 포트를 파악해 특정 포트만 오픈하면 될 듯)

다음은 CentOS7의 방화벽 해제 명령어

 

# systemctl disable firewalld

다음은 특정 포트만 허용하는 명령어

#firewall-cmd --permanent --zone=public --add-port=8080/tcp
#firewall-cmd --reload

 

6. SSH를 이용한 각 노드들 원격 접속

- 이후 여러 노드들에게 같은 작업(명령어)이 반복되기 때문에 SSH 터미널을 여러개 열어서 한번에 작업을 진행

 

2013년 12월 24일 작성 글 아래 참조


http://blog.syszone.co.kr/3285

+ Recent posts