【Ambari】HDP单机自动化安装(基础环境和MySQL脚本一键安装)

news2024/11/27 6:19:11

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁

🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁

感谢点赞和关注 ,每天进步一点点!加油!

目录

一、版本信息

1.1大数据组件版本

1.2Apache Components

1.3Databases支持版本

二、安装包上传

三 、服务器基础环境配置

3.1配置修改

3.2服务器环境配置

3.3MySQL数据库安装

四、安装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

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

七、脚本附录说明


一、版本信息


1.1大数据组件版本


组件

版本

操作系统

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.2Apache 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.3Databases支持版本


Name

Version

PostgreSQL

10.7 10.5 10.2 9.6

MySQL

5.7

MariaDB

10.2


二、安装包上传


使用工具将安装包上传到Linux服务器,如上传到/opt 目录,如下命令进入/opt目录并解压安装包,包名日期可能有所变动。

cd /opt
tar -zxvf windp-aio-deploy-build20231114.tar.gz
cd  /opt/windp-aio-deploy

安装包解压后目录结构:

windp-aio-deploy-buildxxxxxxxx.tar.gz 包内容说明

包、脚本和目录

说明

HDP-WinDP-AIO-Platform-final.tar.gz

Ambari安装包

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

JDK安装包

mysql-5.7.44-el7-x86_64.tar.gz

MySQL安装包

install_base.sh

基础环境配置和初始化

install_mysql.sh

MySQL安装

install_repo.sh

HDP源配置和Ambari安装

config

配置文件

repo

HDP-repo源文件


三 、服务器基础环境配置


3.1配置修改


确认是否/opt为安装目录,如果不是则要修改路径,root 用户密码修改,需要修改部分已标红,修改完成后在Linux服务器命令行执行如下命令:

cat > /opt/windp-aio-deploy/config/global.sh << EOF
#######################
#部署相关全局参数定义
#######################
# root 密码保存
root_passwd=winner
# mysql配置
myurl=127.0.0.1
myuser=root
mypwd=Winner001
myport=3306
mydb=ipvacloud
# HDP包解压目录
install_path=/hadoop
hdp_tar_name=HDP-WinDP-AIO-Platform-final.tar.gz
# mysql 安装目录
mysql_install_path=/usr/local
EOF

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

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

3.2服务器环境配置


执行如下命令,等待执行完成

cd  /opt/windp-aio-deploy/
sh install_base.sh

执行如下命令,查看JDK是否配置成功,显示如图JJDK版本信息则配置成功。

bash
source /etc/profile
java -version

3.3MySQL数据库安装


执行如下命令,等待MySQL安装完成:【Linux】Centos7 shell实现MySQL5.7 tar 一键安装-CSDN博客

cd  /opt/windp-aio-deploy/
sh install_mysql.sh

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

cd  /opt/windp-aio-deploy/
/etc/init.d/mysqld status


四、安装Ambari-server


4.1 安装ambari-server


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

cd  /opt/windp-aio-deploy/
sh install_repo.sh

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

ambari-server status

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

ambari-server restart

4.2 检查REPO源


执行完上一步脚本配置的REPO源可以在浏览器中查看。需要将示例IP地址换成部署WinDP-AIO Linux本机的IP。如下是示例IP地址:

http://192.168.2.161/ambari/
http://192.168.2.161/HDP/
http://192.168.2.161/HDP-UTILS/
http://192.168.2.161/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://windp-aio/HDP/centos7/3.1.4.0-315
http://windp-aio/HDP-GPL/centos7/3.1.4.0-315
http://windp-aio/HDP-UTILS/centos7/1.1.0.22

Install Options

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

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

sz  /root/.ssh/id_rsa

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

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

  • 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

配置密码,建议使用一种好记 , 我们统一使用 “Winner001”,密码复制到所有的“password”框中,密码已存在的框采用覆盖。完成后下一步

DATABASES

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

  • DatabaseName:hive
  • Uesr:hive
  • Database Password: Winner001
  • DatabaseURL:jdbc:mysql://windp-aio/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://windp-aio/ranger
  • Ranger DB host:windp-aio

设置完成后,下一步

DIRECTORIES

默认配置下一步, 安装完成后我们再对存储路径做进一步规划修改,一般存储数据和日志路径要配置为数据盘目录。

ACCOUNTS

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

ALL CONFIGURATIONS

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

确认下一步

Review

点击DEPLOY

组件安装中,安装需要40分钟左右

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

点击 COMPLETE

安装完成,启动失败的组件我们逐个击破就行。


六、开启Kerberos


6.1 kerberos服务检查


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

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

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

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

cd  /opt/windp-aio-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: windp-aio
  • 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分钟左右

启动完成 下一步

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

启动完成

客户端认证


七、脚本附录说明


包结构以及配置文件

install_base.sh

#! /bin/bash
#
# Author: kangll
# CreateTime: 2023-11-10
# Desc: 基础环境配置,包括服务器设置,JDK,免密,kerberos配置
#

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

# public 主机名和root密码 
ip=$(ip addr show | grep -E 'inet [0-9]' | awk '{print $2}' | awk -F '/' '{print $1}' | sed -n '$p')
ssh_hosts=${ip}
ssh_networkname=(windp-aio)
# global.sh 配置文件中获取
ssh_passwd=$root_passwd
kerberos_user=winner_spark

###########################
# 配置基本环境
###########################
base_os_config() {
	# tools
	sudo yum install expect  bash-completion  lrzsz  tree  vim  wget  net-tools  libaio perl -y

	# hostname
	sudo hostnamectl set-hostname $ssh_networkname

	# hosts
	sudo cat > /etc/hosts << EOF
$ip $ssh_networkname
EOF
	## firewalld disable
	sudo systemctl stop firewalld
	sudo systemctl disable firewalld
	sudo systemctl status firewalld

	## selinux disable
	sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
        sudo setenforce 0

        ## hugepage
        cat > /etc/rc.local << EOF
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
EOF

	## chrony
	sudo yum install chrony -y
	sudo systemctl restart  chronyd
	sudo systemctl enable chronyd
	sudo systemctl status chronyd
        
        # httpd  
	sudo yum -y install httpd
	sudo systemctl restart httpd.service
	sudo systemctl enable httpd.service 
	sudo systemctl status httpd.service 

	## kerberos client
	sudo yum install -y krb5-workstation krb5-libs
}


########################
# 生成本地ssh公钥
########################
create_ssh_pub(){
	echo "生成本地ssh公钥"
	/usr/bin/expect << eof
	# 设置捕获字符串后,期待回复的超时时间
	set timeout 30
	 
	spawn ssh-keygen -t rsa -b 1024
	 
	## 开始进连续捕获
	expect	{
		".ssh/id_rsa)"      { send "\n";  exp_continue }
		"Overwrite (y/n)?"  { send "y\n"; exp_continue }
		"no passphrase):"   { send "\n";  exp_continue }
		"passphrase again:" { send "\n";  exp_continue }
	}
eof
}
 
########################
# 定义复制ssh公钥方法
########################
copy_ssh(){
       
        if [ ! -f /root/.ssh/id_rsa.pub ];then
             create_ssh_pub
        fi

	echo "复制公钥到对应的主机上"
	/usr/bin/expect << eof
	# 设置捕获字符串后,期待回复的超时时间
	set timeout 30
	 
	spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $1@$2
	 
	## 开始进连续捕获
	expect	{
		"connecting (yes/no)?" { send "yes\n";  exp_continue }
		"s password:"          { send "${ssh_passwd}\n"; exp_continue }
	}
eof
}

########################
# 配置免密
########################
config_ssh() {
	for name in ${ssh_networkname[*]};do
		timeout 5 ssh root@${name} "echo ${name}: 'This is success!'"
		if [[ $? -ne 0 ]];then
			echo "复制文件到: ${name}"
			copy_ssh root ${name} > /dev/null
		fi
	done
         
        echo "********** ssh installation completed **********"
}

########################
# 配置JDK环境
########################
config_java_home() {
	## java
	sudo mkdir -p /usr/java
        if [ -f $BASEDIR/jdk-8u162-linux-x64.tar.gz ];then
             tar -zxvf $BASEDIR/jdk-8u162-linux-x64.tar.gz -C /usr/java 
        fi

        java_home=$(cat /etc/profile | grep 'JAVA_HOME=')
        if [ -z "$java_home" ]; then
            echo 'export JAVA_HOME=/usr/java/jdk1.8.0_162' >> /etc/profile 
	    echo 'export CLASSPATH=$JAVA_HOME/lib/' >> /etc/profile
	    echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
        fi
	source /etc/profile
	java -version
        echo "********** JDK installation completed **********"
}

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

        # config file
        cat $BASEDIR/config/krb5.conf > /etc/krb5.conf
	cat $BASEDIR/config/kdc.conf  > /var/kerberos/krb5kdc/kdc.conf
	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 
	useradd winner_spark
	# keytabs file path
        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    
       chown ${kerberos_user}:${kerberos_user} /etc/security/keytabs/${kerberos_user}.keytab
       echo "********** kerberos user winner_spark add completed **********"
}

# 配置基础环境
base_os_config

# 配置 root用户免密 
config_ssh

# 配置JDK
config_java_home

# 配置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.27
#
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/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

# 修改环境变量 
# 行数需根据实际情况修改
#sed '78s/$/&:\/usr\/local\/mysql\/bin/' -i $profile
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
ssh $hostname "source /etc/profile;mysqladmin -h'$myurl' -u'$myuser' -p'$mysqlPw' password '$mysqlPwTMP';mysqladmin -h'$myurl' -u'$myuser' -p'$mysqlPwTMP' password '$mypwd';exit"

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

如下是repo源的配置还有Ambari的配置启动

install_repo.sh

#! /bin/bash
#
# Author: kangll
# CreateTime: 2023-11-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

###########################
# 配置 HDP repo
###########################
config_repo() {
  	mkdir -p $config_path
        if [ -f $BASEDIR/$tar_name ];then
             tar -zxvf $BASEDIR/$tar_name -C $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/repo/* /etc/yum.repos.d/
        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/
       cp $BASEDIR/config/mysql-connector-java.jar /usr/share/java/
       cat $BASEDIR/config/ambari.properties > /etc/ambari-server/conf/ambari.properties
       cp  $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/repo/services/ACCUMULO/metainfo.xml    >  $stack_path/3.0/services/ACCUMULO/metainfo.xml
	cat $BASEDIR/repo/services/KAFKA/metainfo.xml       >  $stack_path/3.1/services/KAFKA/metainfo.xml
	cat $BASEDIR/repo/services/PIG/metainfo.xml         >  $stack_path/3.1/services/PIG/metainfo.xml
	cat $BASEDIR/repo/services/DRUID/metainfo.xml       >  $stack_path/3.0/services/DRUID/metainfo.xml
	cat $BASEDIR/repo/services/LOGSEARCH/metainfo.xml   >  $stack_path/3.0/services/LOGSEARCH/metainfo.xml
	cat $BASEDIR/repo/services/SUPERSET/metainfo.xml    >  $stack_path/3.0/services/SUPERSET/metainfo.xml
	cat $BASEDIR/repo/services/ATLAS/metainfo.xml       >  $stack_path/3.1/services/ATLAS/metainfo.xml
	cat $BASEDIR/repo/services/ZEPPELIN/metainfo.xml    >  $stack_path/3.0/services/ZEPPELIN/metainfo.xml      
	cat $BASEDIR/repo/services/STORM/metainfo.xml       >  $stack_path/3.0/services/STORM/metainfo.xml
	cat $BASEDIR/repo/services/RANGER_KMS/metainfo.xml  >  $stack_path/3.1/services/RANGER_KMS/metainfo.xml
	cat $BASEDIR/repo/services/OOZIE/metainfo.xml       >  $stack_path/3.0/services/OOZIE/metainfo.xml
	cat $BASEDIR/repo/services/KNOX/metainfo.xml        >  $stack_path/3.1/services/KNOX/metainfo.xml
	cat $BASEDIR/repo/services/SQOOP/metainfo.xml       >  $stack_path/3.0/services/SQOOP/metainfo.xml
	cat $BASEDIR/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

cat repo/services/ACCUMULO/metainfo.xml

我们把这些组件选择隐藏了,默认不安装,不会出现在组件安装的选择项里面。

<metainfo>
  <schemaVersion>2.0</schemaVersion>
  <services>
    <service>
      <name>ACCUMULO</name>
      <deleted>true</deleted>
      <!-- 省略 --->
    </service>
  </services>
</metainfo>

global.sh

#######################
#部署相关全局参数定义
#######################
# root 密码保存
root_passwd=winner@001
# mysql配置
myurl=127.0.0.1
myuser=root
mypwd=Winner001
myport=3306
mydb=ipvacloud
# HDP包解压目录
install_path=/hadoop
hdp_tar_name=HDP-WinDP-AIO-Platform-final.tar.gz
# mysql 安装目录
mysql_install_path=/usr/local

init_db.sql

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Winner001' WITH GRANT OPTION;
create database ambari character set utf8;
CREATE USER 'ambari'@'%' IDENTIFIED BY 'Winner001';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
FLUSH PRIVILEGES;

create database hive character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'Winner001';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;

create database ranger character set utf8;
CREATE USER 'ranger'@'%' IDENTIFIED BY 'Winner001';
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%';
FLUSH PRIVILEGES;

ambari.properties,ambari配置文件需要修改数据库连接和JDK路径

#
# Copyright 2011 The Apache Software Foundation
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
#Sat Nov 04 12:10:44 CST 2023
agent.package.install.task.timeout=1800
agent.stack.retry.on_repo_unavailability=false
agent.stack.retry.tries=5
agent.task.timeout=900
agent.threadpool.size.max=25
ambari-server.user=root
ambari.python.wrap=ambari-python-wrap
bootstrap.dir=/var/run/ambari-server/bootstrap
bootstrap.script=/usr/lib/ambari-server/lib/ambari_server/bootstrap.py
bootstrap.setup_agent.script=/usr/lib/ambari-server/lib/ambari_server/setupAgent.py
check_database_skipped=false
client.threadpool.size.max=25
common.services.path=/var/lib/ambari-server/resources/common-services
custom.action.definitions=/var/lib/ambari-server/resources/custom_action_definitions
custom.mysql.jdbc.name=mysql-connector-java.jar
extensions.path=/var/lib/ambari-server/resources/extensions
gpl.license.accepted=true
http.cache-control=no-store
http.charset=utf-8
http.pragma=no-cache
http.strict-transport-security=max-age=31536000
http.x-content-type-options=nosniff
http.x-frame-options=DENY
http.x-xss-protection=1; mode=block
java.home=/usr/java/jdk1.8.0_162
java.releases=jdk1.8
java.releases.ppc64le=
jce.download.supported=true
jdk.download.supported=true
jdk1.8.desc=Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
jdk1.8.dest-file=jdk-8u112-linux-x64.tar.gz
jdk1.8.home=/usr/jdk64/
jdk1.8.jcpol-file=jce_policy-8.zip
jdk1.8.jcpol-url=http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip
jdk1.8.re=(jdk.*)/jre
jdk1.8.url=http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz
kerberos.keytab.cache.dir=/var/lib/ambari-server/data/cache
kerberos.operation.verify.kdc.trust=true
metadata.path=/var/lib/ambari-server/resources/stacks
mpacks.staging.path=/var/lib/ambari-server/resources/mpacks
pid.dir=/var/run/ambari-server
previous.custom.mysql.jdbc.name=mysql-connector-java.jar
recommendations.artifacts.lifetime=1w
recommendations.dir=/var/run/ambari-server/stack-recommendations
resources.dir=/var/lib/ambari-server/resources
rolling.upgrade.skip.packages.prefixes=
security.server.disabled.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384|TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384|TLS_RSA_WITH_AES_256_CBC_SHA256|TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384|TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384|TLS_DHE_RSA_WITH_AES_256_CBC_SHA256|TLS_DHE_DSS_WITH_AES_256_CBC_SHA256|TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA|TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA|TLS_RSA_WITH_AES_256_CBC_SHA|TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA|TLS_ECDH_RSA_WITH_AES_256_CBC_SHA|TLS_DHE_RSA_WITH_AES_256_CBC_SHA|TLS_DHE_DSS_WITH_AES_256_CBC_SHA|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256|TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256|TLS_RSA_WITH_AES_128_CBC_SHA256|TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256|TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256|TLS_DHE_RSA_WITH_AES_128_CBC_SHA256|TLS_DHE_DSS_WITH_AES_128_CBC_SHA256|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA|TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA|TLS_RSA_WITH_AES_128_CBC_SHA|TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA|TLS_ECDH_RSA_WITH_AES_128_CBC_SHA|TLS_DHE_RSA_WITH_AES_128_CBC_SHA|TLS_DHE_DSS_WITH_AES_128_CBC_SHA|TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA|TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA|TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA|TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA|SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA|SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA|TLS_EMPTY_RENEGOTIATION_INFO_SCSV|TLS_DH_anon_WITH_AES_256_CBC_SHA256|TLS_ECDH_anon_WITH_AES_256_CBC_SHA|TLS_DH_anon_WITH_AES_256_CBC_SHA|TLS_DH_anon_WITH_AES_128_CBC_SHA256|TLS_ECDH_anon_WITH_AES_128_CBC_SHA|TLS_DH_anon_WITH_AES_128_CBC_SHA|TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA|SSL_DH_anon_WITH_3DES_EDE_CBC_SHA|SSL_RSA_WITH_DES_CBC_SHA|SSL_DHE_RSA_WITH_DES_CBC_SHA|SSL_DHE_DSS_WITH_DES_CBC_SHA|SSL_DH_anon_WITH_DES_CBC_SHA|SSL_RSA_EXPORT_WITH_DES40_CBC_SHA|SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA|SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA|SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA|TLS_RSA_WITH_NULL_SHA256|TLS_ECDHE_ECDSA_WITH_NULL_SHA|TLS_ECDHE_RSA_WITH_NULL_SHA|SSL_RSA_WITH_NULL_SHA|TLS_ECDH_ECDSA_WITH_NULL_SHA|TLS_ECDH_RSA_WITH_NULL_SHA|TLS_ECDH_anon_WITH_NULL_SHA|SSL_RSA_WITH_NULL_MD5|TLS_KRB5_WITH_3DES_EDE_CBC_SHA|TLS_KRB5_WITH_3DES_EDE_CBC_MD5|TLS_KRB5_WITH_DES_CBC_SHA|TLS_KRB5_WITH_DES_CBC_MD5|TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA|TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
security.server.keys_dir=/var/lib/ambari-server/keys
server.connection.max.idle.millis=900000
server.execution.scheduler.isClustered=false
server.execution.scheduler.maxDbConnections=5
server.execution.scheduler.maxThreads=5
server.execution.scheduler.misfire.toleration.minutes=480
server.fqdn.service.url=http://169.254.169.254/latest/meta-data/public-hostname
server.http.session.inactive_timeout=1800
server.jdbc.connection-pool=c3p0
server.jdbc.connection-pool.acquisition-size=5
server.jdbc.connection-pool.idle-test-interval=7200
server.jdbc.connection-pool.max-age=0
server.jdbc.connection-pool.max-idle-time=14400
server.jdbc.connection-pool.max-idle-time-excess=0
server.jdbc.database=mysql
server.jdbc.database_name=ambari
server.jdbc.driver=com.mysql.jdbc.Driver
server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar
server.jdbc.hostname=localhost
server.jdbc.port=3306
server.jdbc.rca.driver=com.mysql.jdbc.Driver
server.jdbc.rca.url=jdbc:mysql://localhost:3306/ambari
server.jdbc.rca.user.name=ambari
server.jdbc.rca.user.passwd=/etc/ambari-server/conf/password.dat
server.jdbc.url=jdbc:mysql://localhost:3306/ambari
server.jdbc.user.name=ambari
server.jdbc.user.passwd=/etc/ambari-server/conf/password.dat
server.os_family=redhat7
server.os_type=centos7
server.persistence.type=remote
server.python.log.level=INFO
server.python.log.name=ambari-server-command.log
server.stages.parallel=true
server.task.timeout=1200
server.tmp.dir=/var/lib/ambari-server/data/tmp
server.version.file=/var/lib/ambari-server/resources/version
shared.resources.dir=/usr/lib/ambari-server/lib/ambari_commons/resources
skip.service.checks=false
stack.java.home=/usr/java/jdk1.8.0_162
stackadvisor.script=/var/lib/ambari-server/resources/scripts/stack_advisor.py
ulimit.open.files=65536
upgrade.parameter.convert.hive.tables.timeout=86400
upgrade.parameter.move.hive.tables.timeout=86400
user.inactivity.timeout.default=0
user.inactivity.timeout.role.readonly.default=0
views.ambari.request.connect.timeout.millis=30000
views.ambari.request.read.timeout.millis=45000
views.http.cache-control=no-store
views.http.charset=utf-8
views.http.pragma=no-cache
views.http.strict-transport-security=max-age=31536000
views.http.x-content-type-options=nosniff
views.http.x-frame-options=SAMEORIGIN
views.http.x-xss-protection=1; mode=block
views.request.connect.timeout.millis=5000
views.request.read.timeout.millis=10000
views.skip.home-directory-check.file-system.list=wasb,adls,adl
webapp.dir=/usr/lib/ambari-server/web

password.dat(数据库密码)

Winner001

my.cnf

[mysql]
socket=/var/lib/mysql/mysql.sock
# set mysql client default chararter
default-character-set=utf8

[mysqld]
socket=/var/lib/mysql/mysql.sock
# set mysql server port  
port = 3306
# set mysql install base dir
basedir=/usr/local/mysql
# set the data store dir
datadir=/usr/local/mysql/data
# set the number of allow max connnection
max_connections=200
# set server charactre default encoding
character-set-server=utf8
# the storage engine
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
[mysql.server]
user=mysql
basedir=/usr/local/mysql

krb5.conf (kerberos配置)

[libdefaults]
  renew_lifetime = 7d
  forwardable = true
  default_realm = WINNER.COM
  ticket_lifetime = 24h
  dns_lookup_realm = false
  dns_lookup_kdc = false
  default_ccache_name = /tmp/krb5cc_%{uid}
  #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
  #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5

[logging]
  default = FILE:/var/log/krb5kdc.log
  admin_server = FILE:/var/log/kadmind.log
  kdc = FILE:/var/log/krb5kdc.log

[realms]
  WINNER.COM = {
    admin_server = windp-aio
    kdc = windp-aio
  }

repo源

ambari.repo

#VERSION_NUMBER=2.7.4.0-118
[ambari-2.7.4.0]
#json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
name=ambari Version - ambari-2.7.4.0
baseurl=http://windp-aio/ambari/centos7/2.7.4.0-118/
gpgcheck=1
gpgkey=http://windp-aio/ambari/centos7/2.7.4.0-118/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

hdp.repo

#VERSION_NUMBER=3.1.4.0-315
[HDP-3.1.4.0]
name=HDP Version - HDP-3.1.4.0
baseurl=http://windp-aio/HDP/centos7/3.1.4.0-315
gpgcheck=1
gpgkey=http://windp-aio/HDP/centos7/3.1.4.0-315/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1


[HDP-UTILS-1.1.0.22]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.22
baseurl=http://windp-aio/HDP-UTILS/centos7/1.1.0.22
gpgcheck=1
gpgkey=http://windp-aio/HDP/centos7/3.1.4.0-315/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

hdp.gpl.repo

#VERSION_NUMBER=3.1.4.0-315
[HDP-GPL-3.1.4.0]
name=HDP-GPL Version - HDP-GPL-3.1.4.0
baseurl=http://windp-aio/HDP-GPL/centos7/3.1.4.0-315
gpgcheck=1
gpgkey=http://windp-aio/HDP-GPL/centos7/3.1.4.0-315/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

总结:如上是单机测试环境,我们可以将集群扩展到多台 完成集群安装。

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

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

相关文章

基于Java SSM框架+Vue实现大学生兼职信息网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现大学生兼职信息网站演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认…

基于PLC的果园灌溉系统设计(论文+源码)

1.系统设计 系统示意图如图2-1所示。某一果园 共有3个灌溉区域&#xff0c;分别为灌溉1#区&#xff0c;灌溉2#区&#xff0c;灌溉3#区&#xff0c;分别使用不同湿度传感器检测湿度&#xff0c;用于各区域控制湿度&#xff0c;进行灌溉&#xff0c;使用相应的灌溉阀进行灌溉。这…

Deep Learning(wu--46)

文章目录 ContentsBeginBasic逻辑回归SGD导数计算图&#xff08;反向传播&#xff09;向量化广播numpy Neural Network向量化激活函数梯度下降深层表示反向传播 Contents Begin Basic 逻辑回归 SGD 导数 计算图&#xff08;反向传播&#xff09; 向量化 广播 numpy Neural Netw…

Matplotlib不规则子图_Python数据分析与可视化

除了网格子图&#xff0c;matplotlib还支持不规则的多行多列子图网格。 plt.GridSpec()对象本事不能直接创建一个图形&#xff0c;他只是 plt.subplot()命令可以识别的简易接口。 这里创建了一个带行列间距的23网格&#xff1a; grid plt.GridSpec(2, 3, wspace0.4, hspace0…

unity学习笔记06

一、预制体 1.定义&#xff1a; 预制体是一种存储了一个或多个游戏对象及其组件的资产。可以将预制体视为游戏对象的模板&#xff0c;它包含了对象的所有属性、组件和初始状态。 2.创建预制体&#xff1a; 在Unity中&#xff0c;可以通过将一个或多个游戏对象拖动到项目窗口…

阳阳抖客斗音直播间私信引流脚本,支持发送图片精准引流获客,快手私信引流软件+小红书私信引流工具

功能介绍&#xff1a; 1.直播精准引流客源 2.首页推荐精准引流客源 3.新增引流方式 4.支持多个文本图片随机发送 5.评论引流支持图文一体 6.自定义时间/个数 7.自动引流减少人工成本 8.私信效果最佳 9.杜绝封号 时间把控好 10.功能不断完善更新 直播间引流 手动打开…

答题活动小程序竞品分析

答题小程序竞品分析 答题活动小程序竞品分析 知识竞赛小程序竞品分析 ~ 从2020年开始&#xff0c;机缘巧合&#xff0c;我开始涉及答题小程序的开发&#xff0c;从最初的刷题场景到答题活动场景&#xff0c;已经走过了三个年头&#xff0c;这期间我开发的答题小程序产品也逐…

基于python协同过滤推荐算法的音乐推荐与管理系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Python的协同过滤推荐算法的音乐推荐与管理系统是一个集成了音乐推荐和管理的系统&#xff0c;它使用协同过滤算…

居家适老化设计第三十二条---卫生间之扶手

以上产品图片均来源于淘宝 侵权联系删除 居家适老化中的扶手是指在家居环境中&#xff0c;为老年人提供支撑和帮助的装置&#xff0c;通常安装在家中的各个需要扶抓的位置&#xff0c;如楼梯、卫生间、浴室、厨房等处。扶手的设计应考虑老年人的体力、平衡和安全需求&#xf…

使用NVM管理多个Nodejs版同时本支持vue2、vue3

1.安装nvm,下载地址&#xff1a; https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 2.nvm常用命令 Usage:nvm arch : Show if node is running in 32 or 64 bit mode.nvm current : Display active version.nvm debug …

Ant Design:企业级 UI 设计语言和 React 库 | 开源日报 No.88

ant-design/ant-design Stars: 87.9k License: MIT Ant Design 是一个企业级 UI 设计语言和 React UI 库。 为 Web 应用程序设计的企业级 UI。提供一套高质量的开箱即用的 React 组件。使用可预测静态类型编写 TypeScript 代码。包含完整的设计资源和开发工具包。支持数十种语…

电脑投屏到电视的软件,Mac,Linux,Win均可使用

电脑投屏到电视的软件&#xff0c;Mac&#xff0c;Linux&#xff0c;Win均可使用 AirDroid Cast的TV版&#xff0c;可以上笔记本电脑或台式电脑直接投屏到各种安卓电视上。 无线投屏可以实现本地投屏及远程投屏&#xff0c;AirPlay协议可以实现本地投屏&#xff0c;大家可以按需…

【Python】使用globals()函数成功解决tkinter多个新窗口问题

我在近期的一个项目&#xff08;tkinter复刻记事本&#xff09;里遇到一个棘手的问题&#xff1a;如何在创建多个新窗口后&#xff0c;每个窗口还能独立运行。当时我尝试如何去解决&#xff0c;但是无果&#xff0c;于是觉得非要使用线程不可&#xff0c;便留了一个坑。直到今天…

6.12路径总和(LC112-E)

算法&#xff1a; 用累减&#xff0c;每遍历一个节点就用target减去其值&#xff0c;减到叶子节点的时候&#xff0c;再判断叶子结点处累减的结果是否为0&#xff0c;若是&#xff0c;说明刚刚的路径有效。 调试过程&#xff1a; /*** Definition for a binary tree node.* p…

BetaFlight模块设计之三十六:SoftSerial

BetaFlight模块设计之三十六&#xff1a;SoftSerial 1. 源由2. API接口2.1 openSoftSerial2.2 onSerialRxPinChange2.3 onSerialTimerOverflow2.4 processTxState2.5 processRxState 3. 辅助函数3.1 applyChangedBits3.2 extractAndStoreRxByte3.3 prepareForNextRxByte 4. 总结…

盘点43个Android项目源码安卓爱好者不容错过

盘点43个Android项目源码安卓爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1yHmkUeX4vxVag9Yr0yeQRg?pwd8888 提取码&#xff1a;8888 项目名称 Android NDK直播项…

单片机学习5——外部中断程序

#include<reg52.h>unsigned char a; sbit lcden P3^4;void main() {lcden0;EA1;EX01;IT00;a0xF0; //点亮4位小灯while(1){P1a;} }//中断服务程序 void ext0() interrupt 0 // 0 表示的是外部中断源0 {a0x0f; // 中断处理完&#xff0c;再返回主…

2.5 - 网络协议 - HTTP协议工作原理,报文格式,抓包实战

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 HTTP协议 1、HTTP协议工作原理2、HTTP协议报文3、H…

NX二次开发UF_CURVE_ask_offset_direction_2 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_offset_direction_2 Defined in: uf_curve.h int UF_CURVE_ask_offset_direction_2(UF_STRING_p_t input_curves, double offset_direction_vector [ 3 ] , double dra…

如何使用OpenCV转换图像并创建视频,实现Ken Burns特效

一、Ken Burns特效 当使用OpenCV时,最常使用的是图像,但是我们也可以多个图像创建动画,通过引入时间轴更容易可视化。 Ken Burns特效这是一种以电影制片人肯伯恩斯 (Ken Burns) 命名的平移和缩放技术,Ken Burns 效果不是在屏幕上显示大型静态照片,而是裁剪细节,然后平移图…