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

背景

Ambari 项目旨在通过开发用于预置、管理和监控 Hadoop 集群的软件来简化 Hadoop 管理。Ambari 提供直观、易于使用的 Hadoop 管理 Web UI,由其 RESTful API 提供支持。
本文手把手教你实现如何安装Ambari2.7.4+HDP3.1.4+HDP-UTILS-1.1.0.22进行部署Hadoop集群

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

iphostnamecpu/内存服务
192.168.0.6server-middle2C/4GMySQL、Ambari私仓
192.168.0.31server-dev12C/10GAmbari 服务端
Ambari agent 1
httpd
192.168.0.32server-dev22C/10GAmbari agent 2
192.168.0.33server-dev32C/10GAmbari agent 3

如果需要安装Ambari3.0版本 (系统最低版本要求centos8),请移步至:

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

服务版本:

服务版本
JDK1.8
MySQL5.7

Ambari下载

匹配软件版本
通过以下网址可以查询Ambari和HDP各个版本支持情况,选择相应的版本,可下载版本匹配报告。(本案例为Ambari2.7.4+HDP3.1.4)
https://supportmatrix.hortonworks.com/
在这里插入图片描述

下载地址:

PS:如果下载失败,可以私聊我要。

Ambari-2.7.4下载页面:https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/ambari_repositories.html

由于本次案例使用的是Centos7系统,所以选择下载地址:https://archive.cloudera.com/p/ambari/2.x/2.7.4.14/centos7/ambari-2.7.4.14-1-centos7.tar.gz
在这里插入图片描述

解决点击下载链接报错403问题解决

点击下载链接后,需要输入cloudera账号密码,但是我们没有怎么解决呢?用迅雷下载即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HDP 3.1.4下载页面:https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/hdp_314_repositories.html

下载报错403问题,也使用迅雷下载即可。
下载地址:

服务器基础配置

设置 hostname

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

sudo hostnamectl set-hostname server-dev1

设置固定 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.21 # 固定 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.6 server-middleware
192.168.0.31 server-dev1
192.168.0.32 server-dev2
192.168.0.33 server-dev3

设置国内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
# 临时禁用(服务器重启后则会恢复)
setenforce 0

# 永久禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 查看状态
getenforce
禁用防火墙

由于防火墙限制,导致安装ambari服务会有奇怪的问题,所以建议关闭防火墙

# Stop firewall
systemctl stop firewalld

# Disable firewall on boot
systemctl disable firewalld
配置 SSH 免密登录

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

  1. server-dev1 服务进行 生成 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-dev1
ssh-copy-id -o StrictHostKeyChecking=no root@server-dev2
ssh-copy-id -o StrictHostKeyChecking=no root@server-dev3

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

安装所需的软件包

在dev1,dev2,dev3服务器进行安装需要的软件包

基础软件包安装

yum update -y
yum install -y sudo openssh-server openssh-clients which iproute net-tools less vim-enhanced
yum install -y wget curl tar unzip git

python 环境安装

yum install python3 -y

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

sudo yum install -y yum-utils

# 安装启用 EPEL
sudo yum install epel-release -y

配置网络时间协议

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

检查网络连接
在dev1服务器上进行输入以下命令进行验证:

ping -c 2 server-dev2
ping -c 2 server-dev3

所需环境服务安装

所有服务器安装 Java 环境

# 按照jdk1.8环境(已有jdk版本跳过此步骤)
yum install -y java-1.8.0-openjdk-devel

修改配置文件 /etc/profile

# java
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

中间件服务器配置(server-middle)

安装docker

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

安装 MySQL5.7 服务(Docker 安装)

  1. 新增配置文件
# 1. 创建数据存储目录
mkdir -p /data/docker/mysql5.7/conf

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

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

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

my.cnf内容(5.7 版本)

[mysqld]
lower_case_table_names=1
user=mysql
server_id=1
port=3306
#default-time-zone = '+08:00'
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_file=/usr/local/mysql/logs/slow.log
slow_query_log=1
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-5.7 \
  --restart on-failure:5 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_LOWER_CASE_TABLE_NAMES=1 \
  -p 3306:3306 \
  -v /data/docker/mysql5.7/data:/var/lib/mysql \
  -v /data/docker/mysql5.7/conf/my.cnf:/etc/my.cnf \
  -v /data/docker/mysql5.7/logs:/usr/local/mysql/logs \
  --network mysql_network \
  mysql:5.7
  • 账号密码为: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;

Ambari 私仓

安装httpd服务(Ambari私仓)

介绍:httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。安装部署httpd服务后,可以通过浏览器访问服务器/var/www/html/下的文件。

1. 安装
 #安装
 yum install httpd
 #开机自启动
 systemctl enable httpd.service
 #启动httpd服务
 systemctl start httpd.service
 #查看httpd服务状态
 systemctl staus httpd.service

在这里插入图片描述

2. 查看httpd服务:

在这里插入图片描述

3. 上传解压Ambari和HDP包

目录:/var/www/html/

# 将安装包上传到/var/www/html
ambari-2.7.4.14-1-centos7.tar.gz
HDP-3.1.4.0-centos7-rpm.tar.gz
HDP-UTILS-1.1.0.22-centos7.tar.gz

# 解压
tar -zxf 【指定包】

# 将解压后的文件夹进行重命名为
mv 【原始文件夹名】 【需要修改的文件夹名称】

如下图所示:
在这里插入图片描述

Ambari 安装

创建repo文件

server-dev1服务器进行创建repo文件,然后将repo文件分发给server-dev2、server-dev3服务器。

仓库配置:ambari.repo HDP.repo HDP-UTILS.repo
repo所在目录: /etc/yum.repos.d

# ambari.repo
[ambari]
name=ambari
baseurl=http://server-middleware/ambari/centos7/2.7.4.0-118
enabled=1
gpgcheck=0

# HDP.repo
[HDP]
name=HDP
baseurl=http://server-middleware/HDP/centos7/3.1.4.0-315
enabled=1
gpgcheck=0

# HDP-UTILS.repo
[HDP-UTILS]
name=HDP-UTILS
baseurl=http://server-middleware/HDP-UTILS/centos7/1.1.0.22
enabled=1
gpgcheck=0

在这里插入图片描述
快捷创建:

cat <<EOF | sudo tee /etc/yum.repos.d/ambari.repo
[ambari]
name=ambari
baseurl=http://server-middleware/ambari/centos7/2.7.4.0-118
enabled=1
gpgcheck=0
EOF

cat <<EOF | sudo tee /etc/yum.repos.d/HDP.repo
[HDP]
name=HDP
baseurl=http://server-middleware/HDP/centos7/3.1.4.0-315
enabled=1
gpgcheck=0
EOF

cat <<EOF | sudo tee /etc/yum.repos.d/HDP-UTILS.repo
[HDP-UTILS]
name=HDP-UTILS
baseurl=http://server-middleware/HDP-UTILS/centos7/1.1.0.22
enabled=1
gpgcheck=0
EOF

分发给其他服务器

scp ambari.repo HDP.repo HDP-UTILS.repo root@server-dev2:/etc/yum.repos.d/
scp ambari.repo HDP.repo HDP-UTILS.repo root@server-dev3:/etc/yum.repos.d/

安装 Ambari 服务器

yum install -y ambari-server

安装Ambari 代理端

yum install -y ambari-agent

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-dev1服务上的
/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/5.1.49/mysql-connector-java-5.1.49.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 Ambari server
ambari-server setup -s \
  -j /usr/lib/jvm/java-1.8.0-openjdk \
  --database=mysql \
  --databasehost=server-middleware \
  --databaseport=3306 \
  --databasename=ambari \
  --databaseusername=ambari \
  --databasepassword=ambari

Ambari Sever 服务 启动

# 启动
ambari-server start

# 停止
ambari-server stop

# 重启
ambari-server restart

在这里插入图片描述

Ambari Agent 服务 启动

# 配置参数,其中hostname=server-dev1 设置为安装了Ambari Sever 服务器主机名称
sed -i "s/hostname=.*/hostname=server-dev1/" /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.31:8080/

在这里插入图片描述

查看日志

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

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

服务部署情况

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小诺大人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值