ansible
shell
以前通过在Hadoop 集群的master 节点上,通过ansible 进行对slave 节点的管理
因为hadoop 集群都在vbox 上面,现在直接在host 机器上对集群进行管理,碰到了一些问题,在此记录
因为hadoop 集群所在的os都是ArchLinux, 并且使用的shell 都是zsh , 当使用ansible 时,由于ansible 默认的shell 是/bin/sh
而/bin/sh 的链接为/bin/bash, 所以在.zshrc中对hadoop 的一些环境信息就没有办法加载到了
后来通过google了解到可以在ansible 命令后面通过-e ansible_shell_executable=zsh的方式对其默认shell 进行修改
profile
如果有自定义的profile,可以在发送的shell 中添加source you_profile && you command 的方式进行加载
task
因为hadoop 集群在平时都是对spark job 进行作业,而spark job 的提交,我通过hadoop master 机器进行提交
所以一般都将任务的jar 先放到hdfs 上,然后通过ansible 的方式对hadoop master 机器发送命令,命令通过机器上面的spark-submit 提交任务到yarn调度器上
hadoop 集群是手动安装并维护的,并没有使用集成包的方式进行维护,并且没有做系统自启动,所以在启动机器后,也是通过ansible 访问hadoop master
然后通过已经写好的shell , 对hadoop 集群进行启动,并启动zookeeper, kafka 这些需要做一些测试的支撑服务
os upgrade
因为系统都是ArchLinux , 而ArchLinux 是滚动升级的,所以一般来说随时都在获取被打包好的包,并执行升级
对hadoop 集群的os 升级,也是通过ansible 的方式,一般通过发送yay -Syyu –noconfirm 命令,对os进行升级
如果不加–noconfirm 参数,那么yay 一直等待用户输入y, 确定进行更新,导致ansible 一直不能结束任务,登录到目标机器查看pacman.log 会发现系统争取的在执行,就是不知道为什么更新一直不能接受,问题就在于没有添加noconfirm 参数,在等待用户输入
由于目前使用的hadoop 2.7 版本在比1.8版本更高的jdk 版本上可能出现问题,所以以前的处理方式是在pacman.conf 中将jdk 添加为ignorePkg
现在修改的方案是,取消对jdk 的ignorePkg, 让其升级到最新的稳定版,比如目前的版本是jdk12
而为了使hadoop 在jdk 上不出现问题,系统安装两个jdk , 一个是jdk12 只是随着系统升级的jdk , 另外安装一个jdk8版本,系统也会对它进行升级,但不会进行大版本升级,只是对其进行bug fix 的升级
安装好两个jdk 后,需要通过archlinux-java set jdk8的方式,修改系统默认的jdk
通过此类修改,达到对hadoop 的影响降低
- 标题: ansible
- 作者: The Redefine Team
- 创建于 : 2019-07-28 00:27:07
- 更新于 : 2023-05-23 18:52:03
- 链接: https://redefine.ohevan.com/2019/07/28/ansible/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。