fastmr自动化shell脚本

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
106 60
|
2月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
2天前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本
|
1月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
51 7
|
1月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
2月前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
2月前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
2月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
73 2
6种方法打造出色的Shell脚本
|
2月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。