Ambari2.7.5集群搭建详细流程
0 说明
本文基于本地虚拟机从零开始搭建ambari集群
1 前置条件
1.1 本地虚拟机环境
| 节点 | 角色 | 
|---|---|
| ambari-1 | ambari-server ambari-agent | 
| ambari-2 | ambari-agent | 
| ambari-3 | ambari-agent | 
1.2 安装包
1.3 修改主机名并配置hosts文件
hostnamectl set-hostname ambari-1
hostnamectl set-hostname ambari-2
hostnamectl set-hostname ambari-3
配置hosts,添加如下内容
192.168.2.51 ambari-1
192.168.2.52 ambari-2
192.168.2.53 ambari-3
1.4 配置节点间免密
所有节点执行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub ambari-1
ssh-copy-id -i ~/.ssh/id_rsa.pub ambari-2
ssh-copy-id -i ~/.ssh/id_rsa.pub ambari-3
1.5 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

1.6 关闭selinux(所有节点)
vim /etc/sysconfig/selinux
修改
SELINUX=disabled
查看修改是否成功
 sestatus -v

1.7 设置安全限制(所有节点)
 vim /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
1.8 修改系统最大文件打开数(所有节点)
 vim /etc/systemd/system.conf

1.9 安装pssh(非必须)
pssh基于Python编写的并发在多台服务器上批量执行命令的工具,它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等,这里介绍安装及常用命令。
wget http://peak.telecommunity.com/dist/ez_setup.py
wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz
- 解压
tar -zxvf  pssh-2.3.1.tar.gz
build & install
 python setup.py buildpython setup.py install
- 创建nodes文件
添加需要批处理的服务器节点
ambari-1:22
ambari-2:22
ambari-3:22
- 使用示例
 pssh -h /root/node.txt -i -P 'date'

1.10 配置ntpd同步(所有节点)
1.11 设置swap(所有节点)
pssh -h /root/nodes.txt -i 'echo vm.swappiness = 1 >> /etc/sysctl.conf'
 pssh -h /root/nodes.txt -i 'sysctl vm.swappiness=1'
 pssh -h /root/nodes.txt -i 'sysctl -p'

1.12 安装http服务(主节点)
yum -y install httpd
设置开机自启
systemctl start httpd
systemctl enable httpd.service
浏览器访问测试,出现如下页面说明安装成功
 
 安装完成后,会生成 /var/www/html目录(相当于Tomcat的webapps目录),进入到/var/www/html目录下,创建ambari和hdp目录,用来存放安装文件.
1.13 安装httpd服务(主节点)
mkdir /var/www/html/ambari
mkdir /var/www/html/hdp
mkdir /var/www/html/hdp/HDP-UTILS-1.1.0.22
mkdir /var/www/html/hdp/HDP-GPL-3.1.5.0
 tar -zxvf ambari-2.7.5.0-centos7.tar.gz -C /var/www/html/ambari/tar -zxvf HDP-3.1.5.0-centos7-rpm.tar.gz -C /var/www/html/hdp/tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/hdp/HDP-UTILS-1.1.0.22/tar -zxvf HDP-GPL-3.1.5.0-centos7-gpl.tar.gz -C /var/www/html/hdp/HDP-GPL-3.1.5.0/
重启httpd服务
systemctl restart httpd
测试访问:
http://ambari-1:/ambari
http://ambari-1:/hdp

 
1.14 配置离线yum源(主节点)
cd /var/www/html/ambari/ambari/centos7/2.7.5.0-72
vim ambari.repo

复制到/etc/yum.repos.d目录下,并同步到其他节点
 查看yum源是否配置成功
pssh -h /root/nodes.txt -i 'yum repolist'

1.15 安装jdk(所有节点)
注:安装在/usr/local/java目录下或在该目录下建立软连接,因为ambari默认会去该目录找java。
2 安装Mysql
2.1 卸载mariadb
rpm -qa | grep mariadb | xargs rpm -e --nodeps
2.2 下载mysql5.7的yum源
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
2.3 安装Mysql的yum源
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
2.4 安装Mysql
yum -y install mysql-server
安装过程中可能报错如下:
 
 执行如下命令,再次安装即可
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.5 启动mysql
service mysqld start
2.6 查看root密码
grep 'temporary password' /var/log/mysqld.log    
2.7 执行Mysql脚本
mysql_secure_installation

2.8 配置新密码
2.9 配置root远程登录
mysql -uroot -p密码
grant all privileges on *.* to 'root' @'%' identified by 'Chen.123456';
flush privileges;

2.10 拷贝mysql驱动
将mysql-connector-java-5.1.27-bin.jar拷贝到/usr/share/java路径下,并重命名mysql-connector-java.jar
 注:这里需要将mysql的驱动jar包拷贝到/usr/share/java目录下,如果该目录不存在,则新建目录。因为ambari-server启动后会默认到该位置找jar包,如果/usr/share/java不存在该jar包,则会报错如下:
 
3 安装Ambari&HDP
3.1 安装ambari-server
 yum -y install ambari-server

3.2 配置ambari.properties
配置/etc/ambari-server/conf/ambari.properties
 vim /etc/ambari-server/conf/ambari.properties
添加如下配置
server.jdbc.driver.path=/root/software/mysql/mysql-connector-java.jar
3.3 配置ambari-server
ambari-server setup 

3.4 登录mysql创建ambari安装所需要的库
1)创建ambari数据库和ambari用户
 CREATE DATABASE ambari DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use ambari;CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari123';GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari123';GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';CREATE USER 'ambari'@'ambari-1' IDENTIFIED BY 'ambari123';GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'ambari-1';
可能包如下错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这是由于mysql策略设置的问题,解决方案如下:
 ① 查看mysql当前密码设置策略
SHOW VARIABLES LIKE 'validate_password%';
② 执行如下命令,即可
set global validate_password_policy=0;
2)执行初始化sql语句
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
- 创建hive数据库和hive用户
 注:这里创建的hive账户主要用来后续安装hive组件时使用,如果不需要安装hive,则可跳过此步
CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use hive;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive1234';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive1234';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost';
CREATE USER 'hive'@'ambari-1' IDENTIFIED BY 'hive1234';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'ambari-1';
- 创建oozie数据库和oozie账户
 注:这里创建的oozie账户主要用来后续安装hive组件时使用,如果不需要安装oozie,则可跳过此步
CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use oozie;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie123';
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%';
CREATE USER 'oozie'@'localhost' IDENTIFIED BY 'oozie123';
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'localhost';
CREATE USER 'oozie'@'ambari-1' IDENTIFIED BY 'oozie123';
GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'ambari-1';
5)刷新
FLUSH PRIVILEGES;
3.5 启动ambari-server
ambari-server start

 查看/var/log/ambari-server/ambari-server.out日志,发现正常
 
3.6 所有节点安装ambari-agent
pssh -h /root/nodes.txt -i 'yum -y install ambari-agent'
修改配置文件ambari-agent.ini
vi /etc/ambari-agent/conf/ambari-agent.ini

启动ambari-agent
pssh -h /root/nodes.txt  -i 'systemctl start ambari-agent'

4 部署集群
登录ambari-1:8080可看到如下页面,账户和密码均为admin
ambari-1:8080

4.1 设置集群名

4.2 设置正确版本
选择HDP-3.1和Use Local Repository
 
 删除其他镜像源,选择Redhat,并输入HDP的url地址
 
4.3 配置节点并验证
设置ambari集群的节点,选择手动(这里需要保证集群其他节点的ambari-agent均正常启动)
 
 等待准备完成
 
4.4 选择需要安装的服务

 注:点击下一步如发生报错,说明ambari用户对目录没有执行权限,在后台执行如下命令即可
Error message: Error occured during stack advisor command invocation: Cannot create /var/run/ambari-server/stack-recommendations
sudo chown -R ambari /var/run/ambari-server

4.5 配置
按默认配置
 
4.6 配置服务slaves

4.7 设置相关服务密码

4.8 测试数据库连接

 注:如果测试连接失败,报错如下:
 
 这里是由于mysql的jar包没有识别到,在server节点执行如下命令
ambari-server setup --jdbc-db=mysql --jdbc-driver=/root/software/mysql/mysql-connector-java.jar

 然后再点击测试即能正常连接
 保持默认,点击下一步
 
 保持默认,下一步
 
 保持默认,下一步
 
4.9 部署

 等待部署完成
 
 安装完成(这里报黄是由于,当前安装是虚拟机安装,内存不足显示为黄色,没有问题)
 
4.10 完成安装

 
5 附ambari汉化
5.1 汉化的文件
| 模块 | 源码文件目录 | 编译后目录 | 安装后目录 | 
|---|---|---|---|
| 仪表盘主界面 | ambari-web/app/messages.js | ambari-web/public/javascripts/app.js | /usr/lib/ambari-server/web/javascripts/app.js | 
| 管理员界面 | ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js/main.js | 不变 | /var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.5.0}/scripts | 
| 主页底部版权信息 | ambari-web/app/assets/index.html | ambari-web/public/index.html /usr/lib/ambari-server/web/index.html | |
| 登录框 | ambari-web/app/templates/login.hbs | public/javascripts/app.js | /usr/lib/ambari-server/web/javascripts/app.js | 
| DashBoard 页头 | /ambari-web/app/templates/application.hbs | public/javascripts/app.js | /usr/lib/ambari-server/web/javascripts/app.js | 
| 仪表盘的关于信息 | ambari-web/app/templates/common/about.hbs | public/javascripts/app.js | |
| 管理页面的关于信息 | /ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AboutModal.html | 不变 | /var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.5.0}/views/modals/AboutModal.html | 
5.2 替换app.js
给出参考app.js汉化包如下:
链接:https://pan.baidu.com/s/1FOajkxocFSKxAg_huAowXw 
提取码:25wu 
5.3 修改logo
根据自身需要自定义/usr/lib/ambari-server/web/
5.4 修改仪表盘AboutModal.html
5.5 修改Index.html
版权信息
 
 修改完成后重启ambari-server即可
 
 
相关文章:
 
Ambari2.7.5集群搭建详细流程
0 说明 本文基于本地虚拟机从零开始搭建ambari集群 1 前置条件 1.1 本地虚拟机环境 节点角色ambari-1ambari-server ambari-agentambari-2ambari-agentambari-3ambari-agent 1.2 安装包 1.3 修改主机名并配置hosts文件 hostnamectl set-hostname ambari-1 hostnamectl se…...
 
房产|1月全国70城房价出炉!疫情放开后你关心的城市房价有何变化
2023年1月份,70个大中城市中新房销售价格环比上涨城市个数增加;一线城市新房销售价格环比同比转涨、二三线城市环比降势趋缓,二三线城市同比下降。 | 新房/二手房12月-1月环比上涨城市数量变化 70个大中城市中,新房环比上涨城市…...
秒验 重新定义“一键登录”
现如今,一般APP在注册登录时,仍然要经历填写用户名、密码、绑定手机号等一系列传统流程,有的人认为可以通过第三方登录避免这些流程,但仍旧要经历手机验证码的环节,而且存在验证码被拦截的风险,短信费用也很…...
 
ZenBuster:一款功能强大的多线程跨平台URL枚举工具
关于ZenBuster ZenBuster是一款功能强大的多线程跨平台URL枚举工具,该工具基于Python开发,同时还具备暴力破解功能。 该工具适用于安全专业人员,可以在渗透测试或CTF比赛中为广大研究人员提供帮助,并收集和目标相关的各种信息。…...
 
2023年美赛ICM问题E:光污染 这题很好做啊!
2023年美赛ICM问题E:光污染 这题很好做啊! 我看到DS数模的分析,看似头头是道,实则GouPi不通,我出一个,用于大家…...
InVEST模型 | 01 InVEST模型安装(Windows10)
除了在Python Anaconda环境中进行安装InVEST模型Python安装,平时最常使用的安装方式是通过.exe直接进行安装,本节介绍的就是直接下载安装的步骤: 打开InVEST模型下载页面 链接为:https://naturalcapitalproject.stanford.edu/…...
 
spring-web InvocableHandlerMethod 源码分析
说明 本文基于 jdk 8, spring-framework 5.2.x 编写。author JellyfishMIX - github / blog.jellyfishmix.comLICENSE GPL-2.0 类层次 HandlerMethod,处理器的方法的封装对象。HandlerMethod 只提供了处理器的方法的基本信息,不提供调用逻辑。 Invoca…...
 
一分钟了解微信公众号服务器配置自动回复
1、建一个web服务工程 2、开放任意一个接口, 比如 /aaa/bbb/ccc 把接口路径配置在这里,ip为公网ip或域名,其他的参数默认,对入门选手没啥用 3、该接口允许get和post两种方式访问,接口需要对于访问方式编写两套逻辑…...
 
打印不同的图形-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
【案例4-1】打印不同的图形 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 本案例要求编写一个程序,可以根据用户要求在控制台打印出不同的图形。例如,用户自定义半径的圆形和用户自定义边长的…...
14. QT_OPenGL中引入顶点着色器和片段着色器
1. 说明: 着色器是OPenGL中非常重要的一部分,在有了模型后,如果未给模型添加着色器,那么渲染效果会折扣很多。着色器中使用到的语言是GLSL(OPenGL Shader Language),可以通过这篇文章GLSL基本语法进行了解。 效果展示:…...
 
ecaozzz
2. 图形报表ECharts 2.1 ECharts简介 ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/…...
 
应用部署初探:6个保障安全的最佳实践
在之前的文章中,我们了解了应用部署的阶段以及常见的部署模式,包括微服务架构的应用应该如何部署等基本内容。本篇文章将介绍如何安全地部署应用程序。 安全是软件开发生命周期(SDLC)中的关键部分,同时也需要成为 S…...
 
转转测试环境docker化实践
测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些…...
 
linux 之 ps命令介绍
哈喽,大家好,我是有勇气的牛排(全网同名)🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 前言 如过想实现对进程监控,就需要使用到ps命…...
 
Server端的Actor,分工非常的明确,但是只将Actor作为一部手机来用,真的合适吗?
这是一篇介绍PowerJob,Server端Actor的文章,如果感兴趣可以请点个关注,大家互相交流一下吧。 server端一共有两个Actor,一个是处理worker传过来的信息,一个是server之间的信息传递。 处理Worker的Actor叫做WorkerRequ…...
 
2023年美赛C题 预测Wordle结果Predicting Wordle Results这题太简单了吧
2023年美赛C题 预测Wordle结果Predicting Wordle Results 更新时间:2023-2-17 11:30 1 题目 2023年MCM 问题C:预测Wordle结果 Wordle是纽约时报目前每天提…...
 
UE4 渲染学习笔记(未完)
原文链接:虚幻4渲染管线入门 - 知乎 从原文摘抄一下: 渲染框架 1,一套是传统的以RHICmdList为核心构建RenderPass,从RHICmdList.BeginRenderPass(...)开始,以RHICmdList.EndRenderPass()结束的框架。 2.一套是以新的Gr…...
 
Ajax?阿贾克斯?
一、Ajax简介 AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的创新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网…...
 
项目质量要怎么保持? 如何借助系统软件进行管理
对于任何项目型的企业总是很关心项目成本的话题,但不知从什么时候开始,高质量等于高成本成了各个企业的一种潜意识。 如果交付的项目产品不符合质量标准,即使企业使用最好的项目管理工具或者每个里程碑都达到并在预算范围内完成项目…...
 
没有接口文档的怎样进行接口测试
前言: 在进行接口测试之前,一般开发会提供接口文档,给出一些接口参数和必要熟悉,便于我们编写接口脚本。但如果没有提供接口开发文档的请求下,我们该如何编写接口测试脚本呢?在编写测试脚本前要做哪些必要…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
 
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
 
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
 
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
 
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
 
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
