集群规模确定
从数据量、计算性能要求、可靠稳定性、容错性等方面考虑。
数据量
现有数据量(如现有历史数据)和增量数据(日增、月增数据,一般需要考虑满足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-keygen -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目录
[root@hdc1 cloudera]# ls
cm cm-agent csd parcel-repo
[root@hdc1 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用户的密码
com.cloudera.cmf.db.password=1qaz@WSX
修改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
|