一、环境:

服务器一台,已安装centos7.5系统,做ansible服务器;

客户机三台:hadoop-master(192.168.1.18)、hadoop-slave1(192.168.1.19)、hadoop-slave2(192.168.1.20)

二、ansible软件安装:

[root@centos75 ~]# yum install ansible

三、ansible配置过程:

1、服务器与客户机之间的免密配置:

(1)生成密钥: ssh-keygen -t rsa

(2)传递密钥:

[root@centos75 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.18

[root@centos75 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.19

[root@centos75 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.20

2、ansible配置

(1)Inventory主机清单配置:

[root@centos75 ~]# vi /etc/ansible/hosts

...

[hadoop]

192.168.1.[18:20]  #这是一种IP地址段表示方式,也可单列每个IP地址。

(2)配置ansible.cfg:

[root@centos75 ~]# vi /etc/ansible/ansible.cfg

...

host_key_checking = False  #禁用每次执行ansbile命令检查ssh key host

...

log_path = /var/log/ansible.log  #开启日志记录

...

[accelerate]  #ansible连接加速配置

#accelerate_port = 5099

accelerate_port = 10000

...

accelerate_multi_key = yes

...

deprecation_warnings = False  #屏蔽弃用告警提示,减少不必要的信息显示

...

四、测试

[root@centos75 ~]# ansible all -m ping

192.168.1.20 | SUCCESS => {

"changed": false,

"ping": "pong"

}

192.168.1.18 | SUCCESS => {

"changed": false,

"ping": "pong"

}

192.168.1.19 | SUCCESS => {

"changed": false,

"ping": "pong"

}

上述信息表明ansible管理对象已全部ping通,ansible配置正常。

五、使用示例

(1) Ad-Hoc模式:

修改Hadoop三台集群服务器的/etc/hosts文件:

[root@centos75 ~]# vi hosts

#127.0.1.1  hadoop-master

192.168.1.18  hadoop-master

192.168.1.19  hadoop-slave1

192.168.1.20  hadoop-slave2

# The following lines are desirable for IPv6 capable hosts

::1  ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

~

[root@centos75 ~]# ansible hadoop -m copy -a "src=/root/hosts dest=/etc/hosts"

192.168.1.20 | SUCCESS => {

"changed": true,

"checksum": "214f72ce3329805c07748997e11313fffb03f667",

"dest": "/etc/hosts",

"gid": 0,

"group": "root",

"md5sum": "127193e1ec4773ce0195636c5ac2bf3a",

"mode": "0644",

"owner": "root",

"size": 298,

"src": "/root/.ansible/tmp/ansible-tmp-1536384515.76-109467000571031/source",

"state": "file",

"uid": 0

}

192.168.1.18 | SUCCESS => {

"changed": true,

"checksum": "214f72ce3329805c07748997e11313fffb03f667",

"dest": "/etc/hosts",

"gid": 0,

"group": "root",

"md5sum": "127193e1ec4773ce0195636c5ac2bf3a",

"mode": "0644",

"owner": "root",

"size": 298,

"src": "/root/.ansible/tmp/ansible-tmp-1536384515.74-269105082907411/source",

"state": "file",

"uid": 0

}

192.168.1.19 | SUCCESS => {

"changed": true,

"checksum": "214f72ce3329805c07748997e11313fffb03f667",

"dest": "/etc/hosts",

"gid": 0,

"group": "root",

"md5sum": "127193e1ec4773ce0195636c5ac2bf3a",

"mode": "0644",

"owner": "root",

"size": 298,

"src": "/root/.ansible/tmp/ansible-tmp-1536384515.75-259083114686776/source",

"state": "file",

"uid": 0

}

还可使用命令查看各客户机hosts文件内容:

ansible hadoop -m shell -a 'cat /etc/hosts'

ansible hadoop -m shell -a 'ls -lhat /etc/hosts'

(2) playbook剧本模式:

启动Hadoop集群服务:

[root@centos75 ~]# vi hadoop-start.yml

---

#“---”符号在yml文件中只能在开头出现一次,多次出现会报错;另外,此符号省略也可,不知为何,待继续研究...

- hosts: hadoop

#注意:“-”符号后必须有空格;“:”后面也必须有空格。

tasks:

#注意:缩进按两个空格规范,不能使用TAB!

- name: startup hadoop datanode services

shell: /root/hadoop-2.7.3/sbin/hadoop-daemon.sh start datanode  #尽管集群服务器上已配置hadoop-2.7.3/sbin的环境变量,但这里必须使用绝对路径

- hosts: 192.168.1.18

tasks:

- name: startup hadoop namenode services

shell: /root/hadoop-2.7.3/sbin/hadoop-daemon.sh start namenode

~

[root@centos75 ~]# ansible-playbook hadoop-start.yml

PLAY [hadoop] ******************************************************************

TASK [Gathering Facts] *********************************************************

ok: [192.168.1.20]

ok: [192.168.1.19]

ok: [192.168.1.18]

TASK [startup hadoop datanode services] ****************************************

changed: [192.168.1.19]

changed: [192.168.1.18]

changed: [192.168.1.20]

PLAY [192.168.1.18] ************************************************************

TASK [Gathering Facts] *********************************************************

ok: [192.168.1.18]

TASK [startup hadoop namenode services] ****************************************

changed: [192.168.1.18]

PLAY RECAP *********************************************************************

192.168.1.18  : ok=4  changed=2  unreachable=0  failed=0

192.168.1.19  : ok=2  changed=1  unreachable=0  failed=0

192.168.1.20  : ok=2  changed=1  unreachable=0  failed=0

可在集群服务器上观察服务启动情况:

root@hadoop-master:~# jps

8976 DataNode

9231 Jps

9093 NameNode

root@hadoop-slave1:~# jps

7058 Jps

6972 DataNode

停止hadoop集群服务:

[root@centos75 ~]# vi hadoop-stop.yml

---

- hosts: hadoop

tasks:

- name: stop hadoop datanode services

shell: /root/hadoop-2.7.3/sbin/hadoop-daemon.sh stop datanode

- hosts: 192.168.1.18

tasks:

- name: stop hadoop namenode services

shell: /root/hadoop-2.7.3/sbin/hadoop-daemon.sh stop namenode

~

[root@centos75 ~]# ansible-playbook hadoop-stop.yml

PLAY [hadoop] ******************************************************************

TASK [Gathering Facts] *********************************************************

ok: [192.168.1.20]

ok: [192.168.1.19]

ok: [192.168.1.18]

TASK [stop hadoop datanode services] *******************************************

changed: [192.168.1.20]

changed: [192.168.1.19]

changed: [192.168.1.18]

PLAY [192.168.1.18] ************************************************************

TASK [Gathering Facts] *********************************************************

ok: [192.168.1.18]

TASK [stop hadoop namenode services] *******************************************

changed: [192.168.1.18]

PLAY RECAP *********************************************************************

192.168.1.18  : ok=4  changed=2  unreachable=0  failed=0

192.168.1.19  : ok=2  changed=1  unreachable=0  failed=0

192.168.1.20  : ok=2  changed=1  unreachable=0  failed=0

上述过程可看出,ansible已实现了对集群服务启停作业的集中控制。

使用ansible控制Hadoop服务的启动和停止的更多相关文章

  1. 通过命令窗口控制mysql服务的启动与停止

    mysql服务的启动: 以管理员的身份运行cmd命令窗口,输入命名 net start mysql 如果不是以管理员的身份运行cmd,会提示如下错误 mysql服务的停止: 以管理员的身份运行cmd命 ...

  2. Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止

    Centos7.3_x86_64通过systemctl控制tomcat8..46启动和停止 之前在centos 6上通过脚本控制tomcat 启动和停止的脚本,虽然在centos 7也可以使用,但ce ...

  3. Linux上服务的启动,停止和重启

    (1)查看所有的服务 [berry@berry:practice] service Usage: service < option > | --status-all | [ service ...

  4. mysql服务的启动和停止 net stop mysql net start mysql

    第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名-p用户密码 键入命令mysql -uroo ...

  5. Windows服务之启动、停止、暂停、继续

    原文:Windows服务之启动.停止.暂停.继续 Windows服务之启动.停止.暂停.继续 2011-11-09 15:07:37     我来说两句 收藏    我要投稿    [字体:小 大] ...

  6. Jenkins关闭、重启,Jenkins服务的启动、停止方法。

     一.Jenkins关闭.重启 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit,关闭Jenkins服务. 例如:http://localhost:8081/ex ...

  7. 管理weblogic服务的启动和停止

    2012-11-10 12:58 26036人阅读 评论(4) 收藏 举报 分类: WebLogic(10) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 介绍 Weblog ...

  8. linux系统下apache服务的启动、停止、重启命令

    本文章简单的介绍了关于linux下在利用命令来操作apache的基本操作如启动.停止.重启等操作,对入门者不错的选择.本文假设你的apahce安装目录为 usr local apache2,这些方法适 ...

  9. hadoop历史服务的启动与停止

    a.配置项(在分布式环境中配置) 1.RPC访问地址 mapreduce.jobhistory.address 2.HTTP访问地址 mapreduce.jobhistory.webapp.addre ...

随机推荐

  1. 带你看看Java的锁(一)-ReentrantLock

    前言 AQS一共花了5篇文章,对里面实现的核心源码都做了注解 也和大家详细描述了下,后面的几篇文字我将和大家聊聊一下AQS的实际使用,主要会聊几张锁,第一篇我会和大家聊下ReentrantLock 重 ...

  2. 消息队列高手课 -笔记-Kafka高性能的几个关键点

    总结下kafka 高性能的几个关键点是: 1:使用批量处理的方式 去提升系统的吞吐能力 2:基于磁盘文件高性能的顺序读写的特性来设计存储结构 3:利用操作系统的PageCache 来缓存数据  减少I ...

  3. 字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 目录 @ 目录 目录 一.前言 二.开发环境 三.案例目标 四.技术实现 五.测试结果 1. ...

  4. 帝国cms 批量删除包含关键字的 内容

    删除包含关键字的 内容delete from www_kaifatu_com_ecms_news where playurl like '%关键字%'

  5. Mysql 常用函数(2)- if 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html if 的作用 根据表达式的某个条件或值结果来执行一 ...

  6. linux --批量修改文件内容

    由于目前测试的BIOS有一个option 发生了改变,因此我们需要在之前写好的脚本上进行修改,将旧的option 改为新的选项,因此在此处用到了批量修改文件中的内容: 1. perl 命令替换: pe ...

  7. java方法调用顺序

    public class JavalearningApplicationTests { static { System.out.println("Test的静态代码块"); } p ...

  8. android 动态设置TextView值,例:金额增加

    一说到动态递增设置TextView值,很多人应该马上就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值但是效率不咋 ...

  9. 【漫画】读写锁ReadWriteLock还是不够快?再试试StampedLock!

    本文来源于公众号[胖滚猪学编程] 转载请注明出处! 在互斥锁ReentrantLock不好用?试试读写锁ReadWriteLock一文中,我们对比了互斥锁ReentrantLock和读写锁ReadWr ...

  10. 基于Redis的Nginx服务器集群session共享

    原料:jdk1.8,tomcat7,nginx1.16,Redis3.2.100,Redis-Tomcat需要的jar包,基于windows7. Redis3.2.100与Redis-Tomcat需要 ...