最后更新时间:2022.07.09 声明:博主写了一些 Ambari 系列文章,可以在公众号【大数据实战演练】菜单栏 -> 文章列表 中查看。 版本说明: Ambari:2.7.3.0 hdp:3.1.0.0
此文章适用于安装所有Ambari版本。
这篇文章之前也写过类似的,已经有很多人在看了,也有很多朋友在这过程中碰到了困难,私聊我。为了提高各自的工作效率,所以我又将文章完善了一版,这应该算是第四版了。
日期 | 更新章节 | 更新日志 |
---|---|---|
2022.07.09 | 新增:6.4 | 在部署mysql时,增加utf8的相关配置。防止数据库有些值汉化后,导致在页面上显示乱码问题。 |
今天完善 ambari 安装部署的初衷,就是帮助更多使用 ambari 的人,所以就又完善了一下这文章,总之,现在这文章已经很细致了。
还有,我之前在 b 站上也录制了一个与文档同版本的视频,目前,搜索 ambari 关键词已经在前几的位置了,这也侧面说明视频的质量。有需要的小伙伴,可以在结合视频学习部署一下,视频传送门 。
还有最后一点,欢迎学习使用 ambari 的小伙伴加我好友( 微信号:create17_ )啊,本人 Ambari 资深用户,有丰富的开发使用经验,可以一起交流下~
一、配置说明
1. 硬件环境
2. 软件环境
二、修改主机名和hosts文件
1. 修改主机名(三台主机分别修改主机名)
# 使用hostnamectl命令修改主机名,执行该命令后立即生效,只不过需要重启Xshell连接
# 以其中一台为例,代码如下
hostnamectl set-hostname node1.ambari.com
# 其余的机器也使用hostnamectl命令修改主机名
...(略)
2. 修改hosts文件(三台主机的hosts文件均修改为下图所示)
# 添加机器ip与主机名映射
vim /etc/hosts
三、关闭防火墙和selinux
1. 防火墙设置
# 查看防火墙状态
systemctl status firewalld
# 查看开机是否启动防火墙服务
systemctl is-enabled firewalld
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 再次查看防火墙状态和开机防火墙是否启动
systemctl status firewalld
systemctl is-enabled firewalld
2. 禁用selinux
# 永久性关闭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
在node1.ambari.com上执行:
## 配置主从互相免密登陆
[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'
ssh node2.ambari.com
ssh node3.ambari.com # 验证主机点是否可以免密登陆从节点,执行exit命令退出即可。
备注:要想实现多主机互相免密,可参考文章:Linux多台主机互相免密
扩展:
# 首次ssh时,不提示是否保存秘钥
ssh-keyscan ${替换为你的主机名} >> ~/.ssh/known_hosts
五、安装JDK
下载链接: https://pan.baidu.com/s/1rlqZejpZZqio9RPzgnGOEg 提取码: j47n ;内有jdk-8u151-linux-x64.tar.gz
和mysql-connector-java.jar
文件。
- mkdir /usr/java;将下载的压缩包上传到java文件夹内
- 解压压缩包:tar zxvf jdk-8u151-linux-x64.tar.gz
- 配置jdk环境变量:
# 编辑/etc/profile,文末插入以下内容:
# set java
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
- 使环境变量生效:source /etc/profile
- 安装验证:java -version
六、安装mysql
mysql5.7 centos7:
https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
mysql5.7 centos6:
https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
mysql5.6 centos7:
https://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
mysql5.6 centos6:
https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
1. 检查本地资源库中是否有mysql的rpm包
rpm -qa | grep mysql
# 删除相关rpm包
rpm -ev <rpm包名> --nodeps
2. 搭建mysql5.7的yum源
# 下载mysql5.7的rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装第一步下载的rpm文件,安装成功后/etc/yum.repos.d/目录下会增加两个文件
yum -y install mysql57-community-release-el7-11.noarch.rpm
# 查看mysql57的安装源是否可用,如不可用请自行修改配置文件(/etc/yum.repos.d/mysql-community.repo)使mysql57下面的enable=1
# 若有mysql其它版本的安装源可用,也请自行修改配置文件使其enable=0
yum repolist enabled | grep mysql
3. 安装mysql 5.7
yum install mysql-community-server
4. 修改mysql配置
编辑 /etc/my.cnf 文件:
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
重启 mysql,service mysqld restart。执行 show variables like ‘%char%’; 查看编码格式,如下图所示:
5. 设置mysql密码
# 查看root密码
grep "password" /var/log/mysqld.log
# 登陆mysql
mysql -u root -p
Enter password:
# 刚安装好的mysql,如果设置的密码过于简单,会提示报错。
# 可以执行以下命令,设置简单密码
set global validate_password_policy=0;
set global validate_password_length=4;
# 立即修改密码,执行其他操作会报错:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
# 我们创建密码为root123
5. 新增ambari用户并增加权限
在本篇文章中,我们选择用 mysql 来存储 ambari 的元数据信息。
我们为 ambari 服务新增自己的用户,用户名就叫 ambari 吧,以下是新增 mysql 用户的操作。
mysql -uroot -proot123
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari'; # 这个用户,在后续安装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;
6. 使用ambari用户登陆并创建数据库
mysql -uambari -pambari
CREATE DATABASE ambari character set utf8 collate utf8_general_ci;
exit;
七、设置时钟同步
请参考我写的另一篇文章:《Linux NTP时钟同步》
八、搭建yum本地源
1. 安装httpd和wget服务
# 安装httpd
yum -y install httpd.x86_64
systemctl enable httpd.service
systemctl start httpd.service
# 安装wget
yum -y install wget
安装了 httpd 服务后,我们就可以通过 http 链接的方式访问某些安装包,前提是将安装包放在 /var/www/html 目录下。
2. 下载ambari和hdp包
目前hortonworks官网已经禁止下载了,可从我的知识库获取ambari + hdp的rpm包装包:Ambari + hdp 资源包分享(持续更新)
# 将tar包下载到/var/www/html
cd /var/www/html
wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.1.0/ambari-2.7.1.0-centos7.tar.gz
wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0/HDP-3.0.1.0-centos7-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
# 解压上面三个包
tar zxvf ambari-2.7.1.0-centos7.tar.gz
tar zxvf HDP-3.0.1.0-centos7-rpm.tar.gz
tar zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz
其他 Ambari 与 hdp 部分版本安装包可微信(create17_)联系我获取,请优先说明需要哪个版本。
3. 新建repo文件
- 新建ambari.repo文件,将文件放入/etc/yum.repos.d/目录下。
[ambari]
name=ambari
baseurl=http://node1.ambari.com/ambari/centos7/2.7.3.0-139
enabled=1
gpgcheck=0
可能网上有别的文章,还需要设置 hdp 的 repo 文件。其实不需要。在之后部署 hadoop 集群的时候,我们会在 ambari 界面上设置 hdp 安装包的 yum 离线源,ambari 会在各 ambari-agent 节点上自动生成 ambari-hdp-1.repo 文件。
九、在主节点安装ambari-server
1. 安装
yum -y install ambari-server
2. 将mysql-connector-java.jar拷贝到/usr/share/java目录下
3. 安装ambari-server
ambari-server setup
4. ambari-server 绑定 mysql jdbc 驱动
将 mysql-connector-java.jar 驱动包拷贝到指定目录,这样的话,在安装 hive 等需要 mysql 数据库的服务的时候,就有 jdbc 连接驱动了,就不会报错了。
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
5. 初始化数据库
mysql -uambari -pambari
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
6. 移除 SMARTSENSE
# 从ambari-server所在节点查询SMARTSENSE目录
find / -name SMARTSENSE
# 将查询到的目录都移除
rm -rf /var/lib/ambari-server/resources/stacks/HDP/3.0/services/SMARTSENSE
这种方式只是在这个环境中移除了SMARTSENSE服务,如果想一劳永逸地移除,则需要在Ambari源码中找到SMARTSENSE相关的目录,将其删除,然后再重新编译ambari,这样的话,拿到新的ambari-server rpm包里面就没有这个服务了。
7. 启动ambari-server
ambari-server start
登陆浏览器访问: http://192.168.162.41:8080/,利用界面部署集群。
默认登陆账号/密码为:admin/admin。
以上就是安装 ambari 的大体步骤。其实都挺简单的,部署步骤不难,完全可以写成自动化脚本来执行,这里我建议使用 ansible 来部署,感兴趣的朋友可以研究下。
十、通过 ambari 部署 hadoop 集群
主要说一下关键步骤。
1、Select Version
这一步,挺重要。首选,我们要选择安装的 hdp 版本。其次,由于之前我们搭建了本地yum源(已将hdp的rpm包下载到了本地),所以要选择 “Use Local Repository” 。最后选择主机系统,配置 hdp 相关的 yum 源路径。
2、Install Options
在 Target Hosts 里面,填写规划的 ambari-agent 主机列表,填写主机名即可。
在下面的输入框内,填写 ambari-server 所在主机 root 用户的 ssh 私钥,就是 ~/.ssh/id_rsa 文件的内容,粘贴到下面的输入框内。
3、Choose Services
在这一步,就可以选择 hadoop 相关的一些服务了。
4、Assign Masters
分配 master,就是将你所选服务的 master 角色组件,选择安装在哪台机器上。可以根据cpu、内存、磁盘等指标考虑。
5、Assign Slaves and Clients
在这一步中,可能很多刚入门的朋友还不清楚如何选择。其实和分配 master 的思路一样,就是将哪些组件安装在哪些主机上,这个就看个人规划了。比如:在 worker 节点上安装 datanode、nodeManager、RegionServer 等角色。
6、后续步骤
接下来的步骤,就比较简单了,我在这里也就不多赘述了。
十一、小结
这篇文章之前也写过类似的,已经有很多人在看了,也有很多朋友在这过程中碰到了困难,私聊我。为了提高各自的工作效率,所以我又将文章完善了一版,这应该算是第三版了。
其实在上面遇到问题最多的就是,配置本地 yum 源,里面的 repo 文件,url 写错。
还有就是 ambari-server setup 安装的时候,会报 mysql 用户名密码不正确。归根结底,可能就是 mysql 创建的用户不全。ambari-server setup 安装时指定的 mysql 用户名、密码错误。建议多检查看看。注意 mysql 用户部分是由 用户名 和 host 共同组成的。
这个是我平常总结一些网友问我ambari安装时,高频问题的解决方案:
今天完善 ambari 安装部署的初衷,就是帮助更多使用 ambari 的人,但也不希望再有人问我 ambari 安装的问题了,耽误时间还没红包赞助,所以就又完善了一下这文章,总之,现在这文章已经很细致了。
还有,我之前在 b 站上也录制了一个与文档同版本的视频,目前,搜索 ambari 关键词已经在第一名的位置了,这也侧面说明视频的质量。有需要的小伙伴,可以在结合视频学习部署一下,>> 视频传送门 。
还有最后一点,欢迎学习使用 ambari 的小伙伴加我好友( 微信号:create17_ ),本人 Ambari 资深用户,有丰富的开发使用经验,可以一起交流下~
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !