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

news2024/11/17 11:44:32

目录

一.版本说明和介绍信息

1.1 大数据组件版本

1.2 Apache Components

1.3 Databases支持版本

二.安装包上传和说明

三.服务器基础环境配置

3.1global配置修改

3.2主机名映射配置

3.3免密用户名密码配置

3.4 ansible安装

四. 安装Ambari-server

4.1 安装ambari-server

4.2 检查REPO源

五、HDP 安装

Get Started

Select Version

Install Options

Confirm Hosts

Choose Services

Assign Masters

Assign Slaves and Clients

Customize Services

CREDENTIALS

DATABASES

DIRECTORIES

ACCOUNTS

ALL CONFIGURATIONS

Review

六、开启Kerberos

6.1 kerberos服务检查

6.2 Ambari启动kerberos

Get Started

Configure Kerberos

Install and Test Kerberos Client

Configure Identities

Confirm Configuration

Stop Services

Kerberize Cluster

Start and Test Services

七、开启服务高可用

7.1 HBaseMaster高可用开启

7.2 ResourceManager高可用开启

7.3 NameNode高可用开启

八、ranger权限开启

8.1 ranger登录

8.2 HDFS权限控制

8.3 HBase权限控制

8.4 Hive权限控制

8.5 Yarn权限控制

九、ansible自动化安装脚本


一.版本说明和介绍信息


1.1 大数据组件版本

组件

版本

os

CentOS7.2-7.9

ambari

2.7.4

HDP

3.3.1.0

HDP-GPL

3.3.1.0

HDP-UTILS

1.1.0.22

JDK

jdk-8u162-linux-x64.tar.gz

MySQL

5.7

1.2 Apache Components


组件名称

Apache版本

Apache Ambari

2.7.4

Apache Zookeeper

3.4.6

Apache Hadoop

3.1.1

Apache Hive

3.1.0

Apache HBase

2.0.2

Apache Ranger

1.2.0.3.1

Apache Spark 2

2.3.0

Apache TEZ

0.9.1

1.3 Databases支持版本


Name

Version

PostgreSQL

10.7 10.5 10.2 9.6

MySQL

5.7

MariaDB

10.2

人大金仓

V8


二.安装包上传和说明


使用工具将安装包上传到Linux服务器(安装ansible),上传到/opt 目录,如下命令进入/opt目录并解压安装包,包名日期可能有所变动,解压完成需要等待5分钟左右。如下操作使用root用户完成。脚本在博客资源中可以下载,文章后面会有部分说明。

tar -zxvf windp-deploy-2.7.4_20240329.tar.gz

安装包解压后目录结构:

cd  /opt/windp-deploy

windp-deploy-dxxxxxxxx.tar.gz 包内容说明

脚本和目录

说明

ambari.yml

ansible play-book 入口

component

配置文件和安装包

install_base_kdc.sh

配置KDC

install_mysql.sh

MySQL安装

install_repo.sh

HDP源配置和Ambari安装

config

配置文件目录

installDeployAmbari.sh

安装启动脚本


三.服务器基础环境配置


3.1global配置修改


/opt为安装目录,默认无需修改。修改完成后复制如下命令在Linux服务器命令行执行后回车:

cat > /opt/windp-deploy/config/global.sh << EOF
#######################
#部署相关全局参数定义
#######################
# mysql配置
myurl=localhost
myuser=root
mypwd=Winner001
myport=3306
# HDP包解压目录
install_path=/hadoop
# mysql 安装目录
mysql_install_path=/usr/local

EOF

执行如下命令,检查文件是否保存成功。

 cat  /opt/windp-deploy/config/global.sh

3.2主机名映射配置


如下为主机hosts映射本地临时文件,修改好后执行如下命令(修改部分已标红),

cat >  /opt/windp-deploy/autoDeployFiles/scripts/temphosts.txt  << EOF
192.168.2.142 hdp-node1 
192.168.2.143 hdp-node2 
EOF

执行如下命令,查看hosts是否配置成功。

cat /opt/windp-deploy/autoDeployFiles/scripts/temphosts.txt 

3.3免密用户名密码配置


如下为主机名和密码临时文件,修改好后执行如下命令(修改部分已标红),

cat >   /opt/windp-deploy/autoDeployFiles/scripts/hostlist.txt  << EOF
hdp-node1 winner@001
hdp-node2 winner@001
EOF

执行如下命令,查看是否配置成功。


cat  /opt/windp-deploy/autoDeployFiles/scripts/hostlist.txt

3.4 ansible安装


执行如下命令,查看ansible是否安装,如若显示版本信息则已安装,则跳过此步骤。如若没有显示版本信息,则执行下面的安装命令。

ansible --version

如果没有安装执行如下命令:

yum install epel-release -y
yum install ansible -y

再执行查看ansible版本信息

也可以选择离线安装,执行如下命令:

cd /opt/windp-deploy/config/ansible-rpm
yum install  *.rpm  -y

四. 安装Ambari-server


4.1 安装ambari-server


执行如下命令,等待Ambari-Server 配置启动完成,需要等待20分钟左右。

cd  /opt/windp-deploy/
sh installDeployAmbari.sh

执行如下命令,查看mysql是否启动成功,显示如图“running”则表示启动成功。

/etc/init.d/mysqld status

执行如下命令,查看Ambari-Server是否启动成功,显示如图“running”则表示启动成功。

ambari-server status

如果Ambari-Server没有启动成功,执行如下命令尝试重启。

ambari-server restart

4.2 检查REPO源


配置的REPO源可以在浏览器中查看。需要将示例IP地址换成部署WinDP Linux本机的IP。如下是示例IP地址:

http://192.168.2.142/ambari/
http://192.168.2.142/HDP/
http://192.168.2.142/HDP-UTILS/
http://192.168.2.142/HDP-GPL/

 

注意:如果某个地址从浏览器访问失败则说明配置的基础环境有问题,需要检查基础环境的配置。


五、HDP 安装


登录Ambari-Server, 地址为IP:8080,示例地址:http://192.168.2.161:8080/,账号密码默认:admin。

第一次登录进去的默认界面如下图所示,点击红框按钮。

Get Started

输入集群名称 “winner”,点击NEXT

Select Version

选择HDP的版本,这里使用的是3.1版本,repo选择“Use Local Repository”

保留redhat7的地址 栏,其它系统选择“Remove”

主机名需要修改,然后将如下URL 依次复制到Base URL 地址栏中,然后下一步

http://hdp-node1/HDP/centos7/3.1.4.0-315
http://hdp-node1/HDP-GPL/centos7/3.1.4.0-315
http://hdp-node1/HDP-UTILS/centos7/1.1.0.22

Install Options

  • Target Hosts :

hdp-node1

hdp-node2

  • Host Registration Information: 选择红框Provide your SSH Private Key to automatically register hosts

在Linux服务器上执行如下命令将私钥下载到Windows本地

sz  /root/.ssh/id_rsa

将下载的私钥文件从本地上传,点击选择“CHOOSE FILE”,选中“id_rsa”文件后选择打开。

如下图私钥文件上传完成,ssh的用户和端口采用默认root,我们选择下一步

  • SSH User Account: root
  • SSH Port Number: 22

弹出Warning(一般是主机名不符合规范),可以忽略。

Confirm Hosts

等待服务器注册,如下的 check信息要检查通过才行,可能会检查出问题,需要解决后然后下一步。

点击进入 “ Click here to see the check results.” 可以检查主机检查项是否通过

,如果有问题说明基础环境配置有问题,如果没有问题,选择“CLOSE”,下一步

Choose Services

选择要安装的组件: HDFS、YARN + MapReduce2、Tez、Hive、HBase、ZooKeeper、Infra Solr、Ambari Metrics、Ranger、Spark2, 默认就是勾选的,选择完成后下一步

如果有Warning 直接忽略安装

Assign Masters

这一步我们根据服务器资源合理规划服务,不能将很多服务放在一台服务器,也要将高可用服务分配在不用的服务器上。

Assign Slaves and Clients

选择服务器上安装客户端和服务组件,默认已选择,下一步

Customize Services

CREDENTIALS

配置WEB登录密码, 我们统一使用 “winner@001”,密码复制到所有的“password”框中,密码已存在的框采用覆盖。完成后下一步

DATABASES

点击选择database,配置hive数据库,确保测试通过,Hive Database 选择 Existing MySQL / MariaDB

  • DatabaseName: hive
  • Uesr: hive
  • Database Password: Winner001
  • DatabaseURL: jdbc:mysql://hdp-node1/hive

注意:测试连接不通过可以按照提示, 命令行手动设置驱动包的位置,执行如下命令后尝试再次测试连接:

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

点击选中 “RANGER”,进行ranger数据库配置,确保测试通过

  • DatabaseName: ranger
  • Uesr: ranger
  • Database Password: Winner001
  • DatabaseURL: jdbc:mysql://hdp-node1:3306/ranger
  • Ranger DB host:hdp-node1

设置完成后,下一步

DIRECTORIES

一般存储数据和日志路径要配置为数据盘目录,需要提前规划挂载数据盘

如下是HDFS服务:

HDFS、YARN 、 MapReduce2、Tez、Hive、HBase、ZooKeeper、Infra Solr、Ambari Metrics、Ranger、Spark2 等日志的路径都要修改。修改完成后下一步。

ACCOUNTS

账号信息确定,使用默认配置,直接下一步

ALL CONFIGURATIONS

组件参数修改,根据资源大小自行修改,像NameNode ,HBase Master默认都是1G ,根据生产环境资源情况自行修改,我们采用默认,下一步。

此步骤我们也可以完成HDFS数据目录和日志目录修改。

确认下一步

Review

点击DEPLOY

组件安装中,安装大概需要50分钟左右

安装完成,下一步, 如果某些组件安装失败我们需要查看日志分析原因。

点击 COMPLETE

安装完成,启动失败的组件我们逐个查找原因解决就行。


六、开启Kerberos


6.1 kerberos服务检查


执行如下命令,查看krb5kdc,kadmin服务是否启动成功,显示如图“running”则启动成功。

cd  /opt/windp-deploy/
systemctl status krb5kdc.service
systemctl status kadmin.service

krb5kdc,kadmin检查这两个服务为 running 状态,如果没有启动成功尝试重启。

如果没有启动,尝试重启服务命令如下:

cd  /opt/windp-deploy/
systemctl restart  krb5kdc.service
systemctl restart  kadmin.service

6.2 Ambari启动kerberos


进入Ambari 管理界面,选中启用Kerberos,点击“ENABLE KERBEROS”

Warning 不用理会,点击“PROCEED ANYWAY”

Get Started

如下图选MIT KDC, 下面的三个框我们都要选上,下一步

Configure Kerberos

将如下配置复制到对应的位置,确保测试通过,填好之后下一步(修改部分已标红)

  • Kadmin host: hdp-node1
  • Realm name: WINNER.COM
  • Admin principal: admin/admin@WINNER.COM
  • Admin password: winner@001

Install and Test Kerberos Client

Kerberos Client 安装和测试完成之后,下一步

Configure Identities

默认 直接下一步

Confirm Configuration

默认直接下一步

Stop Services

停止所有服务,等待执行完成后下一步

Kerberize Cluster

全部通过后下一步 ,如若失败尝试重试解决问题。

Start and Test Services

启动全部服务并进行测试,全部启动成功需要10分钟左右

启动完成需要10分钟左右,启动完后下一步

如果启动失败进行启动尝试,或者没有关系直接点击COMPLETE ,然后查看启动不了的组件,逐个解决。

启动完成


七、开启服务高可用


YARN和NameNode的高可用开启至少需要 3个zookeeper Server。也就是说需要3台服务器,否则我们也可以选择不开启服务高可用。

7.1 HBaseMaster高可用开启


在ambari页面上找到hbase的配置页面点击 add HBase Master

  • Admin principal: admin/admin@WINNER.COM
  • Admin password: winner@001

选择新加的HBaseMaster的主机

安装中,安装完成后我们选择OK

在HBase页面选择Restart All 重启

如下图可以看到 两个HBASE MASTER,状态分别是STANDBY和ACTIVE 表示 HBASE MASTER高可用开启成功。

7.2 ResourceManager高可用开启


yarn高可用配置,在ambari上找到yarn管理界面,点击Enable ResourceManager HA

选择下一步

选择高可用开启的另一台服务器,我们选择hdp-node2,然后下一步

REVIEW直接下一步

如上内容填好后选择 save

  • Admin principal: admin/admin@WINNER.COM
  • Admin password: winner@001

等待配置安装完成,需要20分钟左右,启动完成后选择COMPLETE

如下图可以看到启动全部完成

如图RESOURCEMANAGER 状态一个是STADDBY 另一个是ACTIVE。

7.3 NameNode高可用开启


HDFS高可用配置,在ambari页面上找到hdfs服务,点击actions ,选择 Enable Namenode HA

填写hdfs的namespace:winnercluster,确认无误后点击next

选择namenode和journalNode运行的主机,确认无误后点击next

Review下hdfs高可用的配置,点击Next

按照提示需要先给hdfs做一下checkpoint,这个时候next 按钮是灰色的,等做完下面的操作后,点击next按钮即可。注意:切记看正确操作的服务器。

如下配置填入页面表格

  • Admin principal: admin/admin@WINNER.COM
  • Admin password: winner@001

开始安装等待安装完成,然后下一步,大概需要15分钟左右。如若失败我们可以选择重试。

按照提示在服务器上执行命令初始化journalNode,完成后点击next

Ambari启动所有相关的组件,启动完成后下一步。大概需要10分钟左右。

按照下图所示初始化元数据信息,执行完成后下一步。注意:切记看正确操作的服务器,是在两台服务器完成命令执行。

确认操作完后,选择OK

启动所有组件,大概需要15分钟左右,有可能启动失败,我们可以选择重试或者定位具体启动失败原因。

如下图可以看到两个NAMENODE,状态分别是STANDBY和ACTIVE 表示 NAMENODE高可用开启成功。


八、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚幻引擎像素流源码解读

前言 假期在家把虚幻引擎像素流的源码有研究了一下&#xff0c;进行了一下总结&#xff0c;本文适合有一定使用虚幻引擎像素流经验的人阅读。 源码地址 这里研究的是UE5.1的版本&#xff0c;源码位置如下 C:\Program Files\Epic Games\UE_5.1\Engine\Plugins\Media\PixelStream…

AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN 0. 前言1. ProGAN2. 渐进式训练3. 其他技术3.1 小批标准差3.2 均等学习率3.3 逐像素归一化 4. 图像生成小结系列链接 0. 前言 我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有…

pytest的时候输出一个F后面跟很多绿色的点解读

使用pytest来测试pyramid和kotti项目&#xff0c;在kotti项目测试的时候&#xff0c;输出一个F后面跟很多绿色的点&#xff0c;是什么意思呢&#xff1f; 原来在使用pytest进行测试时&#xff0c;输出中的“F”代表一个失败的测试&#xff08;Failed&#xff09;&#xff0c;而…

Spring源码分析(@Configuration)

文章目录 Spring源码分析&#xff08;Configuration&#xff09;一、ConfigurationClassPostProcessor1、主要作用和特点2、执行的时机3、BeanFactoryPostProcessor4、BeanDefinitionRegistryPostProcessor5、ConfigurationClassPostProcessor1&#xff09;postProcessBeanDefi…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

聚观早报 | 沃尔沃发布一季度全球销量;苹果将举办财报电话会议

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月07日消息 沃尔沃发布一季度全球销量 苹果将举办新财报电话会议 荣耀Magic6支持5.5G通信 特斯拉将建最大超级充…

【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

TCP链接 1.三次挥手2.四次挥手3.拓展说说 TCP 2次握手行不行&#xff1f;为什么要3次 1.三次挥手 1&#xff09;第一次握手&#xff1a;建立连接时&#xff0c;客户端向服务器发送SYN包&#xff08;seqx&#xff09;&#xff0c;请求建立连接&#xff0c;等待确认 2&#xff09…

基于Springboot的Java学习平台

采用技术 基于Springbootjava学习平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能模块 后台管理 用户注册 课程信息 作业信息 资料信息…

【Linux实践室】Linux高级用户管理实战指南:创建与删除用户组操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户组命令2.1.1 知识点讲解2.1.2…

MacOS Docker 可视化面板 Portainer

一、简介 Portainer 是一个可视化的容器镜像图形管理工具&#xff0c;使用 Portainer 可以轻松构建、管理和维护Docker 环境。 而且完全免费&#xff08;portainer-ce 是免费的&#xff0c;portainer-ee 是需要授权的&#xff0c;今天安装的是 portainer-ce 版本&#xff09;&…

基于51单片机的尾气检测报警器Proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1DBn8A-p6wmP3Zssrrwspyg 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectroni…

Transformer模型-add norm(残差连接归一化)的简明介绍

今天介绍transformer模型的add & norm&#xff08;残差连接&归一化&#xff09; add代表残差连接&#xff08;Residual Connection&#xff09; 残差连接是一种跳过连接,它将输入添加到网络的中间层或输出上。 **残差连接&#xff08;Residual Connection&#xff09;…

深度学习-机器视觉part2

深度学习-机器视觉part2 文章目录 深度学习-机器视觉part2一、从卷积到卷积神经网络二、手撕卷积代码2.1 动机2.2 数据集2.3 卷积操作2.3.1 填充&#xff08;padding&#xff09;2.3.2 卷积块2.3.3 池化2.3.4 Softmax 2.4 完整CNN2.5 训练改进 三、经典CNN模型介绍四、CNN模型的…

SQL Server详细安装使用教程

1.安装环境 现阶段基本不用SQL Server数据库了&#xff0c;看到有这样的分析话题&#xff0c;就把多年前的存货发一下&#xff0c;大家也可以讨论看看&#xff0c;思路上希望还有价值。 SQL Server 2008 R2有32位版本和64位版本&#xff0c;32位版本可以安装在Windows XP及以上…

网络安全之代码签名证书申请

代码签名&#xff0c;作为一种数字安全机制&#xff0c;对于软件开发、分发及用户使用环节具有至关重要的意义。以下从六大方面阐述代码签名必不可少的重要性&#xff1a; 确保代码来源可信&#xff1a; 代码签名如同软件的“身份证”&#xff0c;通过数字证书对开发者身份进…

2024年船舶、海洋工程与应用技术国际学术会议(ICSOEAT 2024)

2024 International Conference on Shipbuilding, Ocean Engineering and Applied Technology ●会议简介 2024年船舶、海洋工程与应用技术国际学术会议&#xff08;ICSOEAT 2024&#xff09;旨在汇聚全球船舶、海洋工程与应用技术领域的专家学者&#xff0c;共同探讨行业前沿…

【话题】程序员35岁会失业吗?

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景招聘分析一、技术更新换代的挑战二、经验与技术的双重优势三、职业发展的多元化选择四、个人成长与职业规划的平衡五、结语文章推荐 背景 35岁被认为是程序员职业生…

【浅尝C++】多态机制=>重载重写隐藏的区别/抽象类/单继承与多继承的虚函数表/多态原理及虚函数表内存存储详谈

&#x1f3e0;专栏介绍&#xff1a;浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 &#x1f3af;每日格言&#xff1a;每日努力一点点&#xff0c;技术变化看得见。 文章目录 多态的概念多态的定义及实现多态的构成条件虚函数虚函数的重写override与final&#xff08;C11&a…

ffmpeg 将多个视频片段合成一个视频

ffmpeg 将多个视频片段合成一个视频 References 网络视频 6 分钟的诅咒。 新建文本文件 filelist.txt filelist.txtfile output_train_video_0.mp4 file output_train_video_1.mp4 file output_train_video_2.mp4 file output_train_video_3.mp4 file output_train_video_4.m…

C语言完结篇(17)

编译和链接 1. 翻译环境和运⾏环境 2. 翻译环境&#xff1a;预编译编译汇编链接 我们知道计算机能够执行的是二进制的指令 而我们的C语言代码都是文本信息 所以我们需要让C语言代码转变为二进制的指令&#xff08;这是需要编译器来进行处理的&#xff09; 翻译环境和运⾏…