# 具体硬件要求及其他限制
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_requirements_supported_versions.html
# Java要求
仅支持64位JDK。Cloudera Manager 6和CDH 6不支持JDK 7.虽然所有版本的CDH 5都支持JDK 7,但是由Cloudera Manager 6.x管理的CDH 5.x群集必须在所有群集主机上使用JDK 8。Cloudera Manager 6和CDH 6支持Oracle JDK 8.在CDH 5.3及更高版本中也支持JDK 8。
Cloudera Enterprise 6.1.0及更高版本以及Cloudera Enterprise 5.16.1及更高版本支持OpenJDK 8。有关安装和迁移说明,请参阅升级JDK。
CDH 6不支持使用JDK 7编译的应用程序。在升级到CDH 6之前,必须使用JDK 8重新编译应用程序。
任何Cloudera Manager或CDH版本都不支持Oracle JDK 9。
除非明确排除,否则Cloudera将支持以后对发布支持的主要JDK版本的更新。当安全性受到威胁时,Cloudera会排除或删除对选定Java更新的支持。
不支持在不同JDK版本的同一群集中运行CDH节点。所有群集主机必须使用相同的JDK更新级别。
# 数据库要求
Cloudera建议您使用与群集节点的操作系统对应的默认版本的数据库。如果您选择使用默认数据库以外的数据库,请参阅操作系统的文档以验证支持。请注意,Hue 需要安装它的操作系统的默认MySQL / MariaDB版本(如果使用)。有关更多信息,请参阅Hue数据库。
对所有自定义数据库使用UTF8编码。MySQL和MariaDB必须使用MySQLUTF8 编码,不是 utf8mb4。
对于MySQL 5.7,您必须安装MySQL-shared-compat或MySQL-shared软件包。这是Cloudera Manager Agent安装所必需的。
不支持基于MySQL GTID的复制。
支持社区和企业版MySQL,以及AWS RDS服务配置的MySQL。
在从CDH 5升级到CDH 6之前,请检查 兼容 使用以下SQL查询在Oracle数据库中初始化参数:
# Cloudera Manager
Cloudera Manager可以轻松管理生产中任何规模的Cloudera部署。通过直观的UI快速部署,配置和监控集群 - 包括滚动升级,备份和灾难恢复以及可自定义的警报。
Cloudera Manager是Cloudera Enterprise的集成和支持部分。
# 安装配置(主节点操作)
# 为了方便,使用vagrant配置virtualbox,新建虚拟机
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_requirements_supported_versions.html
# Java要求
仅支持64位JDK。Cloudera Manager 6和CDH 6不支持JDK 7.虽然所有版本的CDH 5都支持JDK 7,但是由Cloudera Manager 6.x管理的CDH 5.x群集必须在所有群集主机上使用JDK 8。Cloudera Manager 6和CDH 6支持Oracle JDK 8.在CDH 5.3及更高版本中也支持JDK 8。
Cloudera Enterprise 6.1.0及更高版本以及Cloudera Enterprise 5.16.1及更高版本支持OpenJDK 8。有关安装和迁移说明,请参阅升级JDK。
CDH 6不支持使用JDK 7编译的应用程序。在升级到CDH 6之前,必须使用JDK 8重新编译应用程序。
任何Cloudera Manager或CDH版本都不支持Oracle JDK 9。
除非明确排除,否则Cloudera将支持以后对发布支持的主要JDK版本的更新。当安全性受到威胁时,Cloudera会排除或删除对选定Java更新的支持。
不支持在不同JDK版本的同一群集中运行CDH节点。所有群集主机必须使用相同的JDK更新级别。
# 数据库要求
Cloudera建议您使用与群集节点的操作系统对应的默认版本的数据库。如果您选择使用默认数据库以外的数据库,请参阅操作系统的文档以验证支持。请注意,Hue 需要安装它的操作系统的默认MySQL / MariaDB版本(如果使用)。有关更多信息,请参阅Hue数据库。
对所有自定义数据库使用UTF8编码。MySQL和MariaDB必须使用MySQLUTF8 编码,不是 utf8mb4。
对于MySQL 5.7,您必须安装MySQL-shared-compat或MySQL-shared软件包。这是Cloudera Manager Agent安装所必需的。
不支持基于MySQL GTID的复制。
支持社区和企业版MySQL,以及AWS RDS服务配置的MySQL。
在从CDH 5升级到CDH 6之前,请检查 兼容 使用以下SQL查询在Oracle数据库中初始化参数:
# Cloudera Manager
Cloudera Manager可以轻松管理生产中任何规模的Cloudera部署。通过直观的UI快速部署,配置和监控集群 - 包括滚动升级,备份和灾难恢复以及可自定义的警报。
Cloudera Manager是Cloudera Enterprise的集成和支持部分。
# 安装配置(主节点操作)
# 为了方便,使用vagrant配置virtualbox,新建虚拟机
# -*- mode: ruby -*-
# vi: set ft=ruby :
servers = {
"server01" => "192.168.1.120",
"server02" => "192.168.1.121",
"server03" => "192.168.1.122",
"server04" => "192.168.1.123",
"server05" => "192.168.1.124",
}
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.box_check_update = false
servers.each do |server_name, server_ip|
config.vm.define server_name do |server_config|
server_config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.name = server_ip.to_s
vb.cpus = 3
vb.memory = "3072"
end
server_config.vm.network "public_network", ip: server_ip
$script = <<-SCRIPT
# 修改root口令
sudo echo "123456" | sudo passwd --stdin root
# 切换为root用户
sudo su - root
# 开启sshd口令登录
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
# 关闭selinux
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
# 开启networking
echo "NETWORKING=yes" >> /etc/sysconfig/network
# 禁用透明大页面压缩
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo -e 'echo never > /sys/kernel/mm/transparent_hugepage/defrag\necho never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
# 优化交换分区
echo "vm.swappiness = 10" >> /etc/sysctl.conf
sysctl -p
# 设置所有用户umask
echo "umask 0022" >> /etc/profile
# 添加hosts名称解析
echo -e "192.168.1.120 server01\n192.168.1.121 server02\n192.168.1.122 server03\n192.168.1.123 server04\n192.168.1.124 server05\n" >> /etc/hosts
# 设置file-max
echo "fs.file-max = 6553560" >> /etc/sysctl.conf && sysctl --system
# 设置ulimit最大文件打开数
echo -e "* soft nofile 65535\n* hard nofile 65535\n" >> /etc/security/limits.conf
echo "session required pam_limits.so" >> /etc/pam.d/login
echo "session required pam_limits.so" >> /etc/pam.d/system-auth
echo "session required pam_limits.so" >> /etc/pam.d/sshd
systemctl reload sshd
# 开启ntp时钟同步
yum install -y ntp lrzsz
systemctl enable ntpd
systemctl start ntpd
# 安装openjdk
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
# 设置主机名称
hostnamectl set-hostname $1
# 生成ssh id_rsa
yes y | ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa > /dev/null
# 重启下
reboot
SCRIPT
server_config.vm.provision "shell" do |s|
s.inline = $script
s.args = [server_name]
end
end
end
end
# 角色服务详情
192.168.1.120 Cloudera Manager Server,Cloudera Manager Agent,内嵌postgresql or MariaDB
192.168.1.121 Cloudera Manager Agent,NameNode,ResourceManager以及其他服务
192.168.1.122 Cloudera Manager Agent,SecondaryNameNode,NodeManager以及其他服务
192.168.1.123 Cloudera Manager Agent,DataNode,NodeManager以及其他服务
192.168.1.124 Cloudera Manager Agent,DataNode,NodeManager以及其他服务
# 环境准备
# 登录1.120配置免密码登录到自身以及其他主机
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.120
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.121
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.122
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.123
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.124
# 安装ansible
yum install ansible -y
# 定义ansible可管理的主机
cat <<EOF >> /etc/ansible/hosts
[cm]
192.168.1.120
[hadoop]
192.168.1.121
192.168.1.122
192.168.1.123
192.168.1.124
EOF
# # 关闭防火墙
# ansible cm,hadoop -m service -a "name=firewalld enabled=no state=stopped"
# # 关闭selinux
# ansible ambari,hadoop -m lineinfile -a 'path=/etc/selinux/config regexp="^SELINUX=" line="SELINUX=disabled"'
# # 禁用透明大页面压缩
# ansible cm,hadoop -m shell -a 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
# ansible cm,hadoop -m shell -a 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
# ansible cm,hadoop -m shell -a "echo -e 'echo never > /sys/kernel/mm/transparent_hugepage/defrag\necho never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local"
# # 优化交换分区
# ansible cm,hadoop -m shell -a 'echo "vm.swappiness = 10" >> /etc/sysctl.conf'
# ansible cm,hadoop -m shell -a 'sysctl -p'
# # 配置ntp时钟同步
# ansible cm,hadoop -m yum -a "name=ntp state=present"
# ansible cm,hadoop -m service -a "name=ntpd enabled=yes state=started"
# ansible cm,hadoop -m shell -a "date"
# # 安装openjdk1.8
# ansible cm,hadoop -m yum -a "name=java-1.8.0-openjdk,java-1.8.0-openjdk-devel state=present"
# # 安装mysql数据库以及mysql-connector-java(如果不安装,则可以选择使用cm内嵌的postgresql,但生产环境不建议使用)
# ansible cm -m yum -a "name=mariadb,mariadb-server,mysql-connector-java state=present"
# ansible cm -m service -a 'name=mariadb enabled=yes state=started'
# 提前下载部分资源包
# 配置阿里云nameserver
ansible cm,hadoop -m shell -a 'cat /dev/null > /etc/resolv.conf'
ansible cm,hadoop -m blockinfile -a 'path=/etc/resolv.conf block="nameserver 223.5.5.5"'
# 配置所有节点的cm repo库
ansible cm,hadoop -m yum -a 'name=yum-utils state=present'
ansible cm,hadoop -m shell -a 'yum-config-manager --add-repo https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/cloudera-manager.repo'
ansible cm,hadoop -m shell -a 'rpm --import https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPM-GPG-KEY-cloudera'
# 下载cm server agent等安装包
# 通过yum downloadonly方式下载离线包
yum install -y yum-plugin-downloadonly
yum install --downloaddir=/var/www/html/cm --downloadonly cloudera-manager-agent cloudera-manager-server
# 或者通过手动方式下载rpm
yum install -y wget
ansible cm,hadoop -m file -a 'path=/opt/cm state=directory'
cd /opt/cm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-6.3.0-1281944.el7.x86_64.rpm
# 分发agent rpm包到所有从机(也可以cm web配置的时候再在从机上安装agent)
ansible hadoop -m copy -a 'src=/opt/cm/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm dest=/opt/cm/'
ansible hadoop -m copy -a 'src=/opt/cm/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm dest=/opt/cm/'
# 下载cdh parcels包
# cdh5下载地址
wget http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel
wget http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1
# cdh6下载地址
wget https://archive.cloudera.com/cdh6/6.3.0/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel
wget https://archive.cloudera.com/cdh6/6.3.0/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel.sha1
# 所有节点安装rpm包
# 主节点安装cm-server cm-agent等,从节点安装cm-agent(非生产模式下运行 Cloudera Manager,该模式使用嵌入式 PostgreSQL 数据库。请在移入生产环境之前切换为使用支持的外部数据库)
ansible cm,hadoop -m shell -a 'cd /opt/cm && yum -y localinstall *.rpm'
# 将cdh parcels包移动到/opt/cloudera/parcel-repo/下
ansible cm -m shell -a 'cd /opt/cm && mv CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel /opt/cloudera/parcel-repo/''
ansible cm -m shell -a 'cd /opt/cm && mv CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha'
ansible cm -m shell -a 'chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/'
# 启动已安装的服务,并设置开机启动
ansible cm -m service -a 'name=cloudera-scm-server-db enabled=yes state=started'
ansible cm -m service -a 'name=cloudera-scm-server enabled=yes state=restarted'
# 查看cm日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
# 出现以下内容代表server启动完毕
# 2019-08-22 01:30:25,698 INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@1ac53b4c{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
# 2019-08-22 01:30:25,699 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @77881ms
# 2019-08-22 01:30:25,699 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
ansible cm,hadoop -m service -a 'name=cloudera-scm-agent enabled=yes state=started'
ansible cm,hadoop -m shell -a 'systemctl status -l cloudera-scm-agent cloudera-scm-server-db cloudera-scm-server'
ansible cm,hadoop -m shell -a 'systemctl list-units | grep cloudera'
cloudera-scm-agent.service
cloudera-scm-server-db.service
cloudera-scm-server.service
# 访问cm web地址
http://192.168.1.120:7180/cmf/login admin/admin
# 欢迎
# Accept License
# Select Edition
# 最后点击继续
# 欢迎
# Cluster Basics
# Specify Hosts
# 选择存储库
# Cloudera Manager Agent
# Repository Location Public Cloudera Repository
# CDH and other software
# 使用 Parcel (建议)
# JDK 安装选项
# 选中此复选框以接受“Oracle 二进制代码许可协议”并安装 JDK。取消选中以使用当前安装的 JDK。
# 提供 SSH 登录凭据。
# 同时安装数量建议修改为合适的值
# Install Agents
# 因为之前所有节点已安装agent,进度应该很快
# Install Parcels
# 可以选择cdh6和cdh5两个版本,选择自己已下载的版本
# Inspect Cluster
# Inspect Network Performance
# Inspect Hosts
# 检查器在所有 4 个主机上运行。
# 个别主机正确地解析了自己的主机名称。
# 查询存在冲突的初始脚本时未发现错误。
# 检查 /etc/hosts 时未发现错误。
# 所有主机均将 localhost 解析为 127.0.0.1。
# 检查过的所有主机均正确且及时地解析了彼此的主机名称。
# 主机时钟几乎同步(10 分钟内)。
# 整个群集中的主机时区一致。
# The user 'kudu' is not part of group 'hive' on the following hosts:
ansible hadoop -m user -a 'name=kudu groups=hive append=yes'
# 软件包和 parcel 之间未检测到冲突。
# 没有存在已知错误的内核版本在运行。
# 所有主机上的 /proc/sys/vm/swappiness 都未发现问题。
# 没有任何性能与“透明大页面”设置有关。
# 已满足 CDH 5 Hue Python 版本依赖关系。
# Hue Psycopg2 version for PostgreSQL is satisfied for both CDH 5 and CDH 6.
# 4 hosts are running CDH 5 and 0 hosts are running CDH 6.
# 每个群集中检查过的所有主机均在运行相同版本的组件。
# 所有托管的主机都拥有不一致的 Java 版本。
# 所检查的所有 Cloudera Management Daemon 版本与服务器一致。
# 所检查的所有 Cloudera 管理代理版本与服务器一致。
# 群集设置
# Select Services
# 自定义角色分配
注意:
ZooKeeper:
Cloudera suggests at least 3 Servers for ZooKeeper
HDFS:
Cloudera suggests at least 3 DataNodes for HDFS
Java Heap Size of NameNode in Bytes is recommended to be at least 1GB for every million HDFS blocks. Suggested minimum value: 4.0 GiB
Hive:
Spark Executor Cores的值至少为4
主机问题:
存被调拨过度:
Java 最大堆大小乘以 1.3 等于近似的 JVM 开销。
实际分配(PC机器配置不够,凑合点吧):
server02 1 NN B HFS NFSG G HMS WHCS HS2 HS LB OS RM JHS S
server03 1 SNN NFSG G SM AM HM RM ES AP TP S
server[04-05] 2 DN G NM
# 数据库设置
# 审核更改
# 命令详细信息
# Show All Steps
# 对当前 NameNode 的名称目录进行格式化。如果名称目录不为空,此操作将失败。(出现情形:重装cdh并且未清理各服务生成的配置或者文件)
解决办法:
清空namenode目录
rm -rf /dfs/nn/*
然后resume
# 正在创建 Oozie 数据库表
# Process oozie-OOZIE-SERVER-createdbtables (id=62) on host server02 (id=2) exited with 1 and expected 0
查看错误日志/var/run/cloudera-scm-agent/process/62-oozie-OOZIE-SERVER-createdbtables/logs/stderr.log:java.lang.Exception: DB schema exists
解决办法:
删除库oozie_oozie_server
然后resume
# 汇总
完全正常
# 成功安装,跳转http://192.168.1.120:7180/cmf/home
进入集群CDH的状态监控汇总页
# 卸载服务,删除配置文件(注意有些目录比如/dfs/nn等也需要清理,否则重新安装cdh会报错)
ansible cm,hadoop -m service -a 'name=cloudera-scm-agent state=stopped'
ansible cm -m service -a 'name=cloudera-scm-server-db state=stopped'
ansible cm -m service -a 'name=cloudera-scm-server state=stopped'
ansible cm,hadoop -m shell -a "cd /opt/cm && ls *.rpm | sed 's/.x86_64.rpm//g' | xargs rpm -ev"
ansible cm,hadoop -m shell -a 'rm -rf /etc/cloudera* /var/lib/cloudera* /var/log/cloudera* /opt/cloudera /etc/yum.repos.d/cloudera* /dfs/nn/*'
# 如果需要重装,则再次进行安装步骤即可
192.168.1.120 Cloudera Manager Server,Cloudera Manager Agent,内嵌postgresql or MariaDB
192.168.1.121 Cloudera Manager Agent,NameNode,ResourceManager以及其他服务
192.168.1.122 Cloudera Manager Agent,SecondaryNameNode,NodeManager以及其他服务
192.168.1.123 Cloudera Manager Agent,DataNode,NodeManager以及其他服务
192.168.1.124 Cloudera Manager Agent,DataNode,NodeManager以及其他服务
# 环境准备
# 登录1.120配置免密码登录到自身以及其他主机
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.120
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.121
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.122
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.123
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.1.124
# 安装ansible
yum install ansible -y
# 定义ansible可管理的主机
cat <<EOF >> /etc/ansible/hosts
[cm]
192.168.1.120
[hadoop]
192.168.1.121
192.168.1.122
192.168.1.123
192.168.1.124
EOF
# # 关闭防火墙
# ansible cm,hadoop -m service -a "name=firewalld enabled=no state=stopped"
# # 关闭selinux
# ansible ambari,hadoop -m lineinfile -a 'path=/etc/selinux/config regexp="^SELINUX=" line="SELINUX=disabled"'
# # 禁用透明大页面压缩
# ansible cm,hadoop -m shell -a 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
# ansible cm,hadoop -m shell -a 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
# ansible cm,hadoop -m shell -a "echo -e 'echo never > /sys/kernel/mm/transparent_hugepage/defrag\necho never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local"
# # 优化交换分区
# ansible cm,hadoop -m shell -a 'echo "vm.swappiness = 10" >> /etc/sysctl.conf'
# ansible cm,hadoop -m shell -a 'sysctl -p'
# # 配置ntp时钟同步
# ansible cm,hadoop -m yum -a "name=ntp state=present"
# ansible cm,hadoop -m service -a "name=ntpd enabled=yes state=started"
# ansible cm,hadoop -m shell -a "date"
# # 安装openjdk1.8
# ansible cm,hadoop -m yum -a "name=java-1.8.0-openjdk,java-1.8.0-openjdk-devel state=present"
# # 安装mysql数据库以及mysql-connector-java(如果不安装,则可以选择使用cm内嵌的postgresql,但生产环境不建议使用)
# ansible cm -m yum -a "name=mariadb,mariadb-server,mysql-connector-java state=present"
# ansible cm -m service -a 'name=mariadb enabled=yes state=started'
# 提前下载部分资源包
# 配置阿里云nameserver
ansible cm,hadoop -m shell -a 'cat /dev/null > /etc/resolv.conf'
ansible cm,hadoop -m blockinfile -a 'path=/etc/resolv.conf block="nameserver 223.5.5.5"'
# 配置所有节点的cm repo库
ansible cm,hadoop -m yum -a 'name=yum-utils state=present'
ansible cm,hadoop -m shell -a 'yum-config-manager --add-repo https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/cloudera-manager.repo'
ansible cm,hadoop -m shell -a 'rpm --import https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPM-GPG-KEY-cloudera'
# 下载cm server agent等安装包
# 通过yum downloadonly方式下载离线包
yum install -y yum-plugin-downloadonly
yum install --downloaddir=/var/www/html/cm --downloadonly cloudera-manager-agent cloudera-manager-server
# 或者通过手动方式下载rpm
yum install -y wget
ansible cm,hadoop -m file -a 'path=/opt/cm state=directory'
cd /opt/cm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.3.0-1281944.el7.x86_64.rpm
wget https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-6.3.0-1281944.el7.x86_64.rpm
# 分发agent rpm包到所有从机(也可以cm web配置的时候再在从机上安装agent)
ansible hadoop -m copy -a 'src=/opt/cm/cloudera-manager-agent-6.3.0-1281944.el7.x86_64.rpm dest=/opt/cm/'
ansible hadoop -m copy -a 'src=/opt/cm/cloudera-manager-daemons-6.3.0-1281944.el7.x86_64.rpm dest=/opt/cm/'
# 下载cdh parcels包
# cdh5下载地址
wget http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel
wget http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1
# cdh6下载地址
wget https://archive.cloudera.com/cdh6/6.3.0/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel
wget https://archive.cloudera.com/cdh6/6.3.0/parcels/CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel.sha1
# 所有节点安装rpm包
# 主节点安装cm-server cm-agent等,从节点安装cm-agent(非生产模式下运行 Cloudera Manager,该模式使用嵌入式 PostgreSQL 数据库。请在移入生产环境之前切换为使用支持的外部数据库)
ansible cm,hadoop -m shell -a 'cd /opt/cm && yum -y localinstall *.rpm'
# 将cdh parcels包移动到/opt/cloudera/parcel-repo/下
ansible cm -m shell -a 'cd /opt/cm && mv CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel /opt/cloudera/parcel-repo/''
ansible cm -m shell -a 'cd /opt/cm && mv CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha'
ansible cm -m shell -a 'chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/'
# 启动已安装的服务,并设置开机启动
ansible cm -m service -a 'name=cloudera-scm-server-db enabled=yes state=started'
ansible cm -m service -a 'name=cloudera-scm-server enabled=yes state=restarted'
# 查看cm日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
# 出现以下内容代表server启动完毕
# 2019-08-22 01:30:25,698 INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@1ac53b4c{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
# 2019-08-22 01:30:25,699 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @77881ms
# 2019-08-22 01:30:25,699 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
ansible cm,hadoop -m service -a 'name=cloudera-scm-agent enabled=yes state=started'
ansible cm,hadoop -m shell -a 'systemctl status -l cloudera-scm-agent cloudera-scm-server-db cloudera-scm-server'
ansible cm,hadoop -m shell -a 'systemctl list-units | grep cloudera'
cloudera-scm-agent.service
cloudera-scm-server-db.service
cloudera-scm-server.service
# 访问cm web地址
http://192.168.1.120:7180/cmf/login admin/admin
# 欢迎
# Accept License
# Select Edition
# 最后点击继续
# 欢迎
# Cluster Basics
# Specify Hosts
# 选择存储库
# Cloudera Manager Agent
# Repository Location Public Cloudera Repository
# CDH and other software
# 使用 Parcel (建议)
# JDK 安装选项
# 选中此复选框以接受“Oracle 二进制代码许可协议”并安装 JDK。取消选中以使用当前安装的 JDK。
# 提供 SSH 登录凭据。
# 同时安装数量建议修改为合适的值
# Install Agents
# 因为之前所有节点已安装agent,进度应该很快
# Install Parcels
# 可以选择cdh6和cdh5两个版本,选择自己已下载的版本
# Inspect Cluster
# Inspect Network Performance
# Inspect Hosts
# 检查器在所有 4 个主机上运行。
# 个别主机正确地解析了自己的主机名称。
# 查询存在冲突的初始脚本时未发现错误。
# 检查 /etc/hosts 时未发现错误。
# 所有主机均将 localhost 解析为 127.0.0.1。
# 检查过的所有主机均正确且及时地解析了彼此的主机名称。
# 主机时钟几乎同步(10 分钟内)。
# 整个群集中的主机时区一致。
# The user 'kudu' is not part of group 'hive' on the following hosts:
ansible hadoop -m user -a 'name=kudu groups=hive append=yes'
# 软件包和 parcel 之间未检测到冲突。
# 没有存在已知错误的内核版本在运行。
# 所有主机上的 /proc/sys/vm/swappiness 都未发现问题。
# 没有任何性能与“透明大页面”设置有关。
# 已满足 CDH 5 Hue Python 版本依赖关系。
# Hue Psycopg2 version for PostgreSQL is satisfied for both CDH 5 and CDH 6.
# 4 hosts are running CDH 5 and 0 hosts are running CDH 6.
# 每个群集中检查过的所有主机均在运行相同版本的组件。
# 所有托管的主机都拥有不一致的 Java 版本。
# 所检查的所有 Cloudera Management Daemon 版本与服务器一致。
# 所检查的所有 Cloudera 管理代理版本与服务器一致。
# 群集设置
# Select Services
# 自定义角色分配
注意:
ZooKeeper:
Cloudera suggests at least 3 Servers for ZooKeeper
HDFS:
Cloudera suggests at least 3 DataNodes for HDFS
Java Heap Size of NameNode in Bytes is recommended to be at least 1GB for every million HDFS blocks. Suggested minimum value: 4.0 GiB
Hive:
Spark Executor Cores的值至少为4
主机问题:
存被调拨过度:
Java 最大堆大小乘以 1.3 等于近似的 JVM 开销。
实际分配(PC机器配置不够,凑合点吧):
server02 1 NN B HFS NFSG G HMS WHCS HS2 HS LB OS RM JHS S
server03 1 SNN NFSG G SM AM HM RM ES AP TP S
server[04-05] 2 DN G NM
# 数据库设置
# 审核更改
# 命令详细信息
# Show All Steps
# 对当前 NameNode 的名称目录进行格式化。如果名称目录不为空,此操作将失败。(出现情形:重装cdh并且未清理各服务生成的配置或者文件)
解决办法:
清空namenode目录
rm -rf /dfs/nn/*
然后resume
# 正在创建 Oozie 数据库表
# Process oozie-OOZIE-SERVER-createdbtables (id=62) on host server02 (id=2) exited with 1 and expected 0
查看错误日志/var/run/cloudera-scm-agent/process/62-oozie-OOZIE-SERVER-createdbtables/logs/stderr.log:java.lang.Exception: DB schema exists
解决办法:
删除库oozie_oozie_server
然后resume
# 汇总
完全正常
# 成功安装,跳转http://192.168.1.120:7180/cmf/home
进入集群CDH的状态监控汇总页
# 卸载服务,删除配置文件(注意有些目录比如/dfs/nn等也需要清理,否则重新安装cdh会报错)
ansible cm,hadoop -m service -a 'name=cloudera-scm-agent state=stopped'
ansible cm -m service -a 'name=cloudera-scm-server-db state=stopped'
ansible cm -m service -a 'name=cloudera-scm-server state=stopped'
ansible cm,hadoop -m shell -a "cd /opt/cm && ls *.rpm | sed 's/.x86_64.rpm//g' | xargs rpm -ev"
ansible cm,hadoop -m shell -a 'rm -rf /etc/cloudera* /var/lib/cloudera* /var/log/cloudera* /opt/cloudera /etc/yum.repos.d/cloudera* /dfs/nn/*'
# 如果需要重装,则再次进行安装步骤即可