博客 【Ambari】Ansible自动化部署大数据集群(2)

【Ambari】Ansible自动化部署大数据集群(2)

   数栈君   发表于 2024-05-07 15:57  497  0

八、ranger权限开启
8.1 ranger登录
访问图中链接会跳转到ranger登录页面,登录失败可能需要将主机名换成IP。

登录ranger web页面,用户名:admin ,密码:winnerxxxx

登录后的页面如下



我们需要添加winner_spark的服务组件操作权限。

8.2 HDFS权限控制
点击进入默认的service设置页面

点击进入Policy ID为1 的策略进入编辑

添加winner_spark用户





添加完成后 save保存。

Policy ID为2的策略也是编辑添加winner_spark 后 保存。winner_spark 用户添加HDFS操作权限完成后如下图



我们需要Policy ID 为1 策略中添加hive 用户对HDFS操作权限,完成后如下图



8.3 HBase权限控制
点击进入默认的service设置页面

点击进入Policy ID为4 的策略进入编辑



添加winner_spark用户



添加完成后 save保存。Policy ID为5的策略也是编辑添加winner_spark 后 保存。

winner_spark 用户添加HBase操作权限完成后如下图



8.4 Hive权限控制
点击进入默认的service设置页面

点击进入Policy ID为8 的策略进入编辑

添加winner_spark用户权限完成后 save保存。



剩下的Policy 策略也是编辑添加winner_spark 后 保存。

winner_spark 用户添加Hive操作权限完成后如下图



8.5 Yarn权限控制
点击进入默认的service设置页面



点击进入Policy ID为6 的策略进入编辑



添加winner_spark用户



剩下的Policy 策略也是编辑添加winner_spark 后 保存。

winner_spark 用户添加Yarn操作权限完成后如下图



九、Ansible自动化安装脚本
说明:脚本可以在博客资源中可以下载,如下是部署目录结构。

脚本入口 installDeployAmbari.sh

#!/bin/bash
#  
# 脚本功能: 配置初始化,完成ambari-server安装启动  
# 作 者: kangll  
# 创建时间: 2024-03-29  
# 修改时间: 2024-03-29
# 当前版本: 1.0v  
# 调度周期: 一次性任务  
# 脚本参数: 无  
#  
#
. /etc/profile > /dev/null 2>&1
set -x
#set -e
# 请确保已经按照部署文档中事先配置好了, ./autoDeployFiles/scripts/hostlist.txt中的内容以及temphosts.txt
# ./config/global.sh


BASEDIR=$(cd "$(dirname "$0")"; pwd)
scriptsDir=$BASEDIR/autoDeployFiles/scripts
cd ${scriptsDir}

if [ `rpm -qa |grep expect > /dev/null 2>&1;echo $?` -ne 0 ]; then
sudo yum install -y expect
fi

if [ `rpm -qa |grep ansible > /dev/null 2>&1;echo $?` -ne 0 ]; then
sudo yum install epel-release -y
sudo yum install ansible -y
fi

cat ${scriptsDir}/temphosts.txt |awk '{print $1,$2}' | while read vIP vHost
do
if [ `grep ${vHost} /etc/hosts > /dev/null 2>&1;echo $?` -ne 0 ]; then
echo "${vIP} ${vHost}" >> /etc/hosts
fi
done


# linux 免密
sh $scriptsDir/batchSendKey.sh

# linux hosts
for i in `cat ${scriptsDir}/temphosts.txt |awk '{print $2}' |grep -v \`hostname\`|xargs `
do
scp /etc/hosts $i:/etc/
done


# linux hosts
for i in `cat ${scriptsDir}/temphosts.txt |awk '{print $2}' |xargs `
do
ssh $i "sudo hostnamectl set-hostname $i"
done

source /etc/profile

ambari_server_source=`hostname`
sudo sed -i 's/windp-aio/'"${ambari_server_source}"'/g' $BASEDIR/ambari.yml

# ansible hosts
echo [all_node] > /etc/ansible/hosts
cat ${scriptsDir}/temphosts.txt |awk '{print $2}' >> /etc/ansible/hosts
echo "" >> /etc/ansible/hosts

# 默认安装ambariserver的服务器为控制端,也就是master节点
echo [master] >> /etc/ansible/hosts
echo `hostname` >> /etc/ansible/hosts
echo "" >> /etc/ansible/hosts

# 除当前服务器的其他服务器为agent
echo [slave] >> /etc/ansible/hosts
cat ${scriptsDir}/temphosts.txt |awk '{print $2}' |grep -v `hostname` >> /etc/ansible/hosts

cd $BASEDIR
ansible-playbook ambari.yml

ambari.yml

---

# author: kangll
# date: 2024-04-03
# funtion: 离线自动化部署ambari-server
# 版本要求:
# OS: Redhat7.2-CentOS7.9(仅支持该操作系统版本)
# ambari-2.7.4
# MySQL 5.7+/Python3+


- hosts: all_node
gather_facts: F
vars:
paths:
scriptsDir: /opt/windp-deploy/autoDeployFiles/scripts
JDKDir: ./autoDeployFiles/JDK
JAVA_HOME_PATH: /usr/java
packages:
jdk: jdk-8u162-linux-x64.tar.gz
tasks:
- include: ./component/setup_base_env.yml # 设置基础环境
- include: ./component/setup_java_env.yml # 设置JAVA_HOME
remote_user: root
tags: jdk_base_env

- hosts: master
gather_facts: F
vars:
local_ambari_os_yum_repo: hdp-node1
paths:
MySQLDir: ./autoDeployFiles/MySQL
installScriptDir: /opt/windp-deploy
MySQLConfDir: ./autoDeployFiles/configFiles
driverDir: /usr/share/java
confDir: ./autoDeployFiles/configFiles
password:
mysql: Winner001
ambari: Winner001
hive: Winner001
packages:
mysql_driver: mysql-connector-java.jar
tasks:
- include: ./component/setup_mysql_server.yml # 创建用户解压MySQL包于/usr/local/mysql、MySQL初始化、修改root密码
- include: ./component/setup_kdc_server.yml # 安装配置kerberos
- include: ./component/setup_ambari_server.yml # 安装并启动Ambari-server
remote_user: root
tags: mysql

- hosts: slave
gather_facts: F
vars:
paths:
repoTmpDir: ./config/repo
repoDir: /etc/yum.repos.d
krb5File: /etc/
keytabFile: /etc/security/keytabs
tasks:
- include: ./component/setup_hdp_repo.yml # repo,kerberos配置同步
remote_user: root
tags: repo

install_base_kdc.sh

#! /bin/bash
#
# Author: kangll
# CreateTime: 2024-03-10
# Desc: kerberos配置
#

#set -x
BASEDIR=$(cd "$(dirname "$0")"; pwd)
# 加载配置
source $BASEDIR/config/global.sh

# global.sh 配置文件中获取
ssh_passwd="winner@001"
kerberos_user=winner_spark

hostName=`hostname`
########################
# 配置kerberos,安装启动
########################
config_krb5() {
# kerberos server and client
sudo yum install krb5-server krb5-libs krb5-workstation -y

# config file
sudo cat $BASEDIR/config/krb5.conf > /etc/krb5.conf
# 修改为 kdc serve hostname
sudo sed -i 's/windp-aio/'"${hostName}"'/g' /etc/krb5.conf
sudo cat $BASEDIR/config/kdc.conf > /var/kerberos/krb5kdc/kdc.conf
sudo cat $BASEDIR/config/kadm5.acl > /var/kerberos/krb5kdc/kadm5.acl

echo "******* 创建kdc数据库 *********"
/usr/bin/expect << eof
# 设置捕获字符串后,期待回复的超时时间
set timeout 30

spawn kdb5_util create -s -r WINNER.COM $1@$2

## 开始进连续捕获
expect {
"Enter KDC database master key:" { send "${ssh_passwd}\n"; exp_continue }
"master key to verify:" { send "${ssh_passwd}\n"; exp_continue }
}
eof
echo "******** 创建admin实例 *********"
/usr/bin/expect << eof
# 设置捕获字符串后,期待回复的超时时间
set timeout 30

spawn kadmin.local 

## 开始进连续捕获
expect {
"kadmin.local:" { send "addprinc admin/admin\n"; exp_continue }
"Enter password for principal" { send "${ssh_passwd}\n"; exp_continue }
"Re-enter password for principal" { send "${ssh_passwd}\n"; }
}
expect "kadmin.local:" { send "quit\r"; }
eof

# start kdc and kadmin 
sudo systemctl restart krb5kdc
sudo systemctl enable krb5kdc
sudo systemctl restart kadmin
sudo systemctl enable kadmin

# add linux user 
sudo useradd winner_spark
# keytabs file path
sudo mkdir -p /etc/security/keytabs/

echo "********** kerberos installation completed **********"
}

##################################
# 配置kerberos用户: winner_spark 
# 生成keytab 文件
##################################
config_kerberos_user() {
echo "******** 创建winner_spark用户实例 ********"
/usr/bin/expect << eof
# 设置捕获字符串后,期待回复的超时时间
set timeout 30

spawn kadmin.local 

## 开始进连续捕获
expect {
"kadmin.local:" { send "addprinc ${kerberos_user}\n"; exp_continue }
"Enter password for principal" { send "${ssh_passwd}\n"; exp_continue }
"Re-enter password for principal" { send "${ssh_passwd}\n"; }
}
expect "kadmin.local:" { send "quit\r"; }
eof

echo "******** winner_spark用户生成keytab文件 ********"
/usr/bin/expect << eof
# 设置捕获字符串后,期待回复的超时时间
set timeout 30

spawn kadmin.local 

## 开始进连续捕获
expect {
"kadmin.local:" { send "xst -k /etc/security/keytabs/${kerberos_user}.keytab ${kerberos_user}@WINNER.COM\n"; }
}
expect "kadmin.local:" { send "quit\r"; }
eof
sleep 2s
# modify keytab file privilege  
sudo chown ${kerberos_user}:${kerberos_user} /etc/security/keytabs/${kerberos_user}.keytab
echo "********** kerberos user winner_spark add completed **********"
}


# 配置kerberos,并启动
config_krb5

# 配置kerberos用户: winner_spark, 生成keytab 文件
config_kerberos_user

install_mysql.sh

#! /bin/bash
#
# Author: kangll
# CreateTime: 2023-11-10
# Desc: install mysql5.7
#
set -x
echo "******** INSTALL MYSQL *********"
####################################
BASEDIR=$(cd "$(dirname "$0")"; pwd)
# 加载数据库默认连接信息
source $BASEDIR/config/global.sh
install_path=$mysql_install_path
hostname=`"hostname"`

#####################################

# 卸载原有的mariadb
OLD_MYSQL=`rpm -qa|grep mariadb`
profile=/etc/profile
for mariadb in $OLD_MYSQL
do
rpm -e --nodeps $mariadb
done

# 删除原有的my.cnf
sudo rm -rf /etc/my.cnf

#添加用户组 用户
sudo groupadd mysql
sudo useradd -g mysql mysql

# 解压mysql包并修改名称
tar -zxvf $BASEDIR/autoDeployFiles/MySQL/mysql-5.7.44-el7-x86_64.tar.gz -C $install_path
sudo mv $install_path/mysql-5.7.44-el7-x86_64 $install_path/mysql

# 更改所属的组和用户
sudo chown -R mysql $install_path/mysql
sudo chgrp -R mysql $install_path/mysql

sudo mkdir -p $install_path/mysql/data
sudo mkdir -p $install_path/mysql/log
sudo chown -R mysql:mysql $install_path/mysql/data

# 粘贴配置文件my.cnf 内容见八 中的 my.cnf
cp -f $BASEDIR/config/my.cnf $install_path/mysql/

# 安装mysql
$install_path/mysql/bin/mysql_install_db --user=mysql --basedir=$install_path/mysql/ --datadir=$install_path/mysql/data/

# 设置文件及目录权限:
cp $install_path/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chown 777 $install_path/mysql/my.cnf
sudo chmod +x /etc/init.d/mysqld

sudo mkdir /var/lib/mysql
sudo chmod 777 /var/lib/mysql

# 启动mysql
/etc/init.d/mysqld start

# 设置开机启动
chkconfig --level 35 mysqld on
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld

# 修改环境变量 
ln -s $install_path/mysql/bin/mysql /usr/bin
ln -s /var/lib/mysql/mysql.sock /tmp/
cat > /etc/profile.d/mysql.sh<<EOF
export PATH=$PATH:$install_path/mysql/bin
EOF

mysqlPw=`sed -n 2p /root/.mysql_secret`
mysqlPwTMP=`sed -n 2p /root/.mysql_secret`1

mysql -u$myuser -p$mysqlPw --connect-expired-password -e "SET PASSWORD = PASSWORD('${mypwd}');"

echo "******** MYSQL installation completed ********"

install_repo.sh

#! /bin/bash
#
# Author: kangll
# CreateTime: 2024-03-10
# Desc: 配置HDP repo
#

set -x
BASEDIR=$(cd "$(dirname "$0")"; pwd)
#
source $BASEDIR/config/global.sh
# HDP tar install path
config_path=$install_path
tar_name=$hdp_tar_name

source /etc/profile > /dev/null 2>&1

#ambari server源地址

if [ $# -eq 1 ] ;then
ambari_server_source=$1
else
ambari_server_source=`hostname`
fi

###########################
# 配置 HDP repo
###########################
config_repo() {
mkdir -p $config_path
if [ ! -d $config_path/hdp ];then
sudo mv $BASEDIR/autoDeployFiles/HDP/hdp $config_path
fi

sudo ln -s $config_path/hdp/ambari /var/www/html/ambari
sudo ln -s $config_path/hdp/HDP /var/www/html/HDP
sudo ln -s $config_path/hdp/HDP-GPL /var/www/html/HDP-GPL
sudo ln -s $config_path/hdp/HDP-UTILS /var/www/html/HDP-UTILS
sudo cp -f $BASEDIR/config/repo/*.repo /etc/yum.repos.d/
sudo sed -i 's/windp-aio/'"${ambari_server_source}"'/g' /etc/yum.repos.d/*.repo
sudo yum clean all
sudo yum makecache
sudo yum repolist
echo "********** repo installation completed **********"
}

###########################
# 初始化db
###########################
config_db() {

mysql -h${myurl} -u${myuser} -p${mypwd} < $BASEDIR/config/init_db.sql 
mysql -h${myurl} -u${myuser} -p${mypwd} ambari < $BASEDIR/config/Ambari-DDL-MySQL-CREATE.sql
}

###########################
# install ambari
###########################
install_ambari() {
sudo yum install ambari-server -y
sudo mkdir -p /usr/share/java/
sudo cp -f $BASEDIR/config/mysql-connector-java.jar /usr/share/java/
sudo cat $BASEDIR/config/ambari.properties > /etc/ambari-server/conf/ambari.properties
sudo sed -i 's/localhost/'"${ambari_server_source}"'/g' /etc/ambari-server/conf/ambari.properties
sudo cp -f $BASEDIR/config/password.dat /etc/ambari-server/conf/
ambari-server restart
ambari-server status
}

######################################################
# 修改服务 ambari,在安装页面隐藏 无需安装的服务组件
######################################################
config_metainfo_modify(){

stack_path=/var/lib/ambari-server/resources/stacks/HDP
cat $BASEDIR/config/repo/services/ACCUMULO/metainfo.xml > $stack_path/3.0/services/ACCUMULO/metainfo.xml
cat $BASEDIR/config/repo/services/KAFKA/metainfo.xml > $stack_path/3.1/services/KAFKA/metainfo.xml
cat $BASEDIR/config/repo/services/PIG/metainfo.xml > $stack_path/3.1/services/PIG/metainfo.xml
cat $BASEDIR/config/repo/services/DRUID/metainfo.xml > $stack_path/3.0/services/DRUID/metainfo.xml
cat $BASEDIR/config/repo/services/LOGSEARCH/metainfo.xml > $stack_path/3.0/services/LOGSEARCH/metainfo.xml
cat $BASEDIR/config/repo/services/SUPERSET/metainfo.xml > $stack_path/3.0/services/SUPERSET/metainfo.xml
cat $BASEDIR/config/repo/services/ATLAS/metainfo.xml > $stack_path/3.1/services/ATLAS/metainfo.xml
cat $BASEDIR/config/repo/services/ZEPPELIN/metainfo.xml > $stack_path/3.0/services/ZEPPELIN/metainfo.xml  
cat $BASEDIR/config/repo/services/STORM/metainfo.xml > $stack_path/3.0/services/STORM/metainfo.xml
cat $BASEDIR/config/repo/services/RANGER_KMS/metainfo.xml > $stack_path/3.1/services/RANGER_KMS/metainfo.xml
cat $BASEDIR/config/repo/services/OOZIE/metainfo.xml > $stack_path/3.0/services/OOZIE/metainfo.xml
cat $BASEDIR/config/repo/services/KNOX/metainfo.xml > $stack_path/3.1/services/KNOX/metainfo.xml
cat $BASEDIR/config/repo/services/SQOOP/metainfo.xml > $stack_path/3.0/services/SQOOP/metainfo.xml
cat $BASEDIR/config/repo/services/SMARTSENSE/metainfo.xml > $stack_path/3.0/services/SMARTSENSE/metainfo.xml
ambari-server restart
}
config_repo
config_db
install_ambari
config_metainfo_modify


《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群