E-MapReduce客户端安装和卸载工具,实现Gateway功能

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: E-MapReduce客户端安装和卸载工具,主要用于集群外的ECS(已经存在)中需要使用hadoop,hive等客户端命令工具。目前云平台提供的gateway只能重新创建ECS进行部署,而不支持在已经创建的Ecs中部署。

作者:陈云亮,系深圳某数据治理厂商,有10余年IT从业经验,在数据仓库,传统数据库和大数据领域有丰富的实战经验。
在阿里云某私有云的项目中,遇到了需要在E-MapReduce集群节点外使用客户端的需求,而目前在集群管理中只提供了通过Gateway新建一台ECS来满足。但是,由于客户方ECS资源已经申请,所以无法使用Gateway,基于此,通过对E-MapReduce的官方文档和社群资源学习,深入集群了解,特开发一套部署客户端程序。
(PS:在华为FIHD大数据平台,星环和CDH等大数据平台的管理界面都提供了下载客户端安装包并能实现一键安装部署。希望下个版本能有这样的功能。)
E-MapReduce客户端安装和卸载工具,主要用于集群外的ECS(已经存在)中需要使用hadoop,hive等客户端命令工具。
目前云平台提供的gateway只能重新创建ECS进行部署,而不支持在已经创建的Ecs中部署。
主要涉及的程序:

[root@iZ1cr01rx0b6j12dir0qaxZ chyl20]# ls -ltr
total 12
-rw-r--r-- 1 root root   13 Oct 10 14:38 pwd.txt
-rwxr-xr-x 1 root root 1195 Oct 11 10:32 uninstall_emr_client.sh
-rwxr-xr-x 1 root root 3337 Oct 11 10:32 install_emr_client.sh
其中install_emr_client.sh的程序内容:
#!/usr/bin/bash
if [ $# != 2 ]
then
   echo "Usage: sh $0 master_ip master_password_file(store root password plaintext)"
   echo "such as: sh $0 172.30.XXX.XXX /opt/chyl20/pwd.txt"
   exit 1;
fi
masterip=${1}
masterpwdfile=${2}
client_dir="/opt/emr_client/"
if ! type sshpass >/dev/null 2>&1; then
   yum install -y sshpass
fi
if ! type java >/dev/null 2>&1; then
   yum install -y java-1.8.0-openjdk
fi
[ -d ${client_dir} ] && echo "Please uninstall the installed client!" && exit 1

echo "Start to create file path..."
mkdir -p ${client_dir}
mkdir -p /etc/ecm
echo "Start to copy package from ${masterip} to local client(${client_dir})..."
echo " -copying hadoop"
sshpass -f ${masterpwdfile} scp -r -o 'StrictHostKeyChecking no' root@${masterip}:/usr/lib/hadoop-current ${client_dir}
echo " -copying zookeeper"
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/usr/lib/zookeeper-current ${client_dir}
echo " -copying hive"
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/usr/lib/hive-current ${client_dir}
echo " -copying spark"
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/usr/lib/spark-current ${client_dir}
echo " -extra-jars"
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/opt/apps/extra-jars ${client_dir}

echo "Start to link /usr/lib/\${app}-current to ${client_dir}\${app}..."
[ -L /usr/lib/hadoop-current ] && unlink /usr/lib/hadoop-current
ln -s ${client_dir}hadoop-current  /usr/lib/hadoop-current

[ -L /usr/lib/zookeeper-current ] && unlink /usr/lib/zookeeper-current
ln -s ${client_dir}zookeeper-current  /usr/lib/zookeeper-current

[ -L /usr/lib/hive-current ] && unlink /usr/lib/hive-current
ln -s ${client_dir}hive-current  /usr/lib/hive-current

[ -L /usr/lib/spark-current ] && unlink /usr/lib/spark-current
ln -s ${client_dir}spark-current /usr/lib/spark-current

echo "Start to copy conf from ${masterip} to local client(/etc/ecm)..."
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/etc/ecm/hadoop-conf  /etc/ecm/hadoop-conf
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/etc/ecm/zookeeper-conf  /etc/ecm/zookeeper-conf
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/etc/ecm/hive-conf /etc/ecm/hive-conf
sshpass -f ${masterpwdfile} scp -r root@${masterip}:/etc/ecm/spark-conf /etc/ecm/spark-conf

echo "Start to copy environment from ${masterip} to local client(/etc/profile.d)..."
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/profile.d/hdfs.sh /etc/profile.d/
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/profile.d/zookeeper.sh /etc/profile.d/
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/profile.d/yarn.sh /etc/profile.d/
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/profile.d/hive.sh /etc/profile.d/
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/profile.d/spark.sh /etc/profile.d/
if [ -L /usr/lib/jvm/java ]
then
   unlink /usr/lib/jvm/java
fi
echo "" >>/etc/profile.d/hdfs.sh
echo export JAVA_HOME=/usr/lib/jvm/jre-1.8.0 >>/etc/profile.d/hdfs.sh

echo "Start to copy host info from ${masterip} to local client(/etc/hosts)"
sshpass -f ${masterpwdfile} scp root@${masterip}:/etc/hosts /etc/hosts_bak
cat /etc/hosts_bak | grep emr | grep cluster >>/etc/hosts
! egrep "^hadoop" /etc/group >& /dev/null && groupadd hadoop
! egrep "^hadoop" /etc/passwd >& /dev/null && useradd -g hadoop hadoop
echo "Install EMR client successfully!"

uninstall_emr_client.sh的程序内容:

#!/usr/bin/bash
if [ $# != 0 ]
then
   echo "Usage: sh $0 "
   exit 1;
fi
client_dir="/opt/emr_client/"

echo "Start to delete path..."
[ -d ${client_dir} ] && rm -rf ${client_dir}

echo "Start to delete link /usr/lib/\${app}-current..."
[ -L /usr/lib/hadoop-current ] && unlink /usr/lib/hadoop-current

[ -L /usr/lib/zookeeper-current ] && unlink /usr/lib/zookeeper-current

[ -L /usr/lib/hive-current ] && unlink /usr/lib/hive-current

[ -L /usr/lib/spark-current ] && unlink /usr/lib/spark-current

echo "Start to delete conf..."
[ -d /etc/ecm ] && rm -rf /etc/ecm

echo "Start to delete environment..."
[ -f /etc/profile.d/hdfs.sh ] && rm -rf /etc/profile.d/hdfs.sh
[ -f /etc/profile.d/zookeeper.sh ] && rm -rf /etc/profile.d/zookeeper.sh
[ -f /etc/profile.d/yarn.sh ] && rm -rf /etc/profile.d/yarn.sh
[ -f /etc/profile.d/hive.sh ] && rm -rf /etc/profile.d/hive.sh
[ -f /etc/profile.d/spark.sh ] && rm -rf /etc/profile.d/spark.sh

echo "Start to remove host info..."
sed -i "/emr/d" /etc/hosts

echo "Start to remove user..."
egrep "^hadoop" /etc/passwd >& /dev/null && userdel -r hadoop
egrep "^hadoop" /etc/group >& /dev/null && groupdel hadoop

echo "Uninstall EMR client successfully!"

pwd.txt中存放密码明文即可。

创建后给程序授权755
安装执行:

sh install_emr_client.sh 172.30.1*2.1*3 /opt/chyl20/pwd.txt

卸载执行:

sh uninstall_emr_client.sh

安装后重新连接会话,或重新打开一个PTY
验证:
运行hive

beeline -u jdbc:hive2://emr-header-1:10000 -e "show tables; " -n hadoop -p hadoop

运行hadoop

hadoop  jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples*.jar pi 10 10

运行spark

spark-submit --name spark-pi --class org.apache.spark.examples.SparkPi --master yarn /usr/lib/spark-current/examples/jars/spark-examples_2.11-2.4.3.jar
相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
缓存 负载均衡 监控
nacos+ribbon+feign+gateway设计实现灰度方案 (上)
nacos+ribbon+feign+gateway设计实现灰度方案
1267 0
nacos+ribbon+feign+gateway设计实现灰度方案  (上)
|
算法 NoSQL 安全
SpringCloud Gateway 通过redis实现限流
SpringCloud Gateway 通过redis实现限流
1237 0
SpringCloud Gateway 通过redis实现限流
|
3月前
|
SQL 存储 OLAP
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
37 1
|
JSON Cloud Native Java
通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能
本文将和大家一同回顾 Spring Cloud Gateway 是如何满足 HTTP 请求/响应转换需求场景的,并为大家介绍在这种场景下使用 Higress 云原生网关的解决方案,同时还对比了两者的性能差异。
69134 263
|
JSON Cloud Native Java
通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能
通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能
|
存储 缓存 安全
SpringCloud微服务实战——搭建企业级开发框架(二十三):Gateway+OAuth2+JWT实现微服务统一认证授权
OAuth2是一个关于授权的开放标准,核心思路是通过各类认证手段(具体什么手段OAuth2不关心)认证用户身份,并颁发token(令牌),使得第三方应用可以使用该token(令牌)在限定时间、限定范围访问指定资源。   OAuth2中使用token验证用户登录合法性,但token最大的问题是不携带用户信息,资源服务器无法在本地进行验证,每次对于资源的访问,资源服务器都需要向认证服务器发起请求,一是验证token的有效性,二是获取token对应的用户信息。如果有大量的此类请求,无疑处理效率是很低,且认证服务器会变成一个中心节点
1540 57
SpringCloud微服务实战——搭建企业级开发框架(二十三):Gateway+OAuth2+JWT实现微服务统一认证授权
|
开发框架 监控 安全
SpringCloud微服务实战——搭建企业级开发框架(十八):集成Gateway实现微服务路由转发
在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平 台无关的服务协议作为各个单元间的通讯方式。
437 57
SpringCloud微服务实战——搭建企业级开发框架(十八):集成Gateway实现微服务路由转发
|
canal 监控 安全
谷粒学院——Day17【数据同步工具、SpringCloud【GateWay网关】、权限管理功能(接口)】
谷粒学院——Day17【数据同步工具、SpringCloud【GateWay网关】、权限管理功能(接口)】
311 0
谷粒学院——Day17【数据同步工具、SpringCloud【GateWay网关】、权限管理功能(接口)】
|
负载均衡 监控 小程序
【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析
【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析
227 0
【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析
|
Java Spring