本篇所写脚本均可修改后直接使用
安装顺序为jkd Hadoop MySQL
安装版本 jdk1.8.0_162 hadoop-3.3.1 mysql8.0.26
配套软件
链接:https://pan.baidu.com/s/1G2jIktqj8TdP5Jl9kFbKKQ?pwd=du8u
提取码:du8u
JDK安装脚本
#!/bin/bash
# 脚本存放位置 /opt/modules/
# 压缩包存放位置 /opt/modules/jdk-8u162-linux-x64.tar.gz
# 安装目录 /opt/installs
# 安装版本 jdk1.8.0_162
CRTDIR=$(pwd)
# 此处为压缩包存放位置
jdkTargz="/opt/modules/jdk-8u162-linux-x64.tar.gz"
echo "${jdkTargz}"
# 检查原先是否已配置java环境变量
checkExist(){
jdk1=$(grep -n "export JAVA_HOME=.*" /etc/profile | cut -f1 -d':')
if [ -n "$jdk1" ];then
echo "JAVA_HOME已配置,删除内容"
sed -i "${jdk1}d" /etc/profile
fi
jdk2=$(grep -n "export CLASSPATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
if [ -n "$jdk2" ];then
echo "CLASSPATH路径已配置,删除内容"
sed -i "${jdk2}d" /etc/profile
fi
jdk3=$(grep -n "export PATH=.*\$JAVA_HOME.*" /etc/profile | cut -f1 -d':')
if [ -n "$jdk3" ];then
echo "PATH-JAVA路径已配置,删除内容"
sed -i "${jdk3}d" /etc/profile
fi
}
# 查询是否有jdk.tar.gz
if [ -e $jdkTargz ];
then
echo "— — 存在jdk压缩包 — —"
echo "正在解压jdk压缩包..."
tar -zxvf ${jdkTargz} -C /opt/installs
if [ -e "/opt/install/jdk" ];then
echo "存在/opt/install/jdk,删除..."
rm -rf /opt/install/jdk
fi
mv /opt/installs/jdk1.8.0_162 /opt/installs/jdk
# 检查配置信息
checkExist
echo "---------------------------------"
echo "正在配置jdk环境..."
sed -i '$a export JAVA_HOME=/opt/installs/jdk' /etc/profile
sed -i '$a export PATH=$PATH:$JAVA_HOME/bin' /etc/profile
echo "---------------------------------"
echo "JAVA环境配置已完成..."
echo "---------------------------------"
echo "正在重新加载配置文件..."
echo "---------------------------------"
source /etc/profile
echo "配置版本信息如下:"
java -version
else
echo "未检测到安装包,请将安装包放到/opt目录下"
fi
Hadoop安装脚本
#!/bin/bash
# 脚本存放位置 /opt/modules/
# 压缩包存放位置 /opt/modules/hadoop-3.3.1.tar.gz
# 安装目录 /opt/installs
# 安装版本 hadoop-3.3.1
CRTDIR=$(pwd)
# 此处为压缩包存放位置
HadoopTargz="/opt/modules/hadoop-3.3.1.tar.gz"
echo "${HadoopTargz}"
# 检查原先是否已配置hadoop环境变量
checkExist(){
hadoop1=$(grep -n "export HADOOP_HOME=.*" /etc/profile | cut -f1 -d':')
if [ -n "$hadoop1" ];then
echo "HADOOP_HOME已配置,删除内容"
sed -i "${hadoop1}d" /etc/profile
fi
hadoop2=$(grep -n "export PATH=.*\$HADOOP_HOME.*" /etc/profile | cut -f1 -d':')
if [ -n "$hadoop2" ];then
echo "PATH-HADOOP路径已配置,删除内容"
sed -i "${hadoop2}d" /etc/profile
fi
}
# 查询是否有hadoop-3.3.1.tar.gz
if [ -e $HadoopTargz ];
then
echo "— — 存在hadoop压缩包 — —"
echo "正在解压hadoop压缩包..."
tar -zxvf ${HadoopTargz} -C /opt/installs
if [ -e "/opt/install/hadoop" ];then
echo "存在/opt/install/hadoop,删除..."
rm -rf /opt/install/hadoop
fi
if [ -e "/opt/install/hadoop-3.3.1" ];then
echo "存在/opt/install/hadoop-3.3.1,删除..."
rm -rf /opt/install/hadoop-3.3.1
fi
# 将解压后的压缩包重命名为hadoop
mv /opt/installs/hadoop-3.3.1 /opt/installs/hadoop
#修改配置文件
# 检查配置信息
checkExist
echo "---------------------------------"
echo "正在配置hadoop环境..."
sed -i '$a export HADOOP_HOME=/opt/installs/hadoop' /etc/profile
sed -i '$a export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' /etc/profile
echo "---------------------------------"
echo "HADOOP环境配置已完成..."
echo "---------------------------------"
echo "正在重新加载配置文件..."
echo "---------------------------------"
source /etc/profile
echo "配置版本信息如下:"
hadoop version
echo "HADOOP安装完成"
else
echo "未检测到安装包,请将安装包放到/opt目录下"
fi
# 开始修改hadoop伪分布式配置文件
# 如果安装目录为本篇所使用目录,直接使用即可,如果自定义路径请修改以下语句的路径
# 例如 /opt/installs/hadoop/etc/hadoop/hadoop-env.sh 修改为 /你的安装路径/hadoop/etc/hadoop/hadoop-env.sh
# 本脚本虚拟机ip为192.168.99.101 如需自用请修改
## hadoop-env.sh
cat << EOF >> /opt/installs/hadoop/etc/hadoop/hadoop-env.sh
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export JAVA_HOME=/opt/installs/jdk
EOF
## core-site.xml
cat << EOF > /opt/installs/hadoop/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed 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. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- 设置namenode节点 -->
<!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时 代默认端⼝ 9820 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.99.101:9820</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/installs/hadoop/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 不开启权限检查 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
EOF
## hdfs-site.xml
cat << EOF > /opt/installs/hadoop/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed 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. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<!--备份数量-->
<name>dfs.replication</name>
<value>1</value>
</property>
<!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.99.101:9868</value>
</property>
<!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.99.101:9870</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
EOF
## yarn-site.xml
cat << EOF > /opt/installs/hadoop/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
<!-- mapreduce计算服务方法 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 配置resourcemanager的主机ip -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.99.101</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/opt/installs/hadoop/etc/hadoop:/opt/installs/hadoop/share/hadoop/common/*:/opt/installs/hadoop/share/hadoop/common/lib/*:/opt/installs/hadoop/share/hadoop/hdfs/*:/opt/installs/hadoop/share/hadoop/hdfs/lib/*:/opt/installs/hadoop/share/hadoop/mapreduce/*:/opt/installs/hadoop/share/hadoop/mapreduce/lib/*:/opt/installs/hadoop/share/hadoop/yarn/*:/opt/installs/hadoop/share/hadoop/yarn/lib/*
</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚合 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志保存时间 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
EOF
## mapred-site.xml
cat << EOF > /opt/installs/hadoop/etc/hadoop/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.99.101:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.99.101:19888</value>
</property>
</configuration>
EOF
## workers
cat << EOF >/opt/installs/hadoop/etc/hadoop/workers
192.168.99.101
EOF
# 初始化namenode
hdfs namenode -format
# 提示安装成功
echo "install hadoop has successed"
source /etc/profile
mysql安装脚本
#!/bin/bash
####################################
# 1.建立临时文件夹
# 2.tar文件 ,与此脚本放同一目录
# 3.删除centos7自带的MySQL
# 4.按顺序安装MySQL相关的依赖包
# 5.修改MySQL的密码 -- 默认使用密码为123456
# 6.配置MySQL可以被远程访问(实际开发中也是,有些机器需要有访问这个机器MySQL的权限)
# 7.开放3306端口,提供远程访问
# $? => 代表上一个命令执行后的退出状态: 0->成功,1->失败
# example => sh mysql8.0.26.sh
####################################
# echo -e "\e[1;32m****\e[0m"
# 安装vim
yum install -y vim
#第一步、创建一个临时的文件夹
mkdir mysql_rpm
#第二步、把新上传的MySQL的安装包移动到mysql_rpm下
mv mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar mysql_rpm
#进入到mysql_rpm目录下,开始执行下面的操作
cd mysql_rpm
#解压MySQL的安装包,在当前目录下
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
#查看集群上现有的MySQL,需要删除掉
mysql_old=`rpm -qa | grep mariadb`
echo -e "\e[1;32m当前centos中MySQL版本是: ${mysql_old}\e[0m"
#删除自带的MySQL
rpm -e --nodeps ${mysql_old}
#验证旧版本的MySQL是否被删除掉
mysql_validate=`rpm -qa | grep mariadb`
echo -e "\e[1;32m验证旧版的MySQL是否被删除干净: ${mysql_validate}\e[0m"
#开始安装MySQL,注意:这些包安装是有顺序的
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
#判断安装的过程是否成功
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-common-8.0.26-1.el7.x86_64.rpm -- 第1个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-common-8.0.26-1.el7.x86_64.rpm -- 第1个包------- 失败\e[0m"
fi
#第二个包
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm -- 第2个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm -- 第2个包------- 失败\e[0m"
fi
#第三个包:安装rpm -ivh numactl* 这是安装以前缀numactl开始的所有安装包
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-libs-8.0.26-1.el7.x86_64.rpm -- 第3个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-libs-8.0.26-1.el7.x86_64.rpm -- 第3个包------- 失败\e[0m"
fi
#第四个包:安装mysql-community-client-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-client-8.0.26-1.el7.x86_64.rpm 第4个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-client-8.0.26-1.el7.x86_64.rpm 第4个包------- 失败\e[0m"
fi
yum install -y net-tools
yum install -y perl
yum install libaio
#第五个包:安装 mysql-community-server-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
if [ $? == 0 ];then
echo -e "\e[1;32m安装------mysql-community-server-8.0.26-1.el7.x86_64.rpm -- 第5个包------- 成功\e[0m"
else
echo -e "\e[1;31m安装------mysql-community-server-8.0.26-1.el7.x86_64.rpm -- 第5个包------- 失败\e[0m"
fi
#启动MySQL
service mysqld start
# systemctl start mysqld
#验证是否启动成功可以查看MySQL的启动状态
service mysqld status >start.log
#查看MySQL的初始密码,把携带密码信息加载到下面这个文件中
grep 'temporary password' /var/log/mysqld.log >result.txt
#读取文件中的密码,用于登录MySQL
password_mysql=`cat result.txt | grep 'localhost' | awk -F ': ' '{print $2}'`
echo -e "\e[1;32m查看MySQL的原始密码是啥 \e[0m --> \e[1;31m ${password_mysql}\e[0m"
#连接MySQL的几个参数
hostname="localhost"
username="root"
port="3306"
#进入MySQL的交互模式,修改相应的参数,设置简单的密码为123456,为了以后自己用方便,实际上生产的密码都比较复杂一些
#mysql -h${hostname} -u${username} -P${port} -p${password_mysql} <<EOF
mysql -u${username} -p${password_mysql} --connect-expired-password <<EOF
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
alter user root@localhost identified by '123456';
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
quit
EOF
# # 防火墙开启状态下,开放3306端口
# openPort(){
# echo -e "\e[1;32m开放3306端口"
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# echo -e "\e[1;32m重启firewall..."
# firewall-cmd --reload
# }
# openPort