第一章Cloudera Manager(CM)简介
1.1 CM简介
Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
1.2 CM架构
第二章 阿里云服务器准备
本次我们选择使用阿里云服务器进行项目部署,以便于以后更好的适应云开发环境。
2.1 注册并登录阿里云账户
阿里云网址为:https://aliyun.com/,注册账号并登录。
2.2 购买ECS云服务器
1)点击右上角控制台
2)打开侧边栏,点击云服务器ECS
3)点击左侧实例,然后点击右上角创建实例
4)选择付费模式和地域可用区
包年包月一般是企业中会使用。学习阶段可以选择按量付费或者抢占式实例。按量付费稍微贵一些,按照使用时长进行计费。抢占式实例有被释放的风险,但一般情况下不会出现,且抢占式实例远远低于前两种的价格,建议选择,但抢占式实例不能更改或升级实力规格。(后两种模式在停机不收费的情况下,公网IP可能会被收回,下次启动可能会改变,这里需要注意。)
5)选择服务器配置和系统(如果提示余额不足,请先充值并保证阿里云账户余额大于100元。)
6)网络和安全组配置
带宽我们选择按用量付费,并把带宽设置为100Mbps。完成后点击下一步:系统设置。
7)系统配置
8)分组设置,全部使用默认即可,或根据业务需求分组或者分配标签。
9)确认订单,创建实例
10)创建成功之后,点击管理控制台进入控制台管理界面
2.3 ECS升级配置及安全组修改
1)停止实例,勾选hadoop102,点击停止按钮
2)更改实例规格,可点击右上方进行实例状态刷新,等到hadoop102状态变为“已停止”后,点击更改实例规格
3)重启升级后的hadoop102,并更改网络安全组配置
4)点击配置规则
CDH中需要放行的端口如下:
端口号 |
组件 |
备注 |
7180 |
CDH web UI |
|
9870 |
HDFS web UI |
|
8088 |
Yarn web UI |
|
19888 |
Historyserver web UI |
|
8080 |
|
|
8888 |
Hue(未优化) |
|
8889 |
Hue(优化) |
|
3306 |
MySQL |
|
6379 |
Redis |
|
9092 |
kafka |
|
2181 |
zk |
|
4040 |
Spark |
|
18088 |
Spark |
|
10000 |
Hiveserve2 |
|
10002 |
Hive |
|
11000 |
Oozie |
|
51000 |
Sentry |
|
8020 |
HDFS |
|
可点击手动添加进行配置,也可使用文件进行导入,可使用该json文件进行导入:https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/ecs_cn-shenzhen.json
点击左侧安全组内实例列表,确保三个实例都在安全组内。如果没有在同一个安全组内,通过点击右上角批量导入实例进行添加
第三章 CM部署环境准备
3.1 shell工具连接服务器
打开远程连接工具(如Xshell、Finalshell等)并连接至三个实例。我们在访问公网资源时候需要使用实例的公网IP
点击公网IP旁的复制按钮进行复制,并复制到远程连接工具的主机名处进行连接
如下图,已经成功连接三台实例
3.2 修改实例中hosts文件
vim /etc/hosts
172.17.84.61 hadoop102 hadoop102 172.17.84.62 hadoop103 hadoop103 172.17.84.63 hadoop104 hadoop104
注意:三个实例都需要配置,这里每个人的IP不一样,填写的是内网IP,做完后ping一下看是否能ping通,如果能ping通表示配置成功。(如果想要在Windows环境中使用hostname访问阿里云主机,需要配置Windows本地hosts)
3.3 SSH免密登录
配置hadoop102、hadoop103、hadoop104三台服务器免密登录。CDH服务开启与关闭是通过server和agent来完成的,所以这里不需要配置SSH免密登录,但是为了我们分发文件方便,在这里我们也配置SSH。
3.3.1生成公钥和私钥
执行ssh-keygen -t rsa并敲三次回车,会在我们的/root/.ssh目录下生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
ssh-keygen -t rsa
由于Linux系统中名称首位为.的文件和文件夹会被隐藏,因此使用ll -a命令才可显式地看到".ssh"文件夹
3.3.2拷贝公钥
将公钥拷贝到要免密登录的目标机器上(需要输入yes和对应实例的root密码,一共输入9遍)
[root@hadoop102 .ssh]# ssh-copy-id hadoop102 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host ‘hadoop102 (172.17.84.61)‘ can‘t be established. ECDSA key fingerprint is SHA256:SeLIbTWo16rK/9sFijEhRUmAvvJJV3XOOU5nJh5cGiA. ECDSA key fingerprint is MD5:bc:fd:55:d1:38:95:26:03:47:b4:c8:d8:46:ba:e8:be. 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@hadoop102‘s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh ‘hadoop102‘" and check to make sure that only the key(s) you wanted were added.
[root@hadoop102 .ssh]# ssh-copy-id hadoop103 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host ‘hadoop103 (172.17.84.62)‘ can‘t be established. ECDSA key fingerprint is SHA256:F2xQpv+atNNuES8eUhgnPkEDWltgWhPFOmNzkmIFwDY. ECDSA key fingerprint is MD5:1a:8f:a1:51:00:3f:6b:92:3f:35:a0:16:28:d5:3b:f2. 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@hadoop103‘s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh ‘hadoop103‘" and check to make sure that only the key(s) you wanted were added.
[root@hadoop102 .ssh]# ssh-copy-id hadoop104 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host ‘hadoop104 (172.17.84.63)‘ can‘t be established. ECDSA key fingerprint is SHA256:jHmx2MOSM11uh9H1miowKwdmpvVubYo6U0h5UugRjY4. ECDSA key fingerprint is MD5:dd:87:aa:6f:19:33:81:40:2b:88:ef:c7:0d:4d:82:2b. 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@hadoop104‘s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh ‘hadoop104‘" and check to make sure that only the key(s) you wanted were added.
3.3.3配置所有免密登录
重复1和2的操作,配置hadoop103和hadoop104对hadoop102、hadoop103、hadoop104三台服务器免密登录。
3.4 集群同步脚本
1)在/root目录下创建bin目录,并在bin目录下创建文件xsync,文件内容如下:
mkdir bin
cd bin/
vim xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
2)修改脚本xsync具有执行权限
chmod u+x xsync
3)分发脚本本身
xsync xsync
3.5 集群整体操作脚本
1)在/root/bin目录下创建脚本xcall.sh
vim xcall.sh
2)在脚本中编写如下内容
#! /bin/bash for i in hadoop102 hadoop103 hadoop104 do echo --------- $i ---------- ssh $i "$*" done
3)修改脚本执行权限
chmod u+x xcall.sh
4)将/etc/profile文件追加到~/.bashrc后面
修改.bashrc文件,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一个特定的用户,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了
登陆 linux 启动 bash时首先会去读取 ~/.bash_profile文件,在.bash_profile文件中会显式调用.bashrc,这样 ~/.bashrc也就得到执行了。(这里请不要用xcall.sh 脚本去执行,分别手动进行执行,不然会出错)
[root@hadoop102 ~]# cat /etc/profile >> ~/.bashrc [root@hadoop103 ~]# cat /etc/profile >> ~/.bashrc [root@hadoop104 ~]# cat /etc/profile >> ~/.bashrc
5)分发xcall.sh
xsync /root/bin/xcall.sh
6)测试
xcall.sh jps
3.6 检查防火墙是否关闭
6.3.x 官方部署文档(英文):https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/installation_reqts.html
如果已经关闭,则进行下一步;如果未关闭,则先备份当前防火墙规则并关闭防火墙
[root@hadoop102 bin]# sudo systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
此处是防火墙未关闭的情况需要执行的命令
# 保存当前防火墙规则 sudo iptables-save > ~/firewall.rules # 禁用防火墙 sudo systemctl disable firewalld # 停止防火墙 sudo systemctl stop firewalld
3.7 检查hostname是否配置成功
# 使用命令 hostname 或者 hostnamectl status进行查看
[root@hadoop102 bin]# hostname
hadoop102
[root@hadoop102 bin]# hostnamectl status Static hostname: hadoop102 Icon name: computer-vm Chassis: vm Machine ID: 20210623111207095151419199170789 Boot ID: 0088c360a7414da9a73db12a3dcfb950 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.31.1.el7.x86_64 Architecture: x86-64
3.8 禁用SELinux mode
安全增强的Linux (SELinux)允许通过策略设置访问控制。如果在部署CDH时遇到困难,请在将CDH部署到集群之前,在每个主机上将SELinux设置为permissive模式。(关于什么是SELinux,不是课程重点,感兴趣的同学可以自行查询。这里只需要按照下面命令进行配置,即可在后面环境检查时候顺利通过。)
# 使用命令getenforce检查当前SELinux mode状态
[root@hadoop102 bin]# getenforce
Disabled
如果输出结果为Permissive 或Disabled,则可进行3.9中的操作。
如果输出结果为enforcing,则需要:
1)打开/etc/selinux/config文件
2)将SELINUX= enforcing这一行改为SELINUX= permissive
3)保存并关闭文件
4)重新启动系统或运行setenforce 0命令来立即禁用SELinux
3.9 禁用透明大页配置
Cloudera公司建议我们关闭透明大页。如果未关闭,则在后面的环境检测中会报如下错误。(关于什么是透明大页,不是课程重点,感兴趣的同学可以自行查询。这里只需要按照下面命令进行配置,即可在后面环境检查时候顺利通过。)
1)在三台实例上分别执行以下四行代码
echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled echo ‘echo never > /sys/kernel/mm/transparent_hugepage/defrag‘ >> /etc/rc.local echo ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled‘ >> /etc/rc.local
2)前两行代码只能暂时生效,当重启后配置会消失
[root@hadoop102 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@hadoop102 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
3)永久生效需要把信息加到启动项中
[root@hadoop102 ~]# echo ‘echo never > /sys/kernel/mm/transparent_hugepage/defrag‘ >> /etc/rc.local
[root@hadoop102 ~]# echo ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled‘ >> /etc/rc.local
3.10 启用NTP服务(可选)
CDH要求在集群中的每台机器上配置一个网络时间协议(NTP)服务。大多数操作系统使用时间同步的ntpd服务。(RHEL 7兼容的操作系统默认使用chronyd而不是ntpd。如果chronyd正在运行,Cloudera Manager将使用它来确定主机时钟是否同步。否则,Cloudera Manager使用ntpd。)
[root@hadoop102 bin]# ps -ef |grep chronyd chrony 570 1 0 15:51 ? 00:00:00 /usr/sbin/chronyd root 1744 1303 0 17:01 pts/0 00:00:00 grep --color=auto chronyd
我们使用的阿里云实例,已经运行了chronyd。且阿里云自动会同步时间,所以如果在阿里云上部署的话,这一步同步时间操作可以跳过。
3.11 为hue安装python2.7服务
CentOS 7版本可跳过,我们使用的是CentOS 7,使用命令可观察当前的python版本。
[root@hadoop102 bin]# python --version
Python 2.7.5
3.12 【了解】CDH平台权限与命令概览
任务 |
需要的权限 |
安装Cloudera Manager Server |
安装CM Server的主机需要有root or sudo权限。 |
使用service或systemctl工具启动、停止或重新启动Cloudera Manager服务器
|
Cloudera Manager Server 的主机需要有root or sudo权限 默认情况下服务运行在cloudera-scm用户下 |
使用CM安装CDH组件 |
在Cloudera Manager初始安装时配置的如下之一: |
使用CM安装CM Agent |
在Cloudera Manager初始安装时配置的如下之一:
有密码或者ssh秘钥的方式访问root用户的权限 |
自动启动CM Agent进程 |
在运行时访问root帐户,通过以下场景之一: |
手动启动、停止或重新启动Cloudera Manager Agent进程 |
root or sudo 权限。 |
如果您想为Cloudera Manager用户配置特定的sudo访问(默认情况下是Cloudera -scm),您可以使用以下列表来完成,Cloudera Manager运行的sudo命令有:
yum (RHEL/CentOS/Oracle) zypper (SLES) apt-get (Ubuntu) apt-key (Ubuntu) sed service /sbin/chkconfig (RHEL/CentOS/Oracle) /usr/sbin/update-rc.d (Ubuntu) id rm mv chown install
3.13 【了解】CDH平台使用的端口概览
1)Cloudera Manager和Cloudera Navigator使用的端口
2)点对点包裹分发中使用的端口
3)外部端口
组件 |
服务 |
端口 |
配置 |
说明 |
Cloudera Manager Server |
HTTP (Web UI) |
7180 |
管理 > 设置 > 类别 > 端口和地址 > HTTP 端口的管理控制台 |
web 控制台使用的 HTTP 端口。 |
|
HTTPS (Web UI) |
7183 |
管理 > 设置 > 类别 > 端口和地址 > HTTPS 管理控制台端口 |
如果启用了 HTTPS,则 web 控制台使用的端口。如果启用,端口 7180 将保持打开,但是将所有请求重定向到端口 7183 上的 HTTPS。 |
Cloudera Navigator Metadata Server |
HTTP (Web UI) |
7187 |
Cloudera Management Service > 配置 > 类别 > 端口和地址 > 导航器元数据服务器端口 |
Navigator 元数据服务器侦听请求的端口。 |
Backup and Disaster Recovery |
HTTP (Web UI) |
7180 |
管理 > 设置 > 类别 > 端口和地址 > Admin Console 的 HTTP 端口 |
用于与 Cloudera Manager 通信 |
|
HTTPS (Web UI) |
7183 |
管理 > 设置 > 类别 > 端口和地址 > Admin Console 的 HTTPS 端口 |
在启用 https 时,用于与 Cloudera Manager 通信 |
|
HDFS NameNode |
8020 |
HDFS 服务 > 配置 > 类 > 端口和地址 > NameNode 端口 |
HDFS 和 Hive/Impala 复制: 从目标 HDFS 和 MapReduce 主机到源 HDFS NameNode(s) 的通信。Hive/Impala 复制: 从源 Hive 主机到目标 HDFS NameNode(s) 的通信 |
|
HDFS DataNode |
50010 |
HDFS 服务 > 配置 > 类 > 端口和地址 > DataNode 收发器端口 |
HDFS 和 Hive/Impala 复制: 从目标 HDFS 和 MapReduce 主机到源 HDFS DataNode(s) 的通信。Hive/Impala 复制: 从源 Hive 主机到目标 HDFS DataNode(s) 的通信。 |
Telemetry Publisher(??) |
HTTP |
10110 |
集群 > Cloudera Management Service > 类别 > 端口和地址 > Telemetry Publisher Server Port |
遥测发布服务器侦听请求的端口 |
Telemetry Publisher |
HTTP (Debug) |
10111 |
集群 > Cloudera Management Service > 类别 > 端口和地址 > Telemetry Publisher Web UI Port |
遥测发布者启动调试 web 服务器的端口。设置为 - 1 以禁用调试服务器 |
4)内部端口
组件 |
服务 |
端口 |
配置 |
描述 |
Cloudera Manager Server |
Avro (RPC) |
7182 |
管理 > 设置 > 类 > 端口和地址 > 连接到服务器的代理端口 |
用于代理服务器心跳 |
|
嵌入式 PostgreSQL 数据库 |
7432 |
|
可选的嵌入式 PostgreSQL 数据库,用于存储 Cloudera Manager 服务器的配置信息。 |
|
点对点包裹分布 |
7190, 7191 |
主机 > 所有主机 > 配置 > P2P Parcel 分配端口 |
用于在安装和升级操作期间向集群主机分发包。 |
Cloudera Manager Agent |
Custom protocol |
9000 |
/etc/cloudera-scm-agent/config.ini |
用于检索日志和诊断信息,如结果摘要。已完成命令的 json 文件。还用于从代理请求即时心跳并查看代理状态,如心跳、主机和服务信息。 |
Event Server |
Custom protocol |
7184 |
Cloudera Management Service > 配置 > 类别 > 端口和地址 > 事件发布端口 |
事件服务器侦听事件发布的端口。 |
|
Custom protocol |
7185 |
Cloudera Management Service > 配置 > 类别 > 端口和地址 > 事件查询端口 |
事件服务器侦听事件查询的端口。 |
|
HTTP (Debug) |
8084 |
Cloudera Management Service > 配置 > 类别 > 端口和地址 > Event Server Web UI 端口 |
事件服务器调试页面的端口。设置为 - 1 以禁用调试服务器。 |
警报发布 |
Custom protocol |
10101 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > 警报:侦听端口 |
警报发布者侦听内部 API 请求的端口。 |
服务监控 |
HTTP (Debug) |
8086 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 >Service Monitor Web UI 端口 |
服务监视器调试页面的端口。设置为 - 1 以禁用调试服务器。 |
|
HTTPS (Debug) |
|
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Service Monitor Web UI HTTPS Port |
服务监视器的 HTTPS 调试页面的端口。 |
|
Custom protocol |
9997 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Service Monitor 侦听端口 |
服务监视器监听代理消息的端口。 |
|
Internal query API (Avro) |
9996 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Service Monitor 喷嘴端口 |
服务监视器的查询 API 公开的端口。 |
Activity Monitor |
HTTP (Debug) |
8087 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Activity Monitor Web UI 端口 |
活动监视器调试页的端口。设置为 - 1 以禁用调试服务器。 |
|
HTTPS (Debug) |
|
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Activity Monitor Web UI HTTPS Port |
活动监视器的 HTTPS 调试页面的端口。 |
|
Custom protocol |
9999 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Activity Monitor 侦听端口 |
活动监视器侦听代理消息的端口。 |
|
Internal query API (Avro) |
9998 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Activity Monitor 喷嘴端口 |
活动监视器的查询 API 公开的端口。 |
Host Monitor |
HTTP (Debug) |
8091 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Host Monitor Web UI 端口 |
主机监视器调试页的端口。设置为 - 1 以禁用调试服务器。 |
|
Custom protocol |
9995 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 >Host Monitor 侦听端口 |
主机监视器监听代理消息的端口。 |
|
Internal query API (Avro) |
9994 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Host Monitor 喷嘴端口 |
主机监视器的查询 API 公开的端口。 |
Reports Manager |
Queries (Thrift) |
5678 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Reports Manager Server Port |
报告管理器侦听请求的端口。 |
|
HTTP (Debug) |
8083 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 > Reports Manager Web UI Port |
报告管理器启动调试 web 服务器的端口。设置为 - 1 以禁用调试服务器。 |
Cloudera Navigator 审计服务 |
HTTP |
7186 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 >Navigator Audit Server Port |
导航器审计服务器侦听请求的端口。 |
|
HTTP (Debug) |
8089 |
Cloudera Management Service> 配置 > 类别 > 端口和地址 >Navigator Audit Server Web UI Port |
导航器审计服务器运行调试 web 服务器的端口。设置为 - 1 以禁用调试服务器。 |
5)CDH 组件使用的外部端口
组件 |
服务 |
端口 |
配置 |
说明 |
Apache Hadoop HDFS |
DataNode |
9866 |
dfs.datanode.address |
DataNode HTTP 服务器端口 |
|
|
1004 |
dfs.datanode.address |
|
|
|
9864 |
dfs.datanode.http.address |
|
|
|
9865 |
dfs.datanode.https.address |
|
|
|
1006 |
dfs.datanode.http.address |
|
|
|
9867 |
dfs.datanode.ipc.address |
|
|
NameNode |
8020 |
fs.default.name or fs.defaultFS |
已不推荐使用fs.default.nameis(但仍然可以使用) |
|
|
8022 |
dfs.namenode. servicerpc-address |
HDFS 守护进程使用的可选端口,以避免共享客户端使用的 RPC 端口 (8020)。Cloudera 建议使用端口 8022。 |
|
|
9870 |
dfs.http.address or dfs.namenode.http-address |
dfs.http.address 不推荐使用 (但仍然有效) |
|
NFS gateway |
2049 |
nfs3.server.port |
nfs port |
|
|
4242 |
nfs3.mountd.port |
mountd port |
|
|
111 |
|
端口映射(或 Rpcbind)端口 |
|
|
50079 |
nfs.http.port |
NFS 网关守护进程使用这个端口来服务指标。该端口在版本 5.10 或更高版本上是可配置的。 |
|
|
50579 |
nfs.https.port |
NFS 网关守护进程使用这个端口来服务指标。该端口在版本 5.10 或更高版本上是可配置的。 |
|
HttpFS |
14000 |
|
|
|
|
14001 |
|
|
Apache Hadoop YARN (MRv2) |
ResourceManager |
8032 |
yarn. resourcemanager. address |
|
|
|
8033 |
yarn. resourcemanager. admin.address |
|
|
|
8088 |
yarn. resourcemanager. webapp.address |
|
|
|
8090 |
yarn. resourcemanager. webapp.https.address |
|
|
NodeManager |
8042 |
yarn. nodemanager. webapp.address |
|
|
|
8044 |
yarn. nodemanager. webapp.https.address |
|
|
JobHistory Server |
19888 |
mapreduce. jobhistory. webapp.address |
|
|
|
19890 |
mapreduce. jobhistory. webapp.https.address |
|
|
ApplicationMaster |
|
|
ApplicationMaster 使用无法限制的临时端口提供 HTTP 服务。客户端永远不会从集群外部直接访问此端口。对 ApplicationMaster web 服务器的所有请求都使用 YARN ResourceManager(代理服务) 路由。锁定对集群网络内临时端口范围的访问可能会限制您对 ApplicationMaster UI 及其日志的访问,以及查看正在运行的应用程序的能力。 |
Apache Flume |
Flume Agent |
41414 |
|
|
Apache Hadoop KMS |
Key Management Server |
16000 |
kms_http_port |
适用于 Java 密钥存储库 KMS 和密钥受信者 KMS。 |
Apache HBase |
Master |
16000 |
hbase.master. port |
IPC |
|
|
16010 |
hbase.master. info.port |
HTTP |
|
RegionServer |
16020 |
hbase. regionserver. port |
IPC |
|
|
6030 |
hbase. regionserver. info.port |
HTTP |
|
REST |
20550 |
hbase.rest.port |
HBase 中的默认 REST 端口是 8080。因为这是一个常用的端口,Cloudera Manager 将默认值设置为 20550。 |
|
REST UI |
8085 |
|
|
|
Thrift Server |
9090 |
Pass -p on CLI |
|
|
Thrift Server |
9095 |
|
|
|
|
9090 |
Pass --port on CLI |
|
|
Lily HBase Indexer |
11060 |
|
|
Apache Hive |
Metastore |
9083 |
|
|
|
HiveServer2 |
10000 |
hive. server2. thrift.port |
Beeline 命令解释器要求您在命令行上指定此端口。如果使用 Oracle 数据库,则必须手动保留此端口。有关更多信息,请参见HiveServer 2 的预留端口。 |
|
HiveServer2 Web User Interface (UI) |
10002 |
hive. server2. webui.port in hive-site.xml |
|
|
WebHCat Server |
50111 |
templeton.port |
|
Apache Hue |
Server |
8888 |
|
|
|
Load Balancer |
8889 |
|
|
Apache Impala |
Impala Daemon |
21000 |
|
用于通过impala-shell和 Cloudera ODBC 驱动程序的 1.2 版传输命令和接收结果。 |
|
|
21050 |
|
用于通过应用程序 (如商业智能工具) 传输命令和接收结果,使用 JDBC、Hue 中的 Beeswax 查询编辑器和 Cloudera ODBC 驱动程序的 2.0 或更高版本。 |
|
|
25000 |
|
用于管理员监视和故障排除的 Impala web 接口。 |
Apache Kafka |
Broker |
9092 |
port |
生产者和消费者使用的主要通信端口; 也用于内部节点间通信。 |
|
|
9093 |
ssl_port |
生产者和消费者使用的受保护的通信端口; 也用于节点间通信。 |
Apache Kudu |
Master |
7051 |
|
Kudu Master RPC port |
|
|
8051 |
|
Kudu Master HTTP server port |
|
TabletServer |
7050 |
|
Kudu TabletServer RPC port |
|
|
8050 |
|
Kudu TabletServer HTTP server port |
Apache Oozie |
Oozie Server |
11000 |
OOZIE_HTTP_PORT in oozie-env.sh |
HTTP |
|
|
11443 |
|
HTTPS |
Apache Sentry |
Sentry Server |
8038 |
sentry.service. server.rpc-port |
|
|
|
51000 |
sentry.service. web.port |
|
Apache Solr |
Solr Server |
8983 |
|
HTTP 端口的所有 solr 具体的行动,更新 / 查询。 |
|
|
8985 |
|
用于所有特定于 solr 的操作、更新 / 查询的 HTTPS 端口。 |
Apache Spark |
Default Master RPC port |
7077 |
|
|
|
Default Worker RPC port |
7078 |
|
|
|
Default Master web UI port |
18080 |
|
|
|
Default Worker web UI port |
18081 |
|
|
|
History Server |
18088 |
history.port |
|
Apache Sqoop |
Metastore |
16000 |
sqoop. metastore. server.port |
|
Apache ZooKeeper |
Server (with CDH or Cloudera Manager) |
2181 |
clientPort |
Client port |
6)CDH组件使用的内部端口
组件 |
服务 |
端口 |
配置 |
说明 |
Apache Hadoop HDFS |
Secondary NameNode |
9868 |
dfs.secondary.http.address or dfs.namenode. secondary. http-address |
dfs.secondary.http.address 不推荐使用 (但是依然有效) |
|
|
9869 |
dfs.secondary.https.address |
|
|
JournalNode |
8485 |
dfs.namenode. shared.edits.dir |
|
|
|
8480 |
dfs.journalnode. http-address |
|
|
|
8481 |
dfs.journalnode. https-address |
|
|
Failover Controller |
8019 |
|
用于 NameNode HA |
Apache Hadoop YARN (MRv2) |
ResourceManager |
8030 |
yarn.resourcemanager.scheduler.address |
|
|
|
8031 |
yarn. resourcemanager. resource-tracker. address |
|
|
NodeManager |
8040 |
yarn. nodemanager. localizer. address |
|
|
|
8041 |
yarn. nodemanager. address |
|
|
JobHistory Server |
10020 |
mapreduce. jobhistory. address |
|
|
|
10033 |
mapreduce. jobhistory.admin. address |
|
|
Shuffle HTTP |
13562 |
mapreduce.shuffle.port |
|
Apache Hadoop KMS |
Key Management Server |
16001 |
kms_admin_port |
适用于 Java 密钥存储库 KMS 和密钥受信者 KMS。 |
Apache HBase |
HQuorumPeer |
2181 |
hbase. zookeeper. property. clientPort |
HBase-managed 管理员模式 |
|
|
2888 |
hbase. zookeeper. peerport |
HBase-managed 管理员模式 |
|
|
3888 |
hbase. zookeeper. leaderport |
HBase-managed 管理员模式 |
Apache Impala |
Impala Daemon |
22000 |
|
内部使用。Impala 守护进程使用这个端口互相通信。 |
|
|
23000 |
|
内部使用。Impala 守护进程在这个端口上侦听来自 statestore 守护进程的更新。 |
|
StateStore Daemon |
24000 |
|
内部使用。statestore 守护进程在这个端口上侦听注册 / 取消注册请求。 |
|
Catalog Daemon |
23020 |
|
内部使用。目录守护进程在此端口上侦听来自 statestore 守护进程的更新。 |
|
|
26000 |
|
内部使用。目录服务使用这个端口与 Impala 守护进程通信。 |
Apache Kafka |
Broker |
9092 |
port |
生产者和消费者使用的主要通信端口; 也用于代理间通信。ion. |
|
|
9093 |
ssl_port |
生产者和消费者使用的受保护的通信端口; 也用于代理间通信。 |
|
|
9393 |
jmx_port |
内部使用。用于通过 JMX 进行管理。 |
|
|
9394 |
kafka.http.metrics.port |
内部使用。这是 HTTP 度量报告器侦听的端口。它用于通过 HTTP 而不是 JMX 检索指标。 |
|
MirrorMaker |
24042 |
jmx_port |
内部使用。用于管理镜子制造商的生产者和消费者。 |
Apache Spark |
Shuffle service |
7337 |
|
|
Apache ZooKeeper |
Server (with CDH only) |
2888 |
X in server.N =host:X:Y |
Peer |
|
Server (with CDH only) |
3888 |
X in server.N =host:X:Y |
Peer |
|
Server (with CDH and Cloudera Manager) |
3181 |
X in server.N =host:X:Y |
Peer |
|
Server (with CDH and Cloudera Manager) |
4181 |
X in server.N =host:X:Y |
Peer |
|
ZooKeeper JMX port |
9010 |
|
ZooKeeper 还将为 RMI 使用另一个随机选择的端口。要允许 Cloudera 管理员监视 ZooKeeper,您必须执行以下操作之一: |
7)DistCp 使用的端口
组件 |
服务 |
Qualifier |
端口 |
外 / 内部 |
配置 |
说明 |
Hadoop HDFS |
NameNode |
|
8020 |
External |
fs.default. nameorfs.defaultFS |
fs.default. name被弃用了(但还是有作用) |
|
DataNode |
Secure |
1004 |
External |
dfs.datanode. address |
|
|
DataNode |
|
50010 |
External |
dfs.datanode. address |
|
WebHDFS |
NameNode |
|
50070 |
External |
dfs.http. addressordfs.namenode. http-address |
dfs.http. address被弃用了(但还是有作用) |
|
DataNode |
Secure |
1006 |
External |
dfs.datanode.http. address |
|
HttpFS |
web |
|
14000 |
|
|
8)第三方组件使用的端口
组件 |
服务 |
Qualifier |
端口 |
协议 |
外 / 内部 |
配置 |
说明 |
Ganglia |
ganglia-gmond |
|
8649 |
UDP/TCP |
Internal |
|
|
|
ganglia-web |
|
80 |
TCP |
External |
Via Apachehttpd |
|
Kerberos |
KRB5 KDC Server |
Secure |
88 |
UDP/TCP |
External |
kdc_portsandkdc_tcp_portsin either the[kdcdefaults]or[realms]sections ofkdc.conf |
By default only UDP |
|
KRB5 Admin Server |
Secure |
749 |
TCP |
External |
kadmind_portin the[realms]section ofkdc.conf |
|
|
kpasswd |
|
464 |
UDP/TCP |
External |
|
|
SSH |
ssh |
|
22 |
TCP |
External |
|
|
PostgreSQL |
|
|
5432 |
TCP |
Internal |
|
|
MariaDB |
|
|
3306 |
TCP |
Internal |
|
|
MySQL |
|
|
3306 |
TCP |
Internal |
|
|
LDAP |
LDAP Server |
|
389 |
TCP |
External |
|
|
|
LDAP Server over TLS/SSL |
TLS/SSL |
636 |
TCP |
External |
|
|
|
Global Catalog |
|
3268 |
TCP |
External |
|
|
|
Global Catalog over TLS/SSL |
TLS/SSL |
3269 |
TCP |
External |
|
3.14 创建本地yum源
3.14.1 httpd服务安装
1)创建本地yum源需要指定一台主机提供http服务,所以我们在hadoop102上安装httpd
yum -y install httpd
2)安装完成后,检查httpd服务状态
systemctl status httpd
3)通过systemctl start httpd启动httpd服务
systemctl start httpd
systemctl status httpd
4)设置开机自启
systemctl enable httpd.service
3.14.2 yum源工具安装
需要使用yum-utils和createrepo来创建yum源
yum -y install yum-utils createrepo
3.14.3导入cm资源包
1)创建/var/www/html/cm文件夹
[root@hadoop102 ~]# cd /var/www/html/
[root@hadoop102 html]# mkdir cm
2)将资料包中cm文件夹下的文件放入/var/www/html/cm文件夹中(因资料包较大,如果是购买了深圳地区服务器的同学可通过以下命令进行文件的导入,该方法使用内网传输,速度较快且不耗费外部流量。如果非深圳区域的服务器,请手动上传cm文件夹下的全部文件到/var/www/html/cm目录下)
mkdir /root/shells
cd /root/shells
yum install -y wget && wget -P /root/shells/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/script/get_cm_from_shenzhenoss_internal.sh
bash /root/shells/get_cm_from_shenzhenoss_internal.sh
3.14.4创建repo
1)使用createrepo命令创建本地yum源
createrepo /var/www/html/cm/
2)在/etc/yum.repos.d/文件夹下创建新的yum repo文件(这是为了告诉Linux我们自己添加的yum源的位置信息),配置了hosts文件的情况下我们可以直接使用hadoop102作为域名访问
vim /etc/yum.repos.d/cloudera-manager.repo
#把下面五行代码写入repo文件中 [cloudera-manager] name=Cloudera Manager, Version yum baseurl=http://hadoop102/cm gpgcheck=0 enabled=1
3.14.5清除缓存并建立新的元数据缓存
1)清理缓存
yum clean all
2)建立元数据缓存
yum makecache
3)验证源是否配置生效
yum list | grep cloudera-manager
4)或者浏览器输入以下网址进行访问:http://47.107.113.119/cm
5)如果能够访问到web页面(如上图),表示本地yum源创建成功。在其他两个节点同样执行建立元数据缓存的命令,并验证是否配置成功。
#先在Hadoop102上分发配置
xsync /etc/yum.repos.d/cloudera-manager.repo
yum clean all
yum makecache
6)验证源是否配置生效
yum list | grep cloudera-manager
第四章 CM及依赖组件安装
4.1 安装java
1)在三台节点上执行java的安装,可以使用yum的方式进行安装
xcall.sh yum -y install oracle-j2sdk1.8.x86_64
2)配置java的环境变量,因为我们在上面已经把/etc/profile中的内容追加到/root/.bashrc中,所以我们现在只需要配置/root/.bashrc文件即可。
vim /root/bin/setjavahome.sh
sed -i ‘$a\# JAVA_HOME‘ /root/.bashrc sed -i ‘$a\export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera‘ /root/.bashrc sed -i ‘$a\export PATH=$JAVA_HOME/bin:$PATH‘ /root/.bashrc sed -i ‘$a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar‘ /root/.bashrc
xsync /root/bin/setjavahome.sh
3)在三台上同时执行添加环境变量的和同步环境变量的操作
xcall.sh bash /root/bin/setjavahome.sh && source /root/.bashrc
4)验证java是否安装成功
xcall.sh java -version
4.2 安装MySQL(使用官方方法安装)
4.2.1使用rpm的方式进行安装
wget -v http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm sudo yum -y update sudo yum -y install mysql-server sudo systemctl start mysqld sudo systemctl stop mysqld
4.2.2将InnoDB log files做备份
mkdir /root/backup/
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1 /root/backup/
4.2.3修改/etc/my.cnf文件
下面的配置是cloudera公司推荐的配置,可根据自己的生产实际情况进行调整。(注意:如果使用vim编辑器粘贴,则会出现#号问题,建议使用外部编辑器进行编辑!也可以使用:
set
paste编辑
)
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# To prevent deadlocks, set the isolation level to READ-COMMITTED.
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
#Allow 100 maximum connections for each database and then add 50 extra connections. For example, for two databases, set the maximum connections to 250. If you store five databases on one host (the databases for Cloudera Manager Server, Activity Monitor, Reports Manager, Cloudera Navigator, and Hive metastore), set the maximum connections to 550.
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.
#如果需要替换mysql的log文件存放位置,需要此处拥有足够的空间并且把文件夹的属主改为mysql用户
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
#The default settings in the MySQL installations in most distributions use conservative buffer sizes and memory usage. Cloudera Management Service roles need high write throughput because they might insert many records in the database. Cloudera recommends that you set the innodb_flush_method property to O_DIRECT.
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_ALL_TABLES
4.2.4初始化MySQL
1)配置my.cnf完成后,启动MySQL
需要注意:
(1)因为当前无密码,所以启动时候直接回车。
(2)Disallow root login remotely?选项需要输入N,这样root用户才能远程访问。
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo /usr/bin/mysql_secure_installation
2)这里需要配置密码,密码可以为简单密码,例如123456
Enter current password for root (enter for none):(这里需要直接回车) OK, successfully used password, moving on... [...] Set root password? [Y/n] Y New password:(这里输入自定义的密码) Re-enter new password:(这里输入自定义的密码) Remove anonymous users? [Y/n] Y [...] Disallow root login remotely? [Y/n] N [...] Remove test database and access to it [Y/n] Y [...] Reload privilege tables now? [Y/n] Y All done!
3)将JDBC的jar包放入/usr/share/java/文件夹中
mkdir -p /usr/share/java/
cd /usr/share/java/
wget https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/mysql-connector-java-5.1.46-bin.jar
mv mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar
4)创建各用户数据库(注意hive的数据库叫metastore)
Service |
Database |
User |
Cloudera Manager Server |
scm |
scm |
Activity Monitor |
amon |
amon |
Reports Manager |
rman |
rman |
Hue |
hue |
hue |
Hive Metastore Server |
metastore |
hive |
Sentry Server |
sentry |
sentry |
Cloudera Navigator Audit Server |
nav |
nav |
Cloudera Navigator Metadata Server |
navms |
navms |
Oozie |
oozie |
oozie |
5)进入MySQL客户端
mysql -u root -p
# 建表及修改权限的格式: CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON <database>.* TO ‘<user>‘@‘%‘ IDENTIFIED BY ‘<password>‘;
6)以下是需要执行的SQL语句,替换之后需要执行的SQL为
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 metastore 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; GRANT ALL ON scm.* TO ‘scm‘@‘%‘ IDENTIFIED BY ‘scm‘; GRANT ALL ON amon.* TO ‘amon‘@‘%‘ IDENTIFIED BY ‘amon‘; GRANT ALL ON rman.* TO ‘rman‘@‘%‘ IDENTIFIED BY ‘rman‘; GRANT ALL ON hue.* TO ‘hue‘@‘%‘ IDENTIFIED BY ‘hue‘; GRANT ALL ON metastore.* TO ‘hive‘@‘%‘ IDENTIFIED BY ‘hive‘; GRANT ALL ON sentry.* TO ‘sentry‘@‘%‘ IDENTIFIED BY ‘sentry‘; GRANT ALL ON nav.* TO ‘nav‘@‘%‘ IDENTIFIED BY ‘nav‘; GRANT ALL ON navms.* TO ‘navms‘@‘%‘ IDENTIFIED BY ‘navms‘; GRANT ALL ON oozie.* TO ‘oozie‘@‘%‘ IDENTIFIED BY ‘oozie‘;
7)注意此处再授权一个本主机名地址,不然web页面配置很容易出错,注意修改本地主机名hostname
GRANT ALL ON amon.* TO ‘amon‘@‘hadoop102‘ IDENTIFIED BY ‘amon‘;
FLUSH PRIVILEGES;
show grants for ‘amon‘@‘%‘; show grants for ‘rman‘@‘%‘; show grants for ‘hive‘@‘%‘; show grants for ‘hue‘@‘%‘; show grants for ‘oozie‘@‘%‘;
8)退出
quit
9)重启
systemctl restart mysql.service
4.3 通过yum安装daemons,agent,server
hadoop102需要安装daemons,agent,server,hadoop103和hadoop104仅需要安装daemons,agent
1)主节点hadoop102
yum list | grep cloudera-manager
yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
2)从节点hadoop103 hadoop104
yum list | grep cloudera-manager
yum -y install cloudera-manager-daemons cloudera-manager-agent
3)为scm数据库创建表,密码为scm(当我们看到All done,表示目前scm数据库已经被正确配置)
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
4.4 配置本地Parcel存储库
1)服务器购买在深圳的同学可通过以下代码进行文件读取。服务器未在深圳的同学则需要手动上传4个文件到/opt/cloudera/parcel-repo/之中(这个文件夹是刚才安装cm之后自动生成的)
2)服务器在深圳的同学可以执行此wget命令
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256 wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/manifest.json
cp /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
sudo chmod u+x /opt/cloudera/parcel-repo/*
4.5 启动cloudera-scm-server
#启动
systemctl start cloudera-scm-server
#重启命令为:
systemctl restart cloudera-scm-server
#可以用下面命令查看server的信息
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
#另开启一个窗口,监控日志中是否提示启动成功
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log|grep "Started Jetty server"
# 也可以用下面命令查看端口号占用情况
netstat -tunlp | grep 7180
# 当你看到以下信息时候 证明启动成功
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
下面可能会出现报错信息,这个是因为2021年CDH,此时登录网页:http://你的hadoop102的IP地址:7180,就能访问CDH集群;默认的用户名:admin;默认的密码为:admin
第五章 CM集群部署
5.1 进入CM欢迎界面
点击继续
5.2 勾选条款协议
点击继续
5.3 选择免费版本进行部署
5.4 进入cluster部署欢迎界面
点击继续
5.5 为集群命名
5.6 指定集群中的主机
5.7 填写cm库地址及选择CDH parcel包
5.8 JDK安装
我们之前安装过了可以跳过
5.9 输入root用户的密码
5.10 显示正在部署安装,页面暂时不可点击
5.11 分发parcel包并进入节点自动化部署
5.12 进入环境检查页面
点击两个检查按钮,CM会对整个集群的环境做最后的检测。第一个检查是检测集群之间的通信是否正常,如果为绿色,则为通过检查。第二个检查是检测集群的环境是否配置正常,如果为绿色,证明通过检查。(注:只要把第三章中的配置做完,这里的环境检查应该不会出现问题);下方的表格可以告诉我们当前CDH6.3.2中各个组件的版本号。(标注为红色的组件版本号建议同学们牢记)
All Hosts |
|
hadoop[102-104] |
|
--- |
--- |
Component |
Version |
--- |
--- |
Supervisord |
3.0 |
Cloudera Manager Agent |
6.3.1 |
Cloudera Manager Management Daemons |
6.3.1 |
Flume NG |
1.9.0+cdh6.3.2 |
Hadoop |
3.0.0+cdh6.3.2 |
HDFS |
3.0.0+cdh6.3.2 |
HttpFS |
3.0.0+cdh6.3.2 |
hadoop-kms |
3.0.0+cdh6.3.2 |
MapReduce 2 |
3.0.0+cdh6.3.2 |
YARN |
3.0.0+cdh6.3.2 |
HBase |
2.1.0+cdh6.3.2 |
Lily HBase Indexer |
1.5+cdh6.3.2 |
Hive |
2.1.1+cdh6.3.2 |
HCatalog |
2.1.1+cdh6.3.2 |
Hue |
4.2.0+cdh6.3.2 |
Impala |
3.2.0+cdh6.3.2 |
Java 8 |
1.8.0_181 |
Kafka |
2.2.1+cdh6.3.2 |
Kite |
1.0.0+cdh6.3.2 |
kudu |
1.10.0+cdh6.3.2 |
Oozie |
5.1.0+cdh6.3.2 |
Parquet |
1.9.0+cdh6.3.2 |
Pig |
0.17.0+cdh6.3.2 |
sentry |
2.1.0+cdh6.3.2 |
Solr |
7.4.0+cdh6.3.2 |
spark |
2.4.0+cdh6.3.2 |
Sqoop |
5.7+cdh6.3.2 |
Zookeeper |
3.4.5+cdh6.3.2 |
5.13 组件选择页面
继续安装,进入选择组件页面,点击最后一个“Custom Services”
我们选择一些常用的组件进行安装,推荐安装以下组件:
5.14 选择需要安装的服务及Host
5.15 配置数据库密码
5.16 初始参数配置
建议一:将kafka在zk中的根路径改为/kafka
建议二:将kafka的堆内存调大
其他选择默认即可
5.17 集群进入自动部署
完成的选项将会显示绿色
5.18 安装部署完成
提示安装完成并在运行中,点击完成
5.19 修改界面语言
进入集群界面发现为英文,我们可以改为中文界面
5.20 对集群配置做优化和修改
我们可以观察到及群众有一些警示信息
其中HDFS中的信息点击进去查看发现,是提示我们当前的节点少于9个不满足某种规定。但是我们现在只有三个节点,所以我们选择忽视这条警告。
点击“Suppress”抑制警告
再来看一些提示优化的信息:HDFS建议最小的堆内存为4G,因为每百万块数据会占用1G的内存。但是现在我们只是练习阶段,且内存较少较为珍贵,所以忽视这条优化。在生产中可以根据数据块的总量适当调整HDFS的内存。
hue提示信息为需要我们安装HBase的Thrift Server在同一节点中。我们可以添加一下。
处理之后我们就完成了对集群的配置和优化。
第六章 参数配置
6.1 HDFS配置域名访问
在阿里云环境下Hadoop集群必须用域名访问,不能用IP访问。进入HDFS的configuration界面,开启如下配置dfs.client.use.datanode.hostname
6.2 设置物理核和虚拟核占比
当前购买的阿里云配置物理核一共为6核,为演示效果将虚拟核扩大1倍,一般真实场景下物理核和虚拟核对比值为1:1或1:2
进入yarn配置,搜索yarn.nodemanager.resource.cpu-vcores修改配置,每台机器物理核2核虚拟成4核
6.3 修改单个容器下最大cpu申请资源
修改yarn.scheduler.maximum-allocation-vcores参数调整4核
6.4 设置每个任务容器内存大小和单节点大小
将每个任务容器默认大小从1G调大至4G,修改yarn.scheduler.maximum-allocation-mb调整每个任务容器内存所需大小
当前集群环境下每个节点的物理内存为8G,设置每个yarn可用每个节点内存为7G,修改yarn.nodemanager.resource.memory-mb调整每个节点内存所需大小
6.5 关闭Spark动态分配资源参数
关闭spark.dynamicAllocation.enabled参数,否则分配的资源不受控制
6.6 修改HDFS副本数和权限检查配置
修改dfs.replication副本数为1(可选,根据业务场景进行修改)
关闭HDFS中的权限检查:dfs.permissions
6.7 设置容量调度器
CDH默认公平调度器,修改为容量调度器。进入yarn,搜索scheduler,找到项,修改为CapacityScheduler
CDH默认为root队列,可以配置多队列,添加两个队列spark与hive,spark资源设置占yarn集群80%,hive设置占yarn集群20%;(请注意这四个配置项的顺序不能出错,且一定要写清楚)
yarn.scheduler.capacity.root.queues
yarn.scheduler.capacity.root.capacity
#添加如下队列
yarn.scheduler.capacity.root.spark.capacity
yarn.scheduler.capacity.root.hive.capacity
配置完毕后重启服务,到yarn界面查看调度器,已经发生变化,有hive队列和spark队列。
6.8 修改hive-site.xml的配置
因为我们删除了yarn的default队列,但是hive里面执行sql默认走的还是default,如果不做设置的话,在hive里面执行sql会报错,所以我们需要在hive里面设置三个参数。
set mapreduce.job.queuename=hive; set mapred.job.queue.name=hive; set mapred.queue.names=hive;
如果想要临时生效,只需要在hive中执行这几个配置项即可。如果想要永久生效,进入hive,选择配置选项,然后搜索hive-site.xml
在hive-site.xml的Hive服务高级配置代码段(安全阀)添加如图所示三个参数
在hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)再次添加
重启过时服务,重新部署过期客户端配置,再次进入hive,就可以正常使用hivesql了。