Ambari3.0安装部署教程(手把手教学)

背景

Apache Ambari 项目旨在通过开发用于预置、管理和监控 Apache Hadoop 集群的软件来简化 Hadoop 管理。Ambari 提供直观、易于使用的 Hadoop 管理 Web UI,由其 RESTful API 提供支持。 本文手把手教你实现如何安装Ambari3.0版本,Ambari 安装bigtop 3.0集群版本

Ambari官方文档

  1. 下载Apache Ambari 安装环境:ambari.apache.org/docs/3.0.0/...
  2. Apache Ambari 的裸机和 KVM 环境设置:ambari.apache.org/docs/3.0.0/...
  3. Ambari 安装指南:ambari.apache.org/docs/3.0.0/...

虚拟机服务器环境(centos8 系统):

ip hostname cpu/内存 定义
192.168.0.101 server-test1 2C/16G Ambari 服务端 Ambari agent 1 mysql、nginx
192.168.0.102 server-test2 2C/8G Ambari agent 2
192.168.0.103 server-test3 2C/8G Ambari agent 3

注意: 如果使用的系统版本是centos 7版本,则在安装组件时会有问题。如果使用centos7系统,可以安装ambari2.7版本:

Ambari2.7.4安装部署Hadoop集群教程(手把手教学)

服务器基础配置

设置 hostname

在每台服务进行执行命令,或者修改/etc/hostname 配置文件,进行定义 hostname

bash 复制代码
sudo hostnamectl set-hostname server-test1

设置固定 ip 地址

网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33(ens33 替换为你的网卡名):

properties 复制代码
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none" # 改为 none或者static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="a780589b-b487-451a-8951-7a983e47882a"
DEVICE="ens33"
ONBOOT="yes" # 开机自启
IPADDR=192.168.0.101 # 固定 IP
NETMASK=255.255.255.0 # 子网掩码
PREFIX=24
GATEWAY=192.168.0.1 # 网关
DNS1=8.8.8.8 # 首选 DNS
DNS2=8.8.4.4 # 备用 DNS

在所有服务器上配置 /etc/hosts

vi /etc/hosts

properties 复制代码
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# 添加以下映射关系
192.168.0.101 server-test1
192.168.0.102 server-test2
192.168.0.103 server-test3

设置国内yum源仓库镜像加速

bash 复制代码
# 备份原有配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 获取阿里云加速源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 重新加载缓存
yum clean all && yum makecache


# 更新
yum update

常用工具安装

bash 复制代码
sudo yum install -y vim telnet wget

每台服务进行安装 sshd 远程控制

安装 ssh 服务

bash 复制代码
# 安装openssh
sudo yum install openssh-server -y

sudo systemctl start sshd
sudo systemctl enable sshd

sudo systemctl status sshd

# 防火墙开放允许SSH流量通过
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

修改配置文件/etc/ssh/sshd_config

bash 复制代码
ListenAddress 0.0.0.0  # 确保非 127.0.0.1
Port 22                 # 默认端口


# PermitRootLogin 设置为yes
PermitRootLogin  yes

# 开启使用用户名密码验证连接
PasswordAuthentication yes

重启 ssh

bash 复制代码
sudo systemctl restart sshd

配置安全设置

在所有服务上禁用 SELinux

bash 复制代码
# Temporarily disable SELinux
setenforce 0

# Permanently disable SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

禁用防火墙

bash 复制代码
# Stop firewall
systemctl stop firewalld

# Disable firewall on boot
systemctl disable firewalld

配置 SSH 访问

用于配置从 Ambari 服务器到所有代理服务器的无密码 SSH 访问

  1. server-test1 服务进行 生成 ssh 密钥
bash 复制代码
if [ ! -f ~/.ssh/id_rsa ]; then
  ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
fi
  1. 将 SSH 密钥从服务器分发到代理
bash 复制代码
# 密钥分发
ssh-copy-id -o StrictHostKeyChecking=no root@server-test2
ssh-copy-id -o StrictHostKeyChecking=no root@server-test3

# 验证
ssh root@server-test2 echo "Connection successful"

安装所需的软件包

基础软件包安装

bash 复制代码
yum update -y
dnf install -y sudo openssh-server openssh-clients which iproute net-tools less vim-enhanced
dnf install -y wget curl tar unzip git

python 环境安装

bash 复制代码
yum install python3 -y

# 防止python命令报错
sudo ln -s /usr/bin/python3 /usr/bin/python

安装开发工具

bash 复制代码
# 安装开发工具
sudo dnf groupinstall -y "Development Tools"

sudo dnf install -y dnf-utils

注意: 官方文档中有 Rocky-Devel.repo仓库文件,但是由于我这边设置的是阿里云的加速源仓库,所以所以没有 Rocky-Devel.repo,需要进行使用 CentOS PowerTools + EPEL 开发库 方案来解决

bash 复制代码
# 开启PowerTools
sudo dnf config-manager --set-enabled PowerTools
# 安装启用 EPEL
sudo dnf install epel-release -y

或者修改 CentOS-Base.repo[PowerTools] 下参数 enabled=1

配置网络时间协议

bash 复制代码
yum install -y chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources

检查网络连接

markdown 复制代码
ping -c 2 server-test2
ping -c 2 server-test3

所需环境服务安装

所有服务器安装 Java 环境

bash 复制代码
# 按照jdk1.8环境(已有jdk版本跳过此步骤)
yum install -y java-1.8.0-openjdk-devel
# jdk17(我是进行单独进行安装)
yum install -y java-17-openjdk-devel

jdk17 环境 压缩包 安装方式

下载路径:bell-sw.com/pages/downl...

下载安装包后,进行解压到指定目录

本次演示:解压到/usr/lib/jvm/bellsoft-java17.x86_64

修改配置文件 /etc/profile

bash 复制代码
# java
export JAVA_8_HOME=/usr/local/java8/jdk1.8.0_421
export JAVA_17_HOME=/usr/lib/jvm/bellsoft-java17.x86_64
export JAVA_HOME=$JAVA_8_HOME
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

Docker 环境安装(用于安装 MySQL 和 Nginx)

bash 复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 安装docker
sudo yum -y install docker-ce

详细 docker 安装可参考:todo

安装 MySQL 服务(Docker 安装)

  1. 新增配置文件
bash 复制代码
# 1. 创建数据存储目录
mkdir -p /data/docker/mysql/conf

# 创建配置文件my.cnf
vi /data/docker/mysql/conf/my.cnf

# 3. 设置权限
chmod 777 -R /data/docker/mysql

# 单独设置my.cnf文件权限(644)否则mysql为了安全起见会忽略该配置文件
chmod -R 644 /data/docker/mysql/conf

my.cnf内容(8.0 版本)

bash 复制代码
[mysqld]
lower_case_table_names          = 1
user                            = mysql
server_id                       = 1
port                            = 3306
 
enforce_gtid_consistency        = ON
gtid_mode                       = ON
binlog_checksum                 = none
authentication_policy           = mysql_native_password
skip-name-resolve               = ON
open_files_limit                = 65535
table_open_cache                = 2000
sql_mode			= '' 
log_bin_trust_function_creators = TRUE
#################innodb########################
#innodb_data_file_path           = ibdata1:512M;ibdata2:512M:autoextend
innodb_buffer_pool_size = 4G
innodb_flush_log_at_trx_commit = 2
innodb_io_capacity = 600
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 200M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 85
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_thread_concurrency = 32
innodb_file_per_table
innodb_rollback_on_timeout
###################session###########################
join_buffer_size = 8M
key_buffer_size = 256M
bulk_insert_buffer_size = 8M
max_heap_table_size = 96M
tmp_table_size = 96M
read_buffer_size = 8M
sort_buffer_size = 2M
max_allowed_packet = 64M
max_connections=1000
read_rnd_buffer_size = 32M
############log set###################
#log-error                       = /usr/local/mysql/logs/mysqld.err
#log-bin                         = /usr/local/mysql/logs/binlog
#log_bin_index                   = /usr/local/mysql/logs/binlog.index
max_binlog_size                 = 500M
slow_query_log                  = 1
#slow_query_log_file             = /usr/local/mysql/logs/slow.log
long_query_time                 = 10
log_queries_not_using_indexes   = ON
log_throttle_queries_not_using_indexes  = 10
log_slow_admin_statements       = ON
log_output                      = FILE,TABLE
master_info_file                = /usr/local/mysql/logs/master.info

[client]
default-character-set=utf8mb4  # 设置mysql客户端默认字符集
  1. 创建网络
bash 复制代码
docker network create mysql_network
  1. 运行 MySQL 服务容器
bash 复制代码
docker run -d \
  --name mysql-server \
  -e TZ=Asia/Shanghai \
  -e MYSQL_USER=root \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_LOWER_CASE_TABLE_NAMES=1 \
  -p 3306:3306 \
  -v /data/docker/mysql/data:/var/lib/mysql \
  -v /data/docker/mysql/conf/my.cnf:etc/my.cnf \
  -v /data/docker/mysql/logs:/logs \
  --restart always \
  --log-driver json-file \
  --log-opt max-size=5g \
  --network mysql_network \
  mysql/mysql-server:8.0.28
  • 账号密码为:root/root
  • 设置远程登录

docekr exec -it mysql-server bash

bash 复制代码
# 登录
mysql -uroot -p

# 设置远程登录
CREATE USER 'root'@'%' IDENTIFIED BY '[你的密码]';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

安装 Nginx 服务(Docker 安装)

用于设置内网公开Ambari存储库, 后续会说明怎么使用的

  • 创建文件目录
bash 复制代码
mkdir -p /data/docker/nginx/

# 设置权限
chmod 777 -R /data/docker/nginx/
  • 先运行一次容器(为了拷贝配置文件):
bash 复制代码
docker run -p 8000:80 --name nginx-temp -d nginx:1.23
  • 将容器内的配置文件拷贝到指定目录:
bash 复制代码
  docker container cp nginx-temp:/etc/nginx /data/docker/nginx/conf
  docker container cp nginx-temp:/usr/share/nginx/html /data/docker/nginx/
  • 终止并删除容器:
bash 复制代码
docker rm -f nginx-temp
  • 正式运行容器
bash 复制代码
docker run -d \
  --name nginx \
  --restart always \
  -p 80:80 \
  -p 81:81 \
  -p 443:443 \
  -v /data/docker/nginx/html:/usr/share/nginx/html \
  -v /data/docker/nginx/logs:/var/log/nginx \
  -v /data/docker/nginx/conf:/etc/nginx \
  -v /var/www/html/ambari-repo:/var/www/html/ambari-repo \
  -e TZ=Asia/Shanghai \
  -e NGINX_PORT=80 \
  nginx:1.23

下载Apache Ambari

参考官方文档:ambari.apache.org/docs/3.0.0/...

  1. 安装 createrepo 包
bash 复制代码
sudo yum install createrepo
  1. 创建存储库目录
bash 复制代码
sudo mkdir -p /var/www/html/ambari-repo
sudo chmod -R 755 /var/www/html/ambari-repo
  1. 下载 RPM 包

由于演示系统使用的是 centos8 版本,所以我选择安装的是Rocky Linux 8,经过验证是可以正常安装的

注意: 如果使用的系统版本是centos 7版本,则在安装组件时会有问题。如果使用centos7系统请参考:ambari.apache.org/docs/2.7.9/...

bash 复制代码
cd /var/www/html/ambari-repo
wget -r -np -nH --cut-dirs=4 --reject 'index.html*' https://www.apache-ambari.com/dist/ambari/3.0.0/rocky8/
wget -r -np -nH --cut-dirs=4 --reject 'index.html*' https://www.apache-ambari.com/dist/bigtop/3.3.0/rocky8/
  1. 设置 nginx 配置

vim /data/docker/nginx/conf/conf.d/ambari-repo.conf

bash 复制代码
server {
    listen 81;
    server_name 192.168.0.101;
    location /ambari-repo {
        alias /var/www/html/ambari-repo;
        autoindex on;
    }
}
  • 重启 nginx:docker restart nginx, 访问http://192.168.0.101:81/ambari-repo可以看到对应的目录
  1. 在每台服务器上都添加 yum 的存储库
bash 复制代码
sudo tee /etc/yum.repos.d/ambari.repo << EOF
[ambari]
name=Ambari Repository
baseurl=http://192.168.0.101:81/ambari-repo
gpgcheck=0
enabled=1
EOF

Ambari 安装

参考官方文档:ambari.apache.org/docs/3.0.0/...

端口映射关系

服务 端口 目的
MySQL 3306
Nginx 80,,443,81
Ambari 服务器 8080, 8440, 8441 Web UI, Agent communication
Core Hadoop 8020, 9000, 50070, 50075 HDFS NameNode, DataNode HTTP
YARN 8032, 8088, 19888 ResourceManager, UI, JobHistory
Hive 9083, 10000 Metastore, HiveServer2
  • 防火墙开放对应端口
bash 复制代码
# mysql
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

# nginx
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=81/tcp --permanent

# Ambari Server端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8440/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8441/tcp --permanent

# Core Hadoop 端口
sudo firewall-cmd --zone=public --add-port=8020/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=50070/tcp --permanent
sudo firewall-cmd --zone=public --add-port=50075/tcp --permanent

# YARN服务端口
sudo firewall-cmd --zone=public --add-port=8032/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8088/tcp --permanent
sudo firewall-cmd --zone=public --add-port=19888/tcp --permanent

# Hive服务端口
sudo firewall-cmd --zone=public --add-port=9083/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10000/tcp --permanent

# 防火墙重新加载
sudo firewall-cmd --reload

安装依赖项和 Ambari 代理

bash 复制代码
yum install -y python3-distro
yum install -y ambari-agent

安装 Ambari 服务器

bash 复制代码
yum install -y python3-psycopg2
yum install -y ambari-server

MySQL 设置

  1. 配置 MySQL 用户和数据库
bash 复制代码
-- Create Ambari user and grant privileges
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';

-- Create required databases
CREATE DATABASE ambari CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE hive;
CREATE DATABASE ranger;
CREATE DATABASE rangerkms;

-- Create service users
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';

CREATE USER 'ranger'@'%' IDENTIFIED BY 'ranger';
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%' WITH GRANT OPTION;

CREATE USER 'rangerkms'@'%' IDENTIFIED BY 'rangerkms';
GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'%';

FLUSH PRIVILEGES;
  1. 导入 SQL 脚本
bash 复制代码
# sql脚本地址位于server-test1服务上的
/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

配置 Amvari 服务器

bash 复制代码
# Download MySQL JDBC driver
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar \
  -O /usr/share/java/mysql-connector-java.jar

# Setup JDBC driver
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

# Configure MySQL 8 compatibility
echo "server.jdbc.url=jdbc:mysql://localhost:3306/ambari?useSSL=true&verifyServerCertificate=false&enabledTLSProtocols=TLSv1.2" \
  >> /etc/ambari-server/conf/ambari.properties

# Configure Ambari server
ambari-server setup -s \
  -j /usr/lib/jvm/java-1.8.0-openjdk \
  --ambari-java-home /usr/lib/jvm/bellsoft-java17.x86_64 \
  --database=mysql \
  --databasehost=localhost \
  --databaseport=3306 \
  --databasename=ambari \
  --databaseusername=ambari \
  --databasepassword=ambari

Ambari Sever 服务 启动

bash 复制代码
# 启动
ambari-server start

# 停止
ambari-server stop

# 重启
ambari-server restart

Ambari Agent 服务 启动

bash 复制代码
# 配置参数,其中hostname=server-test1 设置为安装了Ambari Sever 服务器主机名称
sed -i "s/hostname=.*/hostname=server-test1/" /etc/ambari-agent/conf/ambari-agent.ini

# agent 启动
ambari-agent start

# agent 停止
ambari-agent start

# agent 重启
ambari-agent restart

访问 Ambari Web 界面

账号密码:admin/admin

bash 复制代码
http://192.168.0.101:8080/

查看日志

Ambari 服务器:/var/log/ambari-server/ambari-server.out

Ambari 代理:/var/log/ambari-agent/ambari-agent.log

markdown 复制代码
# 查看命令
tail -200f /var/log/ambari-server/ambari-server.out
tail -200f  /var/log/ambari-agent/ambari-agent.log

Ambari web服务配置

1. 新增一个Cluster

2. 选择版本和仓库地址,由于之前配置了本地仓库地址,则设置为本地仓库地址:http://192.168.0.101:81/ambari-repo

3. 设置安装选择,配置在哪些 agent 主机上进行安装,并配置 server 主机的密钥,位于 /etc/.ssh/id_rsa

4. 等待验证主机

5. 选择需要安装的服务

本次演示设置:

其他服务密码:admin Ranger 管理员密码: amb_ranger_admin123

6. 分配节点

7. 自定义服务配置(有些服务需要配置密码、数据库连接配置、目录等)

8. 等待安装服务

9. 安装完成后界面

相关推荐
天氰色等烟雨几秒前
Antlr4入门学习及实用案例(二)
大数据
天氰色等烟雨2 分钟前
Antlr4入门学习及实用案例(一)
大数据
武子康2 分钟前
大数据-57 Kafka 高级特性 Producer 消息发送流程与核心配置详解
大数据·后端·kafka
Ms_lan2 分钟前
邢台市某区人民医院智慧康养平台建设项目案例研究
大数据·人工智能·物联网·蓝牙网关·桂花网
鹏大师运维3 分钟前
银河麒麟桌面操作系统:自定义截图快捷键操作指南
linux·运维·快捷键·国产操作系统·截图·麒麟kylinos·桌面操作系统
白鲸开源10 分钟前
从日志到告警,带你用好 SeaTunnel 的事件监听能力
大数据·数据分析·开源
Fireworkitte1 小时前
es的histogram直方图聚合和terms分组聚合
大数据·elasticsearch·搜索引擎
Stringzhua1 小时前
Git踩坑
大数据·git·elasticsearch
OpsEye1 小时前
台风季网络保卫战:互联网运维如何筑起“数字防波堤“?
运维·网络
数字化观察1 小时前
博创软件数智通OA平台:高效协同,安全办公新选择
大数据·人工智能