版本说明: Ambari:3.0.0 EDP:3.3.0 虚拟机版本:CentOS-8.5.2111-x86_64-dvd1.iso
更新日志列表:
日期 | 更新章节 | 更新日志 |
---|---|---|
2025.01.05 | 新增第六章节 | 新增第六章节,修改CentOS 8 yum源,新增阿里云yum源。方便一些包能正常被yum安装 |
2025.01.03 | 11.2 | 补充使用ssh私钥来注册主机的步骤 |
2024.12.16 | 所有 | 编写EDP部署文档初稿 |
安装包下载地址:
链接:https://pan.baidu.com/s/1M5SAVrL1DIy-dprE0g4OGA?pwd=b8hu
提取码:b8hu
目录介绍:
节点类型 | 操作系统 | ip 地址 | 主机名 | 说明 |
---|---|---|---|---|
主节点 | centos 8 | 192.168.159.130 | node1.ambari.com | 内存:8G+ |
从节点 | centos 8 | 192.168.159.131 | node2.ambari.com | 内存:8G+ |
软件名称 | 版本号 |
---|---|
JDK | jdk1.8.0_151 && jdk17.0.12 |
MySQL | 8.0 |
Ambari | 3.0 |
EDP | 3.3.0 |
# 使用hostnamectl命令修改主机名,执行该命令后立即生效,只不过需要重启Xshell连接
# 以其中一台为例,代码如下
hostnamectl set-hostname node1.ambari.com
# 其余的机器也使用hostnamectl命令修改主机名
...(略)
# 添加机器ip与主机名映射
vim /etc/hosts
192.168.159.130 node1.ambari.com
192.168.159.131 node2.ambari.com
# 查看防火墙状态
systemctl status firewalld
# 查看开机是否启动防火墙服务
systemctl is-enabled firewalld
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 再次查看防火墙状态和开机防火墙是否启动
systemctl status firewalld
systemctl is-enabled firewalld
# 永久性关闭selinux(重启服务器生效)
sed -i 's/SELINUX=enforcing/SELINUX =disabled/' /etc/selinux/config
# 临时关闭selinux(立即生效,重启服务器失效)
setenforce 0
# 查看selinux状态
getenforce
# disabled为永久关闭,permissive为临时关闭,enforcing为开启
各个主机均执行以下操作:
## 生成密钥对
ssh-keygen -t rsa ## 一路回车即可
## 进入.ssh目录,如果目录不存在则创建
cd ~/.ssh
## 将公钥导入至authorized_keys
cat id_rsa.pub >> authorized_keys
## 修改文件权限
chmod 700 ~/.ssh
chmod 600 authorized_keys
# 首次ssh时,设置不提示是否保存秘钥
ssh-keyscan ${替换为当前主机名} >> ~/.ssh/known_hosts
在节点 node1.ambari.com (在要安装 ambari-server 的节点)上执行:
## 配置主从互相免密登陆
[root@node1 ~]# cat ~/.ssh/id_rsa.pub | ssh root@node2.ambari.com 'cat - >> ~/.ssh/authorized_keys'
[root@node1 ~]# cat ~/.ssh/id_rsa.pub | ssh root@node3.ambari.com 'cat - >> ~/.ssh/authorized_keys'
[root@node1 ~]# ssh node2.ambari.com # 验证主机点是否可以免密登陆从节点,执行exit命令退出即可。
[root@node1 ~]# ssh node3.ambari.com # 验证主机点是否可以免密登陆从节点,执行exit命令退出即可。
备注:要想实现多主机互相免密,可参考文章:Linux多台主机互相免密
yum install -y java-1.8.0-openjdk-devel
安装后的jdk的位置在 /usr/lib/jvm/java-1.8.0-openjdk。
# 创建目录
mkdir /usr/java
# 将从网盘里下载jdk-8u151-linux-x64.tar.gz拷贝到/usr/java目录下,然后解压文件
tar zxvf jdk-8u151-linux-x64.tar.gz
# 编辑/etc/profile,文末插入以下内容:
# set java
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
yum install -y java-17-openjdk-devel
把 OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz 复制到/usr/java 目录下后解压即可,不需要配置环境变量。
cd /usr/java
# 解压
tar zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz
把 OpenJDK22U-jdk_x64_linux_hotspot_22.0.2_9.tar.gz 复制到/usr/java 目录下后解压即可,不需要配置环境变量。
cd /usr/java
# 解压
tar zxvf OpenJDK22U-jdk_x64_linux_hotspot_22.0.2_9.tar.gz
由于 CentOS Linux 8 已停止更新和维护,所以在使用 yum 源时会链接报错,解决办法如下:
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# 清空原有缓存,并重新生成
yum clean all && yum makecache
成功解决。
EDP 安装服务时,有时会通过 yum 安装依赖包,比如 snappy-devel,默认 CentOS 8 是没有这个包的,可以添加阿里云 yum 源来安装此依赖。
cd /etc/yum.repos.d/
vim aliyun-CentOS-BaseOS.repo
在 添加以下内容:
[aliyun-baseos]
name=CentOS Linux $releasever - BaseOS - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[aliyun-powertools]
name=CentOS Linux $releasever - PowerTools - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
清空yum原有缓存,并重新生成。
yum clean all && yum makecache
阿里云yum源地址可参考:https://mirrors.aliyun.com/centos/8.5.2111/
mysql版本为8.0,本次部署在node1.ambari.com节点:
rpm -qa | grep mysql
# 删除相关rpm包
rpm -ev <rpm包名> --nodeps
# 下载mysql8.0的rpm包,安装成功后/etc/yum.repos.d/目录下会增加两个文件
yum -y install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
# 查看mysql8的安装源是否可用,如不可用请自行修改配置文件(/etc/yum.repos.d/mysql-community.repo)使mysql80下面的enable=1
# 若有mysql其它版本的安装源可用,也请自行修改配置文件使其enable=0
yum repolist enabled | grep mysql
yum -y install mysql-server
# 启动mysql
systemctl start mysqld.service
# 查看mysql状态
systemctl status mysqld.service
# 设置mysql开机自启动
systemctl enable mysqld.service
使用root用户登录,第一次登录不用输入密码,直接回车即可,如下图所示:
mysql -uroot -p
修改 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
请参考我写的另一篇文章:《Linux NTP时钟同步》
如有别的方法也可以,保证各节点时钟同步即可。
(任意一个节点,本篇文章放在了第一个节点上了,也就是ambari-server节点:node1.ambari.com)
# 安装httpd
yum -y install httpd.x86_64
systemctl enable httpd.service
systemctl start httpd.service
# 安装wget
yum -y install wget
httpd 服务安装后,默认会启动80端口,且会创建 /var/www/html 目录。我们就可以通过 http 链接的方式访问某些安装包,前提是将安装包放在 /var/www/html 目录下。
ambari 和 edp 的部署包在文章开头分享的百度网盘地址里。
将 ambari 和 edp 目录拷贝到 /var/www/html 目录下即可。然后浏览器访问以下地址可看到 ambari 和 edp 的相关rpm包(备注:ip地址为 httpd 服务部署的节点):
# 安装createrepo工具
yum -y install createrepo
1)ambari
# 将上面网盘的包拷贝到/var/www/html目录下
# 然后执行下述操作
cd /var/www/html
cd ambari/centos8/x86_64/3.0.0
createrepo .
# 执行createrepo .命令可在当前目录下生成repodata目录,该文件是yum仓库必须要有的文件,有了该文件,在任何目录下,yum install 包名 即可,也可以自动处理包之间的依赖关系。
2)edp
# 将上面网盘的包拷贝到/var/www/html目录下
# 然后执行下述操作
cd /var/www/html
cd edp/centos8/x86_64/3.3.0
createrepo .
# 执行createrepo .命令可在当前目录下生成repodata目录,该文件是yum仓库必须要有的文件,有了该文件,在任何目录下,yum install 包名 即可,也可以自动处理包之间的依赖关系。
[ambari]
name=ambari
baseurl=http://node1.ambari.com/ambari/centos8/x86_64/3.0.0/
enabled=1
gpgcheck=0
备注:baseurl 地址的目录截止到 repodata 目录的上级即可。
在之后部署 hadoop 集群的时候,我们会在 ambari 界面上设置大数据集群的 yum 离线安装源,ambari 会在各 ambari-agent 节点上自动生成 ambari-bigtop-1.repo 文件。所以我们不需要额外配置 hadoop 安装包的 repo 文件,只需在 Ambari 页面注册 hadoop 集群时,填好 hadoop(bigtop) 的 base url(示例:http://node1.ambari.com/bigtop) 即可。
ambari-agent 和 ambari-server 都依赖 distro 这个 python 类库。
yum install -y python3-distro
Ambari Metrics Monitor 服务需要依赖 python3-devel
yum install -y python3-devel
ambari-server 安装需要依赖以下资源,执行下述命令:
yum install -y python3-psycopg2
# 创建目录
mkdir /usr/share/java
# 将 mysql-connector-java-8.0.23.jar 拷贝到 /usr/share/java 目录下
# 改名
mv mysql-connector-java-8.0.23.jar mysql-connector-java.jar
yum install -y ambari-server
在本次安装教程中,我们选择用 mysql 来存储 ambari 的元数据信息。
我们为 ambari 服务新增自己的用户,用户名就叫 ambari 吧,以下是新增 mysql 用户的操作。
mysql -uroot -proot123
# 这个用户,可以在mysql所在节点用ambari用户访问mysql
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
# 这个用户,在后续安装ambari的时候会用到。ambari-server通过ambari用户来访问mysql
CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
# 刷新权限
FLUSH PRIVILEGES;
MySQL 中的用户是 用户名 和 host 共同标识。所以在上面命令里,我们算是创建了两个用户,分别是 ambari@localhost、ambari@% 。
用户中的 host 的不同,代表受众群体也不同。比如 localhost 表示只能是本机访问;% 表示所有的 ip 都可以访问 mysql 。
扩展命令:删除用户命令:
Delete FROM user Where User='your_user' and Host='your_host';
FLUSH PRIVILEGES;
mysql -uambari -pambari
# 创建ambari数据库
CREATE DATABASE ambari character set utf8 collate utf8_general_ci;
# 初始化表结构
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
exit;
# 设置ambari jdbc
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
# # 设置ambari的java环境与数据库信息
# 以下两种方式,呼应上面安装jdk的两种方式
# 方式一:jdk是yum安装的方式
ambari-server setup -s \
-j /usr/lib/jvm/java-1.8.0-openjdk \
--ambari-java-home /usr/lib/jvm/java-17-openjdk \
--database mysql \
--databasehost node1.ambari.com \
--databaseport 3306 \
--databasename ambari \
--databaseusername ambari \
--databasepassword ambari
# 方式二:安装包离线安装
ambari-server setup -s \
-j /usr/java/jdk1.8.0_151 \
--ambari-java-home /usr/java/jdk-17.0.12+7 \
--database mysql \
--databasehost node1.ambari.com \
--databaseport 3306 \
--databasename ambari \
--databaseusername ambari \
--databasepassword ambari
命令参数解释:
ambari-server start
登陆浏览器访问: http://192.168.159.130:8080,通过 Ambari 界面部署大数据集群。
默认登陆账号/密码为:admin/admin。
主要说一下关键步骤。
由于之前我们搭建了本地yum源(已将edp的rpm包下载到了本地),所以要选择 “Use Local Repository” 。最后选择主机系统,配置大数据组件相关的 yum 本地源地址。
示例地址:http://node1.ambari.com/edp/centos8/x86_64/3.3.0
注意:Base URL 里面的地址是主机名、ip地址都可以。但也请注意,如果要填写 IP ,一定要是内网 IP 。
在目标主机里面,填写规划的大数据集群主机列表,填写主机名即可。
注册主机,有两种方式,任选其一即可。
在下面的输入框内,填写 ambari-server 所在主机 root 用户的 ssh 私钥,就是 ~/.ssh/id_rsa 文件的内容,粘贴到下面的输入框内。
选择不使用SSH私钥,手动注册主机,如下图所示:
在点击“登记确认”按钮之前,需要在您要注册的所有节点上安装ambari-agent,并修改配置。
具体操作如下:
yum install -y ambari-agent
# 修改ambari-agent配置
vim /etc/ambari-agent/conf/ambari-agent.ini
将 server.hostname 由 localhost 改为 ambari-server 所在节点,如下图所示:
所有节点安装ambari-agent并修改了ambari-agent配置后,重启ambari-agent。
在 Ambari 页面上点击“确定”即可,如下图所示:
在这一步,就可以选择 hadoop 相关的一些服务了。
分配 master,就是将你所选服务的 master 角色组件,选择安装在哪台机器上。可以根据cpu、内存、磁盘等指标考虑。
在这一步中,可能很多刚入门的朋友还不清楚如何选择。其实和分配 master 的思路一样,就是将哪些组件安装在哪些主机上,这个就看个人规划了。比如:在 worker 节点上安装 datanode、nodeManager、RegionServer 等角色。
接下来的步骤,就比较简单了,我在这里也就不多赘述了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有