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

背景

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

Ambari官方文档

  1. 下载Apache Ambari 安装环境:https://ambari.apache.org/docs/3.0.0/quick-start/download
  2. Apache Ambari 的裸机和 KVM 环境设置:https://ambari.apache.org/docs/3.0.0/quick-start/environment-setup/bare-metal-kvm-setup
  3. Ambari 安装指南:https://ambari.apache.org/docs/3.0.0/quick-start/installation-guide

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

iphostnamecpu/内存定义
192.168.0.101server-test12C/16GAmbari 服务端
Ambari agent 1
mysql、nginx
192.168.0.102server-test22C/8GAmbari agent 2
192.168.0.103server-test32C/8GAmbari agent 3

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

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

服务器基础配置

设置 hostname

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

sudo hostnamectl set-hostname server-test1

设置固定 ip 地址

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

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

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源仓库镜像加速

# 备份原有配置
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

常用工具安装

sudo yum install -y vim telnet wget

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

安装 ssh 服务

# 安装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
ListenAddress 0.0.0.0  # 确保非 127.0.0.1
Port 22                 # 默认端口


# PermitRootLogin 设置为yes
PermitRootLogin  yes

# 开启使用用户名密码验证连接
PasswordAuthentication yes
重启 ssh
sudo systemctl restart sshd

配置安全设置

在所有服务上禁用 SELinux
# Temporarily disable SELinux
setenforce 0

# Permanently disable SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
禁用防火墙
# Stop firewall
systemctl stop firewalld

# Disable firewall on boot
systemctl disable firewalld
配置 SSH 访问

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

  1. server-test1 服务进行 生成 ssh 密钥
if [ ! -f ~/.ssh/id_rsa ]; then
  ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
fi
  1. 将 SSH 密钥从服务器分发到代理
# 密钥分发
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"

安装所需的软件包

基础软件包安装

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 环境安装


yum install python3 -y

# 防止python命令报错
sudo ln -s /usr/bin/python3 /usr/bin/python
安装开发工具
# 安装开发工具
sudo dnf groupinstall -y "Development Tools"

sudo dnf install -y dnf-utils

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

# 开启PowerTools
sudo dnf config-manager --set-enabled PowerTools
# 安装启用 EPEL
sudo dnf install epel-release -y

或者修改 CentOS-Base.repo[PowerTools] 下参数 enabled=1
在这里插入图片描述

配置网络时间协议

yum install -y chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources

检查网络连接

ping -c 2 server-test2
ping -c 2 server-test3

所需环境服务安装

所有服务器安装 Java 环境

# 按照jdk1.8环境(已有jdk版本跳过此步骤)
yum install -y java-1.8.0-openjdk-devel
# jdk17(我是进行单独进行安装)
yum install -y java-17-openjdk-devel
jdk17 环境 压缩包 安装方式

下载路径:https://bell-sw.com/pages/downloads/#jdk-17-lts

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

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

修改配置文件 /etc/profile

# 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)

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. 新增配置文件
# 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 版本)

[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. 创建网络
docker network create mysql_network
  1. 运行 MySQL 服务容器
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

# 登录
mysql -uroot -p

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

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

FLUSH PRIVILEGES;

安装 Nginx 服务(Docker 安装)

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

  • 创建文件目录
mkdir -p /data/docker/nginx/

# 设置权限
chmod 777 -R /data/docker/nginx/
  • 先运行一次容器(为了拷贝配置文件):
docker run -p 8000:80 --name nginx-temp -d nginx:1.23
  • 将容器内的配置文件拷贝到指定目录:
  docker container cp nginx-temp:/etc/nginx /data/docker/nginx/conf
  docker container cp nginx-temp:/usr/share/nginx/html /data/docker/nginx/
  • 终止并删除容器:
docker rm -f nginx-temp
  • 正式运行容器
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

参考官方文档:https://ambari.apache.org/docs/3.0.0/quick-start/download

  1. 安装 createrepo 包
sudo yum install createrepo
  1. 创建存储库目录
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系统请参考:https://ambari.apache.org/docs/2.7.9/introduction

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

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 的存储库
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 安装

参考官方文档:https://ambari.apache.org/docs/3.0.0/quick-start/installation-guide

端口映射关系

服务端口目的
MySQL3306
Nginx80,443,81
Ambari 服务器8080, 8440, 8441Web UI, Agent communication
Core Hadoop8020, 9000, 50070, 50075HDFS NameNode, DataNode HTTP
YARN8032, 8088, 19888ResourceManager, UI, JobHistory
Hive9083, 10000Metastore, HiveServer2
  • 防火墙开放对应端口
# 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 代理

yum install -y python3-distro
yum install -y ambari-agent

安装 Ambari 服务器

yum install -y python3-psycopg2
yum install -y ambari-server

MySQL 设置

  1. 配置 MySQL 用户和数据库
-- 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 脚本
# sql脚本地址位于server-test1服务上的
/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

配置 Amvari 服务器

# 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 服务 启动

# 启动
ambari-server start

# 停止
ambari-server stop

# 重启
ambari-server restart

Ambari Agent 服务 启动

# 配置参数,其中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

http://192.168.0.101:8080/

查看日志

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

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

# 查看命令
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. 安装完成后界面

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小诺大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值