CDH 클러스터 6.3.2 + CM6.3.1 오프라인 설치 및 배포 실용적인 보모 수준의 자세한 튜토리얼

목차

1. 서문

CDH 소개

CM 소개

Apache Hadoop 대신 CDH를 선택하는 이유

CDH 설치 지침

2. 준비작업

전제 조건

테스트 서버 준비

소프트웨어 환경 준비

CDH 설치 패키지 준비

CDH6.3.2 설치 패키지 보기

CM6.3.1 설치 패키지 보기

JDK1.8 설치 패키지 보기

환경 구성

고정 네트워크 IP 구성

 호스트 이름 수정

호스트 구성 수정

비밀번호가 필요 없는 SSH 로그인 구성

키 쌍 생성

키 쌍 보기

비밀번호 없는 로그인 확인

원격 일괄 작업 pssh 도구

방화벽 끄기

 SELinux 비활성화

스왑 구성

 투명 페이지 닫기

 최대 프로세스 수 및 최대 파일 핸들 수 구성

시간을 비활성화

클러스터 클럭 동기화

JDK 설치

MySQL 설치

MySQL 배포

MySQL 구성

데이터베이스 및 사용자 초기화

JDBC 드라이버 설치

비공개 Yum 소스 구축

httpd 서비스 설치

웹 서비스 구성

로컬 저장소 소스 만들기

3. CM6.3.1 설치 단계

클러스터 역할

CM6.3.1 설치

cloudera 관리자 서버 설치

scm 데이터베이스 초기화

 cloudera 관리자 서버 시작

4. CDH 클러스터 6.3.2 설치 단계

클러스터 설치 마법사

클러스터 설치 설정


1. 서문

관방문관:Cloudera Enterprise 6.3 Documentation

CDH 소개

CDH는 Cloudera에서 개발하고 유지 관리하는 Apache Hadoop 기반의 오픈 소스 소프트웨어 배포판입니다. CDH는 통합 일괄 처리, 대화형 SQL 및 대화형 검색, 역할 기반 액세스 제어를 위한 Hadoop 솔루션을 제공합니다. 구성 요소에는 HDFS(Hadoop 분산 파일 시스템), 분산 컴퓨팅 프레임워크(MapReduce) 및 Hive와 같은 기타 관련 오픈 소스 구성 요소가 포함됩니다. HBase, 임팔라 등 CDH의 목표는 빅데이터 처리 및 분석 프로세스를 단순화하여 기업이 빅데이터를 더 잘 활용하여 통찰력과 가치를 얻을 수 있도록 하는 것입니다.

CM 소개

CM은 CDH 클러스터를 관리하고 모니터링하기 위해 Cloudera에서 제공하는 중앙 집중식 관리 도구입니다. CM은 관리자가 CDH 클러스터를 구성, 배포 및 모니터링하는 데 사용할 수 있는 직관적인 웹 인터페이스를 제공합니다. CM은 또한 관리자가 CDH 클러스터를 더 잘 관리하고 유지하는 데 도움이 되는 자동 배포, 오류 진단, 경보 알림과 같은 일부 고급 기능을 제공합니다. CM 관리자를 통해 손쉽게 클러스터 구성 관리, 클러스터 상태 모니터링, 클러스터 유지 관리 작업, 성능 튜닝 등의 작업을 수행할 수 있습니다.

Apache Hadoop 대신 CDH를 선택하는 이유

CDH와 Apache Hadoop 비교
특징 CDH 아파치 하둡
기능적 포괄성 다양한 빅데이터 처리 및 분석 요구 사항을 지원하기 위해 Hive, HBase, Impala 등과 같은 광범위한 구성 요소와 도구를 제공합니다. 고급 데이터 처리 및 분석을 위해 다른 구성 요소 또는 도구를 사용해야 하는 핵심 분산 스토리지(HDFS) 및 컴퓨팅(MapReduce) 기능을 제공합니다.
관리 도구 중앙 집중식 관리 및 모니터링 기능을 제공하고 자동화된 배포, 장애 진단, 경보 알림 등을 지원하는 Cloudera Manager(CM)가 포함되어 있습니다. Apache Hadoop은 기본적으로 유사한 중앙 집중식 관리 도구를 제공하지 않으며 일반적으로 관리 및 모니터링을 위해 기타 타사 도구가 필요합니다.
상업적 지원 Cloudera는 기술 지원, 교육, 컨설팅을 포함한 상업적 지원과 서비스를 제공합니다. Apache Hadoop은 공식적인 상업적 지원이 없는 오픈 소스 프로젝트이지만 관련 지원 및 서비스를 제공하는 타사 회사가 많이 있습니다.
개발 속도 CDH는 상대적으로 빠르게 발전하며 Cloudera에서 각 버전을 테스트하고 검증합니다. 오픈 소스 프로젝트인 Apache Hadoop에는 더 많은 커뮤니티 기여자가 있으므로 더 자주 업데이트하고 새로운 기능을 도입하여 더 빠르게 개발됩니다.

요약하면, CDH는 보다 포괄적이고 더 잘 사용되는 기능과 지원 관리 도구를 제공하여 빅 데이터 처리 및 분석을 더욱 단순화하고 중앙 집중화합니다. 일반적으로 클러스터 규모가 클수록 클러스터 관리, 운영 및 유지 관리 능력에 대한 요구 사항도 높아지며, 이때 CDH가 재생할 수 있는 가치도 더욱 커집니다.

CDH 설치 지침

Cloudera Enterprise Edition은 유료입니다. 돈이 부족하지 않고 기술 지원이 부족하지 않다면 구매를 고려해 볼 수 있습니다. Cloudera Community Edition은 오픈 소스이며 무료이며, 풍부한 커뮤니티 문서와 리소스를 갖추고 있습니다. 적합합니다. 소규모 클러스터 배포용이지만 Cloudera의 공식 발표에 따르면 2021년 7월부터 Cloudera Community Edition의 업데이트 및 릴리스가 중단되었으며 CDH 6.3.2가 Cloudera Community Edition의 마지막 무료 버전이 될 것입니다. 그리고 2021년 2월 1일부터 이전 버전 다운로드를 포함한 모든 CDH 및 Cloudera Manager에는 사용자 이름과 비밀번호가 필요합니다.즉, 사용자는 Cloudera 제품을 구독하고 해당 승인을 받아야 다운로드할 수 있습니다. 따라서 설치 및 배포를 위해 오프라인 패키지를 사용하겠습니다. 본 문서에서는 CDH6.3.2+CM6.3.1을 예로 들어 빅 데이터 클러스터의 설치 및 배포 프로세스를 자세히 소개합니다. 이 문서의 오프라인 설치 패키지는 누구나 무료로 다운로드하여 사용할 수 있습니다.늙은 여러분, 단어를 쓰는 것이 쉽지 않습니다. 좋아요와 저장을 잊지 마세요. 길을 잃지 않도록 팔로우하세요!

2. 준비작업

전제 조건

테스트 서버 준비

이 문서에서는 세 개의 테스트 서버를 예로 들어 루트 사용자로 로그인합니다. 노드 구성은 다음과 같습니다.

테스트 서버 구성 정보
일련번호 주인 IP CPU 메모리 디스크 hdfs 역할
1 노드1 192.168.5.10 16C 40G 512G 시스템 디스크(xfs) + 1T 데이터 디스크(ext4)

네임노드1/

데이터노드

2 노드2 192.168.5.11 16C 40G 512G 시스템 디스크(xfs) + 1T 데이터 디스크(ext4)

네임노드2/

데이터노드

노드3 192.168.5.12 16C 40G 512G 시스템 디스크(xfs) + 1T 데이터 디스크(ext4) 데이터노드

소프트웨어 환경 준비

기본 소프트웨어 환경 정보
일련번호 소프트웨어 이름 버전 정보 주목
1 Centos 운영 체제 배포 CentOS Linux 릴리스 7.9.2009 x86_64 CDH에는 7.2 이상이 필요합니다.
2 MySQL 데이터베이스 5.7.43 x86_64 CDH6은 5.7 이상을 권장합니다. utf8mb4 인코딩 대신 utf8 인코딩을 사용해야 합니다.
JDK 1.8.0_181 x86_64 CDH6은 더 이상 JDK1.7을 지원하지 않으며 1.8u181을 권장합니다.
4 파이썬 2.7.5
5 CDH 6.3.2
6 센티미터 6.3.1

CDH 설치 패키지 준비

CDH, CM, JDK 설치 패키지를 미리 다운로드해야 합니다. 현재 공식에서는 무료 다운로드를 제공하지 않습니다. 모든 사람이 사용할 수 있도록 Baidu Netdisk에 업로드했습니다. 링크 주소: CDH 모든 설치 패키지 , 링크가 실패하면 메시지를 남기거나 개인 메시지를 보내주세요. 네트워크 디스크의 cdh 폴더를 다운로드하여 로컬에 저장하세요.

CDH6.3.2 설치 패키지 보기
[root@node1 cdh]# tree CDH6.3.2/
CDH6.3.2/
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
└── manifest.json

0 directories, 4 files
CM6.3.1 설치 패키지 보기
[root@node1 cdh]# tree CM6.3.1
CM6.3.1
├── allkeys.asc
├── cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
└── enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm

0 directories, 6 files
JDK1.8 설치 패키지 보기
[root@node1 cdh]# tree JDK
JDK
└── oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

0 directories, 1 file

환경 구성

고정 네트워크 IP 구성

Centos7 정적 네트워크 구성 파일은 /etc/sysconfig/network-scripts/ifcfg-<interface>입니다. 내 로컬 네트워크 인터페이스의 이름은 p2p1입니다. 모든 노드의 네트워크 구성을 수정합니다. 구체적인 매개변수는 다음과 같습니다.

[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-p2p1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="p2p1" # 网络接口名称
UUID="31b15de1-225f-4540-b135-b80d5da6f335"
DEVICE="p2p1"
ONBOOT="yes" # 设置开机启动,确保网络配置有效,否则无法建立网络连接
IPADDR="192.168.5.10" # 静态IP地址
PREFIX="24" # 子网掩码,相当于255.255.255.0
GATEWAY="192.168.5.1" # 默认网关IP地址
DNS1="192.168.1.1" # 首选DNS服务器IP地址,上网必备
IPV6_PRIVACY="no" # 禁用IPV6

네트워크를 다시 시작하면 즉시 적용됩니다.

systemctl restart network
 호스트 이름 수정

모든 노드의 호스트 이름을 수정하면 노드를 다시 시작한 후 즉시 적용됩니다.

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
호스트 구성 수정

모든 노드의 IP 및 도메인 이름 매핑 관계 구성

# vim /etc/hosts
192.168.5.10 node1
192.168.5.11 node2
192.168.5.12 node3
비밀번호가 필요 없는 SSH 로그인 구성

ssh-keygen 은 SSH 키 쌍을 생성하고 관리하는 데 사용됩니다. SSH 키 쌍은 공개 키와 개인 키로 구성됩니다. 공개 키는 SSH 인증 과정에서 보안 인증을 위해 원격 서버를 제공하는 데 사용되며 일반적으로 authorized_keys 파일에 추가되고 개인 키는 기본적으로 로컬에 저장됩니다. 루트 사용자는 기본적으로 개인 키 쌍을 /root/에 저장합니다..ssh目录下。

创建密钥对

node1和node2节点上生成ssh密钥对,执行ssh-keygen命令,过程如下:

# 一路回车,生成密钥对
[root@node1 ~]# ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AJWzRl9kwU3kbQ7C518oIKCmQdpvKNeQxiIvxo4ly/w root@node1
The key's randomart image is:
+---[RSA 2048]----+
|  . ..o. o+=o    |
| = . o+. oo...   |
|+ B o..+..+ + o  |
|o+ O  o... = + . |
|+o* +.  S   o o .|
|*B .         o . |
|o+            .  |
|  .              |
|   E             |
+----[SHA256]-----+
키 쌍 보기
[root@node1 ~]# ll .ssh
total 8
-rw-------. 1 root root 1675 Aug 22 09:06 id_rsa
-rw-r--r--. 1 root root  392 Aug 22 09:06 id_rsa.pub

공개 키를 각 노드에 복사합니다.이 머신을 예로 들면 실행 프로세스는 다음과 같습니다.

[root@node1 ~]# ssh-copy-id node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node1 (192.168.5.10)' can't be established.
ECDSA key fingerprint is SHA256:WoqiUZLXfc+dFxBBkVaC/hJybMxqwqwvuHCR1seMkLE.
ECDSA key fingerprint is MD5:f5:9e:e3:ba:f4:15:4d:aa:96:16:bc:df:4c:05:98:ac.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: 
Permission denied, please try again.
root@node1's password: # 首次需要输入密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node1'"
and check to make sure that only the key(s) you wanted were added.
비밀번호 없는 로그인 확인
[root@node1 ~]# ssh node2
Last login: Sun Aug 20 21:22:36 2023 from 192.168.5.117
원격 일괄 작업 pssh 도구

오픈 소스 도구인 pssh 도구를 사용하면 여러 서버에서 원격 일괄 작업 명령을 실행하여 클러스터 관리를 크게 단순화하고 효율성과 정확성을 높일 수 있습니다.

Node1 노드는 pssh 도구 패키지를 설치합니다.

# 下载
https://pypi.python.org/packages/source/p/pssh/pssh-2.3.1.tar.gz
# 解压
tar xvf pssh-2.3.1.tar.gz
# 安装
python setup.py install
# 验证
pssh --version

명령을 실행하기 전에 SSH 비밀번호 없는 로그인을 미리 구성하고 다음과 같이 확인하십시오.

[root@node1 ~]# pssh -H root@node2 date
[1] 10:43:30 [SUCCESS] root@node2

노드 파일 생성 및 모든 노드 구성

[root@node1 ~]# vim nodes
root@node1
root@node2
root@node3
방화벽 끄기

pssh 배치는 모든 노드 방화벽을 비활성화하고 끕니다.

[root@node1 ~]# pssh -h ./nodes -i 'systemctl disable firewalld'
[1] 10:50:18 [SUCCESS] root@node1
[2] 10:50:18 [SUCCESS] root@node2
[3] 10:50:18 [SUCCESS] root@node3
[root@node1 ~]# pssh -h ./nodes -i 'systemctl stop firewalld'
[1] 10:49:59 [SUCCESS] root@node1
[2] 10:49:59 [SUCCESS] root@node2
[3] 10:49:59 [SUCCESS] root@node3
 SELinux 비활성화

pssh 배치는 모든 노드의 /etc/sysconfig/selinux를 수정하고 영구적으로 비활성화합니다.

pssh -h ./nodes -i "sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux"

수정 성공 여부 pssh 일괄 확인

[root@node1 ~]# pssh -h ./nodes -i "cat /etc/sysconfig/selinux | grep SELINUX="
[1] 11:05:38 [SUCCESS] root@node1
# SELINUX= can take one of these three values:
SELINUX=disabled
[2] 11:05:38 [SUCCESS] root@node2
# SELINUX= can take one of these three values:
SELINUX=disabled
[3] 11:05:38 [SUCCESS] root@node3
# SELINUX= can take one of these three values:
SELINUX=disabled
스왑 구성

커널 매개변수 swappiness는 메모리가 부족할 때 메모리에 있는 데이터를 하드 디스크 스왑 공간(swap)으로 스왑하도록 시스템을 제어하는 ​​데 사용되며, 일반적으로 swappiness 값은 0에서 100 사이로 설정할 수 있습니다. 커널 버전 3.5 이상 및 Red Hat 커널 버전 2.6.32-303 이상의 경우 스와핑을 비활성화하는 대신 더 작은 값을 설정하는 것이 좋습니다.

pssh는 vm.swappiness=1을 모든 노드에 일괄적으로 추가하고 영구적으로 적용되도록 머신을 다시 시작합니다.

pssh -h ./nodes -i 'echo vm.swappiness = 1 >> /etc/sysctl.conf' # 永久生效配置
pssh -h ./nodes -i 'sysctl -p' # 动态加载使当前会话生效

 추가가 성공했는지 확인

[root@node1 ~]# pssh -h ./nodes -i "cat /etc/sysctl.conf | grep vm.swappiness"
[1] 11:26:41 [SUCCESS] root@node1
vm.swappiness = 1
[2] 11:26:41 [SUCCESS] root@node2
vm.swappiness = 1
[3] 11:26:41 [SUCCESS] root@node3
vm.swappiness = 1
 투명 페이지 닫기
[root@node1 log]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

RAC 환경에서 Transparent HugePages를 사용하면 비정상적인 노드 재시작 및 성능 문제가 발생할 수 있으며, Stand-alone 환경에서도 성능 문제가 발생할 수 있으므로 간단히 말해서 Transparent Huge Pages를 활성화하는 것은 권장되지 않습니다.

참고: 투명 대형 페이지를 끄지 않으면 CM 서버 설치 과정에서 호스트 항목을 확인할 때 노란색 경고가 표시됩니다.

임시 효과적인 솔루션: pssh는 투명하고 큰 페이지를 일괄적으로 닫습니다.

[root@node1 ~]# pssh -h ./nodes -i "echo never > /sys/kernel/mm/transparent_hugepage/defrag"
[1] 11:38:37 [SUCCESS] root@node1
[2] 11:38:37 [SUCCESS] root@node2
[3] 11:38:37 [SUCCESS] root@node3
[root@node1 ~]# pssh -h ./nodes -i "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
[1] 11:38:39 [SUCCESS] root@node1
[2] 11:38:39 [SUCCESS] root@node3
[3] 11:38:39 [SUCCESS] root@node2

영구적이고 효과적인 솔루션

[root@node1 log]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
[root@node1 log]# chmod +x /etc/rc.d/rc.local

종료가 성공했는지 확인

[root@node1 ~]# pssh -h ./nodes -i "cat /sys/kernel/mm/transparent_hugepage/defrag;cat /sys/kernel/mm/transparent_hugepage/enabled"
[1] 10:14:28 [SUCCESS] root@node2
always madvise [never]
always madvise [never]
[2] 10:14:28 [SUCCESS] root@node3
always madvise [never]
always madvise [never]
[3] 10:14:28 [SUCCESS] root@node1
always madvise [never]
always madvise [never]
 최대 프로세스 수 및 최대 파일 핸들 수 구성

사용자의 프로세스 및 파일 핸들 번호 구성 파일은 /etc/security/limits.conf이며 유형에는 hard 제한(hard)과 Soft 제한(soft)이 있습니다. *는 모든 사용자를 나타내고, nproc은 최대 열려 있는 프로세스 수, nofile을 나타냅니다. 최대 파일 핸들을 나타냅니다. Cloudera에서는 nproc의 최대 프로세스 수를 65536 또는 26214로 권장합니다.

pssh 배치는 모든 사용자에 대한 프로세스 및 파일 핸들의 최대 제한을 변경합니다.

pssh -h ./nodes -i "echo '* soft nproc 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* hard nproc 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* soft nofile 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* hard nofile 65535' >> /etc/security/limits.conf"
시간을 비활성화

Linux 파일 시스템은 각 파일의 액세스 시간을 기록하는 메타데이터를 유지하므로 읽기 작업에서도 디스크 쓰기가 발생할 수 있습니다. 파일 읽기 성능을 향상시키기 위해 Cloudera는 구성 파일에서 noatime 마운트 옵션을 사용하여 atime 옵션을 비활성화할 것을 권장합니다. /etc/fstab

pssh 배치는 파일의 마지막 액세스 시간을 비활성화합니다. 로컬에 마운트된 데이터 디렉터리는 /data입니다. 다음과 같이 수정합니다.

# 数据目录添加noatime
pssh -h ./nodes -i "sed -i 's/\/data                   ext4    defaults/\/data                   ext4    defaults,noatime/' /etc/fstab"
# 重新挂载不需要重启节点
mount -o remount /data
클러스터 클럭 동기화

Centos7에서는 기본적으로 시간 동기화를 위해 NTP 대신 Chrony 도구를 사용합니다. Chrony와 NTP가 충돌하는 경우 하나만 선택할 수 있습니다. CDH6에서는 Chrony 사용을 권장합니다. 설치 및 시작 명령은 다음과 같습니다.

# 安装
yum -y install chrony
# 启动
systemctl start chronyd

이미 설치되어 있는 경우 건너뛰고 하드웨어 시계를 UTC로 변경하고 시간대를 현지 시간대로 변경할 수 있습니다.

# 硬件时钟设置为UTC
pssh -h ./nodes -i "timedatectl set-local-rtc 0"
# 设置本地时区,显示本地时间
pssh -h ./nodes -i "timedatectl set-timezone Asia/Shanghai"
# 手动加载RTC设置
pssh -h ./nodes -i "hwclock --systohc"

timedatectl로 시간 확인하기

[root@node1 ~]# timedatectl
      Local time: Tue 2023-08-22 15:14:57 CST
  Universal time: Tue 2023-08-22 07:14:57 UTC
        RTC time: Tue 2023-08-22 07:14:57
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
JDK 설치

Cloudera에서는 JDK1.8u181 버전 설치를 권장합니다. CDH 설치 패키지를 엽니다. oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm 패키지는 JDK 디렉토리에 있습니다. 설치 위치 모든 노드. JDK 버전, 설치 및 구성이 비교적 간단합니다. 다른 기사를 참조하세요:Centos7 64비트 JDK1.8 설치, 참조 "rpm을 이용한 설치"로 컨텐츠가 설치됩니다. Centos7은 64비트 JDK1.8을 설치합니다.

MySQL 설치
MySQL 배포

Node1 노드는 MySQL5.7 서버를 설치 및 배포합니다. 구체적인 설치 단계는 내 다른 문서를 참조하세요:Linux 설치 및 MySQL5.7 제거 세부 튜토리얼< a i=2>.

MySQL 구성

MySQL의 구성 파일은 /etc/my.cnf이며, Cloudera의 권장 구성은 다음과 같습니다.

여기에는 함정이 있습니다: MySQL 5.7 상위 버전의 경우 MySQL에 연결하기 위해 CM 서버를 시작할 때 com.mysql.jdbc.Exceptions.jdbc4.CommunicationsException이 보고될 수 있습니다. 그 이유는 SSL 인증이 기본적으로 활성화되어 있기 때문입니다. useSSL=true와 동일합니다.해결방법은 구성에 Skip-ssl을 추가하여 MySQL 서비스를 다시 시작하는 방법입니다.또한, [mysqld_safe] 구성 항목이 폐기되었습니다.다음 구성이 확인되었습니다.

[mysqld]
# 务必禁用掉ssl,相当于useSSL=false
skip-ssl 

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 = 16M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

# 设置数据库错误日志时间显示为系统时间
log_timestamps=system

# 设置安全策略
validate_password_policy=LOW
validate_password_length=4
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=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] 5.7已废弃该配置
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

구성을 적용하려면 MySQL 서버를 다시 시작하세요.

systemctl restart mysqld 
데이터베이스 및 사용자 초기화

Cloudera 공식 웹사이트에서 초기화해야 하는 데이터베이스 및 사용자는 다음과 같습니다.

 위의 모든 구성 요소 데이터베이스를 만들고 다음 스크립트를 실행합니다.

[root@node1 ~]# mysql -uroot -p
# scm
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'abcd1234';

# amon
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'abcd1234';

# rman
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'abcd1234';

# hue
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'abcd1234';

# hive
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'abcd1234';

# sentry
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'abcd1234';

# nav
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'abcd1234';

# navms
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'abcd1234';

# oozie
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'abcd1234';

# 最后刷新一下权限
flush privileges;

# 检查
show databases;
JDBC 드라이버 설치

데이터베이스에 연결할 각 노드에 대해 Cloudera에서는 해당 노드를 구성 요소에서 사용하기 전에 /usr/share/java 디렉터리에 생성해야 합니다.

# 创建目录
pssh -h ./nodes -i 'mkdir -p /usr/share/java/'
# 复制到各个节点
pscp -h ./nodes /var/www/html/cdh/mysql/mysql-connector-java-5.1.46-bin.jar /usr/share/java/
# 修改权限
pssh -h ./nodes -i 'cd /usr/share/java;chmod 777 mysql-connector-java-5.1.46-bin.jar'
# 重命名jar包以便找到
pssh -h ./nodes -i 'cd /usr/share/java;ln -s mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar'
# 验证是否创建成功
pssh -h ./nodes -i 'tree /usr/share/java'
비공개 Yum 소스 구축

인트라넷 클러스터 노드의 액세스를 용이하게 하기 위해 CDH 및 CM의 로컬 저장소 소스를 생성합니다.

httpd 서비스 설치

node1 노드는 HTTP를 통한 CDH 및 CM 설치 패키지의 후속 액세스 및 다운로드에 사용되는 Apache httpd 서비스를 설치합니다.

# 安装httpd和createrepo
yum -y install httpd createrepo
# 启动
systemctl start httpd
# 开机启动
systemctl enable httpd

참고: httpd 서비스가 소포 파일을 전송할 때 기본적으로 "Content-Encoding"이 설정되어 있으므로 CM 서버는 소포 파일이 httpd에 의해 압축된 것으로 간주하고 압축을 풀려고 합니다. 해결책은 httpd의 구성 파일을 수정하는 것입니다.

구성 파일 /etc/httpd/conf/httpd.conf를 수정하고 소포 파일의 원격 다운로드를 위해 <IfModule mime_module>에 .parcel 파일 유형에 대한 지원을 추가합니다.​ 

[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz .parcel
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

httpd 서비스 다시 시작

systemctl restart httpd
웹 서비스 구성

node1 노드는 cdh를 httpd 서비스의 루트 디렉터리인 /var/www/html로 이동하고 Yum을 통해 액세스하기 위한 repo 메타데이터를 생성합니다.

[root@node1 ~]# mv /opt/apps/cdh /var/www/html
[root@node1 ~]# tree /var/www/html
/var/www/html
└── cdh
    ├── CDH6.3.2
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
    │   └── manifest.json
    ├── CM6.3.1
    │   ├── allkeys.asc
    │   ├── cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
    │   └── enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
    ├── JDK
    │   └── oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
    └── mysql
        ├── 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
        ├── 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
        ├── 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
        ├── 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
        ├── 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
        └── mysql-connector-java-5.1.46-bin.jar

5 directories, 17 files
[root@node1 ~]# cd /var/www/html/cdh/CM6.3.1/
[root@node1 CM6.3.1]# createrepo .

http 액세스 확인

로컬 저장소 소스 만들기

/etc/yum.repos.d 디렉터리에 cm-local.repo 구성 파일을 생성하고 다음 콘텐츠를 추가합니다.

[root@node1 yum.repos.d]# vim cm-local.repo 
[cm-repo]
name=cm-repo
baseurl=http://192.168.5.10/cdh/CM6.3.1
enabled=1 # 启用yum
gpgcheck=0 # 不检查检查gpg

클러스터의 다른 노드에 복사하고 다음 작업을 수행합니다.

# 远程复制
pscp -h ./nodes /etc/yum.repos.d/cm-local.repo /etc/yum.repos.d/
# 先清空再添加缓存
pssh -h ./nodes -i 'yum clean all && yum makecache'
# 查看当前所有yum源
pssh -h ./nodes -i 'yum repolist'

3. CM6.3.1 설치 단계

클러스터 역할

클러스터 CM 역할
일련번호 마디 CM 서비스 역할
1 노드1

cloudera-scm-서버 cloudera-scm-에이전트

2 노드2 cloudera-scm-에이전트
노드3 cloudera-scm-에이전트

CM6.3.1 설치

cloudera 관리자 서버 설치

먼저 node1 노드에 cloudera 관리자 서버를 설치하면 웹 UI를 통해 CDH의 후속 설치가 용이해집니다.

yum -y install cloudera-manager-server
scm 데이터베이스 초기화
[root@node1 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm abcd1234
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/java/jdk1.8.0_181-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Tue Aug 22 22:00:51 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!
 cloudera 관리자 서버 시작
# 启动
systemctl start cloudera-scm-server
# 开机启动
systemctl enable cloudera-scm-server
# 查看状态
systemctl status cloudera-scm-server

시작 로그(/var/log/cloudera-scm-server/cloudera-scm-server.log)를 확인하여 예외가 없으면 성공적으로 시작된 것입니다.​ 

[root@node1 ~]# tail -3 /var/log/cloudera-scm-server/cloudera-scm-server.log
2023-08-22 22:11:22,656 INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@30096cd2{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
2023-08-22 22:11:22,656 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @39407ms
2023-08-22 22:11:22,656 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

4. CDH 클러스터 6.3.2 설치 단계

클러스터 설치 마법사

브라우저 주소 표시줄에 http://192.168.5.10:7180/cmf/login을 입력하면 로그인 웹 페이지가 열립니다.

 기본 사용자 이름/비밀번호 = admin/admin을 사용하여 CM에 로그인하고 환영 페이지를 입력한 후 "계속"을 클릭하세요.

 라이센스 이용 약관에 동의하는 확인란을 선택하고 "계속"을 클릭하십시오.

 Cloudera Express 무료 버전을 선택하고 "계속"을 클릭하세요.

클러스터 설치 페이지로 들어가서 "계속"을 클릭하세요.

클러스터 이름을 편집하고 cdh6.3.2를 입력합니다. 설치가 성공적으로 완료되면 클러스터 이름을 바꾸고 "계속"을 클릭할 수 있습니다.

모드를 사용하여 호스트 이름이나 IP 주소를 입력하고 "검색"을 클릭하여 호스트를 찾은 다음 노드를 선택하고 "계속"을 클릭합니다.

Cloudera Manager Agent의 사용자 정의 리포지토리의 경우 CM 웨어하우스 주소(http://192.168.5.10/cdh/CM6.3.1)를 입력합니다.

CDH 및 기타 소프트웨어 "Parcel 사용(권장)"을 선택하고 "추가 옵션"을 클릭하여 Parcel 저장소 설정 페이지로 들어갑니다. "소포 디렉터리" 및 "로컬 소포 저장소 경로"는 기본 디렉터리를 선택하기 위해 편집할 필요가 없습니다. "원격 소포 저장소 URL"을 편집하고 CDH 창고 주소를 입력하십시오: http://192.168.5.10/cdh/CDH6.3.2 /
, 다른 URL을 삭제하려면 "-"를 클릭하고 "변경 사항 저장"을 클릭하세요.

 여기의 CDH 버전은 이전 단계에서 저장한 후 자동으로 새로 고쳐집니다. "계속"을 클릭하세요.

JDK를 설치합니다. 이미 설치되어 있는 경우 건너뛰고 "계속"을 클릭합니다.

SSH 로그인을 위한 루트 사용자의 비밀번호를 입력하고 "계속"을 클릭하세요.

클러스터의 각 노드에 에이전트를 설치합니다. 설치 프로세스를 보려면 "세부 정보"를 클릭하십시오.

설치가 완료되면 자동으로 다음 단계로 이동하여 Parcel 다운로드 및 설치를 시작합니다.

네트워크 및 호스트 성능을 확인하려면 "네트워크 성능 검사" 및 "호스트 검사"를 클릭하십시오. 노란색 알람이 나타나면 "Show Checker Results"를 선택하고 각 항목을 하나씩 해결한 다음 모든 검사가 통과될 때까지 "Rerun"을 클릭한 후 "Continue"를 클릭하세요. 또한 마지막 항목을 직접 선택하여 알람을 건너뛰고 "Rerun"을 클릭할 수도 있습니다. 계속하다" ".

클러스터 설치 설정

클러스터 설정 페이지에 들어가서 설치할 서비스 조합을 선택하세요.

여기에서 사용자 정의 서비스를 선택하고 필요한 구성요소를 선택한 후 "계속"을 클릭합니다.

클러스터 사용자 지정 역할 할당을 입력하고 자신의 계획에 따라 노드에 역할을 할당합니다.

구성이 완료되면 "호스트별로 보기"를 클릭하고 "계속"을 클릭하세요. 

데이터베이스 설정 페이지에 들어가서 데이터베이스 유형 MySQL을 선택하고 호스트 이름, 데이터베이스, 사용자 및 비밀번호를 입력한 후 "연결 테스트"를 클릭하십시오. 테스트가 성공한 후 "계속"을 클릭하십시오.

변경 검토 페이지에 들어가서 기본 디렉토리 설정이 적절한지 확인하십시오. 실제 상황에 따라 조정하면 됩니다. 올바른지 확인한 후 "계속"을 클릭하십시오.​ 

명령 실행을 시작하여 각 구성 요소를 설치하고 완료 후 "계속"을 클릭합니다.

클러스터 구성 요소가 성공적으로 설치 및 시작되었음을 나타내는 요약 페이지로 이동하고 "마침"을 클릭합니다.

마지막으로 CM 관리 홈페이지에 들어가면 CDH6.3.2가 성공적으로 설치됩니다!

рекомендация

отblog.csdn.net/BlogPan/article/details/132396576