欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CDH6.3.2离线部署

程序员文章站 2022-07-14 21:53:11
...

集群规模确定

从数据量、计算性能要求、可靠稳定性、容错性等方面考虑。

数据量

现有数据量(如现有历史数据)和增量数据(日增、月增数据,一般需要考虑满足1-2年的容量,后续再扩容)

数据的副本数(Hadoop默认3副本,乘3倍);

数据清洗、融合加工处理、共享等过程产生的,中间表、指标表、主题/专题库等表(乘3-5倍)。注意:HDFS上不同格式的表压缩比也不一样,如文本txt表不压缩,orc有一定的压缩比(1:3),HBase(看是否采用压缩),ES看索引是否有膨胀;

储存的冗余量 + 20-30%;
如:现有各种形式的数据量总共30TB,月增数据1TB(算未来24个月),全部都要放到HDFS中存储,默认3副本,ETL数据处理全部用txt表(共享服务HBase、ES等混用)就按照1:1的压缩比储存,算上ODS、清洗融合加工中间表、指标表、主题库/专题课等取4倍。如下计算:
(30 + 1* 24) * 3 * 4 * 1.25 = 810 TB

需要总的磁盘空间810TB,如果是10个数据储存节点,那么每个节点至少要大于81TB的空间,可以挂 9块* 10TB。

计算

根据使用到的大数据组件服务来预估

如基于内存的服务对内存的要求,对磁盘IO使用比较频繁的是否考虑多块盘,清洗融合加工频繁的对cpu的要求等等

可靠稳定性

集群规模大的,需要区分管理节点、数据储存和计算节点(或者叫工作节点)。

容错性

如果考虑对各个服务或者某些服务做HA的,需要再考虑加节点资源。
如果考虑做灾备集群的,需要再加1倍的资源。
此外,还要考虑网络,是否是双网口?千兆还是万兆网络?

从上面几方面确定集群规模,节点数、每个节点的物理配置(CPU、Memery、磁盘空间)、集群网络等

Cloudera Manager架构

名称 描述
Server 负责软件安装、配置,启动和停止服务,管理服务运行的群集。核心
Agent 安装在每台主机上。负责启动和停止进程,配置,监控主机。
Management Service 由一组执行各种监控,警报和报告功能角色的服务。图表的生成和管理
Database 存储配置和监视信息。
Cloudera Repository 软件由Cloudera 管理分布存储库。(有点类似Maven的中心仓库);在线安装(从中心仓库拉取)和离线安装(离线库)
Clients 是用于与服务器进行交互的接口(API和Admin Console)
软件 版本
cm 6.3.1
cdh 6.3.2
jdk 1.8
mysql 5.6.30

测试服务器信息

服务器地址 操作系统 名称 角色
172.16.8.2 Centos7.6 hdc1 master
172.16.8.3 Centos7.6 hdc2 node
172.16.8.4 Centos7.6 hdc3 node

cdh6.3.2组件默认版本

组件 组件版本
Apache Avro 1.8.2
Apache Flume 1.9.0
Apache Hadoop 3.0.0
Apache HBase 2.1.4
HBase Indexer 1.5
Apache Hive 2.1.1
Hue 4.3.0
Apache Impala 3.2.0
Apache Kafka 2.2.1
Kite SDK 1.0.0
Apache Kudu 1.10.0
Apache Solr 7.4.0
Apache Oozie 5.1.0
Apache Parquet 1.9.0
Parquet-format 2.4.0
Apache Pig 0.17.0
Apache Sentry 2.1.0
Apache Spark 2.4.0
Apache Sqoop 1.4.7
Apache ZooKeeper 3.4.5

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_63_packaging.html#cdh_630_packaging

所需文件列表

cm

  • cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
  • cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
  • cloudera-manager-agent-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

cdh

  • CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
  • manifest.json

mysql驱动

  • mysql-connector-java-5.1.46.jar

环境初始化

修改hostname(所有节点)

hostnamectl set-hostname hdc1
su -

关闭防火墙(所有节点)

systemctl stop firewalld 
systemctl status firewalld 
Systemctl disable firewalld  //禁止开机自启

关闭selinux(所有节点)

vim /etc/sysconfig/selinux 
SELINUX=disabled
setenforce 0

修改hosts(所有节点)

vim /etc/hosts
172.16.8.2 hdc1
172.16.8.3 hdc2
172.16.8.4 hdc3

免密登录(所有节点)

#生成秘钥(三次直接回车)
ssh-****** -t rsa
#发送公钥:(第一次发送,要输入密码,发送前/后可以看看.ssh目录有没有公钥)
ssh-copy-id hdc1(目标机子)
ssh-copy-id hdc2
ssh-copy-id hdc3

ntpd服务(master节点)

hdc1安装ntp服务器

yum -y install ntp

检查ntp服务器

rpm -q ntp
ntp-4.2.6p5-29.el7.centos.2.x86_64

修改配置文件

vim /etc/ntp.conf 
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict ::1
#允许更新的IP地址段能同步时间
restrict 172.16.8.2 mask 255.255.255.0 nomodify notrap
#如果网络时间同步服务器不可以用,就以本地时间为标准向客户端提供服务
server 127.127.1.0
fudge 127.127.1.0 stratum 8
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor

重启ntp服务

systemctl restart ntpd     启动
systemctl enable ntpd    开机自启
systemctl status ntpd     查看服务状态

ntp查验

ntpstat
synchronised to local net (127.127.1.0) at stratum 9
   time correct to within 3948 ms
   polling server every 64 s

查看是否同步

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.           8 l   18   64  377    0.000    0.000   0.000

子节点连接主节点服务

下载ntp服务 (node节点)

yum -y install ntp

同步master时间服务

vim /etc/ntp.conf 
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict ::1
#允许更新的IP地址段能同步时间
restrict hdc1 mask 255.255.255.0 nomodify notrap
#如果网络时间同步服务器不可以用,就以本地时间为标准向客户端提供服务
server hdc1
fudge hdc1 stratum 8
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor

测试时间同步是否生效

date -s '2020-10-12 12:12:12'
Mon Oct 12 12:12:12 CST 2020
ntpdate -u 172.16.8.2
 3 Jul 14:27:18 ntpdate[25877]: step time server 172.16.8.2 offset 22817697.067844 sec

关闭swap(所有节点)

sysctl vm.swappiness=1
echo 1 > /proc/sys/vm/swappiness
vim /etc/sysctl.conf
vm.swappiness=1

更改文件句柄数(所有节点)

vim /etc/security/limits.conf
---

*               soft    nofile          65535
*               hard    nofile          1029345
*               soft    nproc           unlimited
*               hard    nproc           unlimited
*               soft    memlock         unlimited
*               hard    memlock         unlimited

配置yum源(内网需求)(未梳理)

上传本地yum源文件到服务器主节点


vi /etc/yum.repos.d/centos7.3.repo
[cehtos7]
name=centos7
baseurl=file:///home/cdrom
gpgkey=file:///home/cdrom/RPM-GPG-KEY-CentOS-7
enabled=1
gpgcheck=0

安装http服务
yum -y install httpd
systemctl start httpd
chkconfig httpd on

将本地yum源发布到http服务
mv /home/cdrom/* /var/www/html/centos7

将之前的本地yum源修改为网络版
vi /etc/yum.repos.d/centos7.3.repo
[cehtos7]
name=centos7
baseurl=http://yum源ip/centos7
gpgkey=http://yum源ip/centos7/RPM-GPG-KEY-CentOS-7
enabled=1
gpgcheck=0

将/etc/yum.repos.d/centos7.3.repo文件分发到其余的节点
scp /etc/yum.repos.d/centos7.3.repo 节点ip:/etc/yum.repos.d/

所有节点运行
yum clean all
yum makecache

关闭透明大界面(所有节点)

启用透明大页面压缩,可能会导致重大性能问题,建议禁用此设置

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

安装jdk(所有节点)

rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
vim /etc/profile
#添加一下内容
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
#配置生效
source /etc/profile
java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

上传JDBC依赖包(所有节点)

mkdir -p /usr/share/java
cp mysql-connector-java-8.0.18.jar /usr/share/java/mysql-connector-java.jar

安装httpd服务(master节点)

yum install httpd -y
systemctl start httpd
systemctl enable httpd

配置Cloudera Manager安装包yum源

mkdir -p /var/www/html/cloudera-repos/cm6
cp /data/cdh/cloudera-manager/* /var/www/html/cloudera-repos/cm6/
- cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm 
- cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm 
- cloudera-manager-agent-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
yum install -y createrepo
createrepo .
#执行后在浏览器访问
http://172.16.8.2/cloudera-repos/cm6/

创建repo文件(所有节点)

vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name=Cloudera Manager 6.3.1
baseurl=http://hdc1/cloudera-repos/cm6
gpgcheck=0
enabled=1

#清理并缓存(所有节点):更新yum源
yum clean all
yum makecache
yum repolist

安装cm

#master执行
yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
执行后会在/opt下生成cloudera目录
[[email protected] cloudera]# ls
cm  cm-agent  csd  parcel-repo
[[email protected] cloudera]# pwd
/opt/cloudera

上传cdh文件至cm的parcel-repo文件下

cp /data/cdh/cdh/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /opt/cloudera/parcel-repo/
cp /data/cdh/cdh/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha /opt/cloudera/parcel-repo/
cp /data/cdh/cdh/manifest.json /opt/cloudera/parcel-repo/

创建mysql库(mysql使用的外部mysql,此处不做过多介绍)

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
flush privileges; 

环境问题

yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 Mysql-python fuse

子节点只安装agent

yum install cloudera-manager-daemons cloudera-manager-agent -y

修改master数据库配置

vim /etc/cloudera-scm-server/db.properties
# 指定数据库类型为mysql
com.cloudera.cmf.db.type=mysql
# 指定数据库的地址以及端口号
com.cloudera.cmf.db.host=172.16.8.201:31234
# 指定CM数据库的名称
com.cloudera.cmf.db.name=scm
# 指定CM用户的用户名
com.cloudera.cmf.db.user=root
# 指定CM用户的密码
[email protected]

修改agent配置(所有节点)

vim /etc/cloudera-scm-agent/config.ini
#修改第15行为master节点地址
server_host=hdc1

修改以上配置后启动server(启动时间比较慢大概五六分钟)

systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
systemctl restart cloudera-scm-server
systemctl enable cloudera-scm-server
systemctl stop cloudera-scm-server
#查看日志
tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log

查看7182端口是否被占用

netstat -anp | grep 7180

所有节点启动agent

systemctl restart cloudera-scm-agent
systemctl status cloudera-scm-agent
systemctl enable cloudera-scm-agent
systemctl stop cloudera-scm-agent
tail -F /var/log/cloudera-scm-agent/cloudera-scm-agent.log

校验parcel文件

sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

启动后 访问地址 masterip:7180 admin/admin