fastmr自动化shell脚本

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
对象存储 OSS,20GB 3个月
简介: master

#$1为共几台机器,hadoop配置为分部

#$2为机器信息 ip +hostname 组合。如: 192.168.2.1 machine1 192.168.2.2 machine2 192.168.2.3 machine3   空格分隔

#下载配置文件

rm -rf /root/trans.zip

rm -rf /root/trans

wget -P /root http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/conf/trans.zip

unzip /root/trans.zip

chmod -R 755 /root/trans

#配置/etc/hosts

#输入字符串

input_str=$2

#将字符串分割成数组

input_arr=($input_str)

#数组长度

len=${#input_arr[@]}

#对每个IP地址和机器名进行处理

for (( i=0; i<$len; i+=2 ))

do

 ip=${input_arr[$i]}

 name=${input_arr[$i+1]}

 

 #如果是第一组IP地址和机器名

 if [[ $i == 0 ]]; then

   echo "$ip master1" >>/etc/hosts

 fi

 

 #打印变量值

 echo "$ip $name" >>/etc/hosts

done

#配置互信

cp /root/trans/config/trust/authorized_keys /root/.ssh/

cp /root/trans/config/trust/id_rsa.pub /root/.ssh/

cp /root/trans/config/trust/id_rsa /root/.ssh/

#分发hosts文件

while IFS= read -r ip || [[ -n "$ip" ]]; do  

 scp -r /etc/hosts  $ip:/etc/

done < "/root/ip.list"

#安装java,下载安装包

os=`uname -m`

if [ $a=='x86_64' ]; then  

yum install -y java-1.8.0-openjdk-devel.x86_64

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/TPC.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/apache-hive-2.3.7-bin.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/collectd.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/hadoop-3.3.1.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/mysql-connector-java-8.0.26.jar

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/spark-3.2.1-bin-hadoop3.2.tgz

wget -P /root http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/tpcds-kit.tar.gz

cd /opt && tar -xf TPC.tar.gz

cd /opt &&  tar -xf apache-hive-2.3.7-bin.tar.gz

cd /opt &&  tar -xf collectd.tar.gz

cd /opt &&  tar -xf hadoop-3.3.1.tar.gz

cd /opt &&  tar -xf spark-3.2.1-bin-hadoop3.2.tgz

cd /root &&  tar -xf tpcds-kit.tar.gz

cd /root && wget https://gosspublic.alicdn.com/ossutil/1.7.9/ossutil64  --no-check-certificate && chmod 755 ossutil64

cp /root/trans/conf/oss/.ossutilconfig /root

cd /opt && rm -rf hadoop && ln -s hadoop-3.3.1 hadoop

rm -rf /opt/apache-hive-2.3.7-bin/conf/hive-site.xml

cp /root/trans/conf/hive/hive-site.xml /opt/apache-hive-2.3.7-bin/conf/

cp /root/trans/conf/hive/hive-site.xml /opt/spark-3.2.1-bin-hadoop3.2/conf

echo -e "export SPARK_HOME=/opt/spark-3.2.1-bin-hadoop3.2 \n" >>/etc/profile.d/env.sh

echo -e "export HIVE_HOME=/opt/apache-hive-2.3.7-bin \n" >>/etc/profile.d/env.sh

else  

yum install -y java-1.8.0-openjdk-devel.aarch64

cd /root && rm -rf /root/ossutil-v1.7.15-linux-arm64.zip && wget https://gosspublic.alicdn.com/ossutil/1.7.15/ossutil-v1.7.15-linux-arm64.zip --no-check-certificate  -P /root && yum install -y unzip && unzip /root/ossutil-v1.7.15-linux-arm64.zip && cp  /root/ossutil-v1.7.15-linux-arm64/ossutil64 /root/ && chmod 755 /root/ossutil64

cp /root/trans/conf/oss/.ossutilconfig /root

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/TPC.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/apache-hive-3.1.2-bin.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/collectd.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/hadoop-3.3.1.tar.gz

wget -P /opt http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/spark-3.1.2-bin-hadoop3.2.tgz

wget -P /root http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/arm/tpcds-kit.tar.gz  

cd /opt &&  tar -xf TPC.tar.gz

cd /opt &&  tar -xf apache-hive-3.1.2-bin.tar.gz

cd /opt &&  tar -xf collectd.tar.gz

cd /opt &&  tar -xf hadoop-3.3.1.tar.gz

cd /opt &&  tar -xf spark-3.1.2-bin-hadoop3.2.tgz

cd /root &&  tar -xf tpcds-kit.tar.gz

cd /opt && rm -rf hadoop && ln -s hadoop-3.3.1 hadoop

rm -rf /opt/apache-hive-3.1.2-bin/conf/hive-site.xml

cp /root/trans/conf/hive/hive-site.xml /opt/apache-hive-3.1.2-bin/conf/

cp /root/trans/conf/hive/hive-site.xml /opt/spark-3.1.2-bin-hadoop3.2/conf

echo -e "export SPARK_HOME=/opt/spark-3.1.2-bin-hadoop3.2 \n" >>/etc/profile.d/env.sh

   echo -e "export HIVE_HOME=/opt/apache-hive-3.1.2-bin \n" >>/etc/profile.d/env.sh

fi

echo -e "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk \n" >>/etc/profile.d/env.sh

echo -e "export HADOOP_HOME=/opt/hadoop \n" >>/etc/profile.d/env.sh

echo -e "export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop \n " >>/etc/profile.d/env.sh

echo -e "export PATH=\$JAVA_HOME/bin:\$HADOOP_HOME/bin:\$SPARK_HOME/bin:\$HIVE_HOME/bin \n"  >>/etc/profile.d/env.sh

source /etc/profile.d/env.sh

#挂载磁盘

disk=`lsblk -d -o rota |tail -1`

num=`lsblk|wc -l`

data_disk_num=`expr $num - 2`

if [ $disk=='1' ]; then  

/root/trans/config/system/mkfs-ad.sh $data_disk_num

else

/root/trans/config/system/mkfs-nvme.sh $data_disk_num

fi

#配置hadoop

#配置worker

rm -rf /opt/hadoop/etc/hadoop/

wget -P /opt/hadoop/etc/ http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/had_conf.zip

cd /opt/hadoop/etc/ && unzip had_conf.zip

master=`hostname`

worker_num=`expr $1 - 1`

for i in {1..$worker_num}

do

echo $master |sed 's/.$/$i/' >>/opt/hadoop/etc/hadoop/worker

done

#配置hdfs-site.xml

for (( i=1; i<$worker_num; i++ ))  

do      

echo "/mnt/disk$i/data/hadoop," >> hdfs-site

done

cat hdfs-site| tr -d '\n'|sed 's/.$//' > hdfs-site_bak

sed -i 's/^/<value>/' hdfs-site_bak

echo "</value>" >> hdfs-site_bak

bak=`cat hdfs-site_bak`

sed "20s|.*|$bak|g" /opt/hadoop/etc/hadoop/hdfs-site.xml -i

#配置yarn-site.xml

for (( i=1; i<$worker_num; i++ ))  

do      

echo "/mnt/disk$i/data/nmlocaldir," >> yarn-site

done

cat yarn-site| tr -d '\n'|sed 's/.$//' > yarn-site_bak

sed -i 's/^/<value>/' yarn-site_bak

echo "</value>" >> yarn-site_bak

bak=`cat yarn-site_bak`

sed "60s|.*|$bak|g" /opt/hadoop/etc/hadoop/yarn-site.xml -i

# 将hadoop文件复制到worker节点

while IFS= read -r ip || [[ -n "$ip" ]]; do  

 scp -r /opt/hadoop-3.3.1  $ip:/opt/

done < "/root/ip.list"

hadoop namenode  -format

/opt/hadoop/sbin/start-all.sh

hadoop fs -mkdir /sparklogs

#配置spark

cd /opt/spark-3.2.1-bin-hadoop3.2/conf && cp spark-defaults.conf.template  spark-defaults.conf

echo -e "spark.eventLog.enabled true \n "  >> /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-defaults.conf

echo -e "spark.eventLog.dir hdfs://master1:9000/sparklogs \n "  >> /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-defaults.conf

echo -e "spark.history.fs.logDirectory       hdfs://master1:9000/sparklogs \n "  >> /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-defaults.conf

/opt/spark-3.2.1-bin-hadoop3.2/sbin/start-history-server.sh

#配置mysql

if [ $a=='x86_64' ]; then  

yum install -y mysql-server.x86_64

else

yum install -y mysql-server.aarch64

fi

mysql_v=`mysql --version|awk '{print $3}'`

if [ -e $HIVE_HOME/lib/mysql-connector-java-$mysql_v.jar ];then

echo "mysql_connect_jar exists"

else  

wget -P /root https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-$mysql_v.tar.gz

cd /root && tar -zxvf /root/mysql-connector-java-$mysql_v.tar.gz

\cp -r /root/mysql-connector-java-$mysql_v/mysql-connector-java-$mysql_v.jar $HIVE_HOME/lib/

\cp -r /root/mysql-connector-java-$mysql_v/mysql-connector-java-$mysql_v.jar $SPARK_HOME/jars/

fi

service mysqld restart

mysql -uroot -D mysql -e "create user 'hive'@'localhost' identified by '123456';"  

mysql -uroot -D mysql -e "grant all privileges on *.* to 'hive'@'localhost';"

mysql -uroot -D mysql -e "create user 'hive'@'%' identified by '123456';"

mysql -uroot -D mysql -e "grant all privileges on *.* to 'hive'@'%';"

mysql -uroot -D mysql -e "flush privileges;"

mysql -uroot -D mysql -e "alter user user() identified by '123456';"

service mysqld restart

#配置hive

mv /opt/apache-hive-2.3.7-bin/lib/guava-14.0.1.jar /opt/apache-hive-2.3.7-bin/lib/guava-14.0.1.jar_bak

cp /opt/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar  /opt/apache-hive-2.3.7-bin/lib/

rm -rf /opt/apache-hive-2.3.7-bin/conf/hive-site.xml

wget -P /opt/apache-hive-2.3.7-bin/conf/ http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/x86/hive-site.xml

schematool -dbType mysql -initSchema

#配置collectd

if [ $a=='x86_64' ]; then  

cd /opt/collectd/lib64/jevents && make install

\cp /opt/collectd/lib64/libjson-c.so.2 /lib64/

\cp /opt/collectd/lib64/libpqos.so.4 /lib64/

else

yum install -y git cmake libarchive valgrind

wget http://fastmr.oss-cn-shenzhen.aliyuncs.com/bigdata/conf/json-c.tar.gz -P /root

tar -xf /root/json-c.tar.gz -C /root && mkdir -p /root/json-c-build

rm -rf /root/json-c-build && mkdir -p /root/json-c-build

cd /root/json-c-build  && cmake /root/json-c

cd /root/json-c-build && make

cd /root/json-c-build &&  make install

cd /opt/collectd/ && sh sbin/start_collectd.sh

fi

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
106 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
59 2
6种方法打造出色的Shell脚本
|
20天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
24天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
52 1
|
25天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
57 2
|
27天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
65 3
|
29天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
45 2
|
1月前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
1月前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
1月前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
36 3