Hadoop生态圈-Kafka的完全分布式部署

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  本篇博客主要内容就是搭建Kafka完全分布式,它是在kafka本地模式(https://www.cnblogs.com/yinzhengjie/p/9209058.html)的基础之上进一步实现完全分布式搭建过程。

一.试验环境

  试验环境共计4台服务器

1>.管理服务器(s101)

2>.Kafka节点二(s102,已经部署好了zookeeper服务)

3>.Kafka节点三(s103,已经部署好了zookeeper服务)

4>.Kafka节点四(s104,已经部署好了zookeeper服务)

二.kafka完全分布式部署

1>.将kafka加压后的安装包发送到其他节点(s102,s103,s104)

  1. [yinzhengjie@s101 data]$ more `which xrsync.sh`
  2. #!/bin/bash
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. #判断用户是否传参
  8. ];then
  9. echo "请输入参数";
  10. exit
  11. fi
  12.  
  13. #获取文件路径
  14. file=$@
  15.  
  16. #获取子路径
  17. filename=`basename $file`
  18.  
  19. #获取父路径
  20. dirpath=`dirname $file`
  21.  
  22. #获取完整路径
  23. cd $dirpath
  24. fullpath=`pwd -P`
  25.  
  26. #同步文件到DataNode
  27. ;i<=;i++ ))
  28. do
  29. #使终端变绿色
  30. tput setaf
  31. echo =========== s$i %file ===========
  32. #使终端变回原来的颜色,即白灰色
  33. tput setaf
  34. #远程执行命令
  35. rsync -lr $filename `whoami`@s$i:$fullpath
  36. #判断命令是否执行成功
  37. ];then
  38. echo "命令执行成功"
  39. fi
  40. done
  41. [yinzhengjie@s101 data]$

[yinzhengjie@s101 data]$ more `which xrsync.sh`

  1. [yinzhengjie@s101 data]$ xrsync.sh /soft/kafka
  2. =========== s102 %file ===========
  3. 命令执行成功
  4. =========== s103 %file ===========
  5. 命令执行成功
  6. =========== s104 %file ===========
  7. 命令执行成功
  8. =========== s105 %file ===========
  9. 命令执行成功
  10. [yinzhengjie@s101 data]$

[yinzhengjie@s101 data]$ xrsync.sh /soft/kafka

  1. [yinzhengjie@s101 data]$ xrsync.-/
  2. =========== s102 %file ===========
  3. 命令执行成功
  4. =========== s103 %file ===========
  5. 命令执行成功
  6. =========== s104 %file ===========
  7. 命令执行成功
  8. =========== s105 %file ===========
  9. 命令执行成功
  10. [yinzhengjie@s101 data]$

[yinzhengjie@s101 data]$ xrsync.sh /soft/kafka_2.11-1.1.0/

2>.分发环境变量

  1. [yinzhengjie@s101 data]$ su
  2. Password:
  3. [root@s101 data]# xrsync.sh /etc/profile
  4. =========== s102 %file ===========
  5. 命令执行成功
  6. =========== s103 %file ===========
  7. 命令执行成功
  8. =========== s104 %file ===========
  9. 命令执行成功
  10. =========== s105 %file ===========
  11. 命令执行成功
  12. [root@s101 data]# exit
  13. exit
  14. [yinzhengjie@s101 data]$

3>.修zk节点的改配置文件

  1. [yinzhengjie@s102 ~]$ grep broker.id /soft/kafka/config/server.properties
  2. broker.
  3. [yinzhengjie@s102 ~]$ grep listeners /soft/kafka/config/server.properties | grep -v ^#
  4. listeners=PLAINTEXT://s102:9092
  5. [yinzhengjie@s102 ~]$

修改s102配置文件(/soft/kafka/config/server.properties)

  1. [yinzhengjie@s103 ~]$ grep broker.id /soft/kafka/config/server.properties
  2. broker.
  3. [yinzhengjie@s103 ~]$ grep listeners /soft/kafka/config/server.properties | grep -v ^#
  4. listeners=PLAINTEXT://s103:9092
  5. [yinzhengjie@s103 ~]$
  6. [yinzhengjie@s103 ~]$

修改s103配置文件(/soft/kafka/config/server.properties)

  1. [yinzhengjie@s104 ~]$ grep broker.id /soft/kafka/config/server.properties
  2. broker.
  3. [yinzhengjie@s104 ~]$
  4. [yinzhengjie@s104 ~]$ grep listeners /soft/kafka/config/server.properties | grep -v ^#
  5. listeners=PLAINTEXT://s104:9092
  6. [yinzhengjie@s104 ~]$

修改s104配置文件(/soft/kafka/config/server.properties)

4>.进入zookeeper客户端并删除zk的kafka节点数据

  1. [yinzhengjie@s104 ~]$ zkCli.sh
  2. Connecting to localhost:
  3. -- ::, [myid:] - INFO [main:Environment@] - Client environment:zookeeper.version=-e5259e437540f349646870ea94dc2658c4e44b3b, built on // : GMT
  4. -- ::, [myid:] - INFO [main:Environment@] - Client environment:host.name=s104
  5. -- ::, [myid:] - INFO [main:Environment@] - Client environment:java.version=1.8.0_131
  6. -- ::, [myid:] - INFO [main:Environment@] - Client environment:java.vendor=Oracle Corporation
  7. -- ::, [myid:] - INFO [main:Environment@] - Client environment:java.home=/soft/jdk1..0_131/jre
  8. -- ::, [myid:] - INFO [main:Environment@] - Client environment:java.class.path=/soft/zk/bin/../build/classes:/soft/zk/bin/../build/lib/*.jar:/soft/zk/bin/../lib/slf4j-log4j12-1.7.25.jar:/soft/zk/bin/../lib/slf4j-api-1.7.25.jar:/soft/zk/bin/../lib/netty-3.10.6.Final.jar:/soft/zk/bin/../lib/log4j-1.2.17.jar:/soft/zk/bin/../lib/jline-0.9.94.jar:/soft/zk/bin/../lib/audience-annotations-0.5.0.jar:/soft/zk/bin/../zookeeper-3.4.12.jar:/soft/zk/bin/../src/java/lib/*.jar:/soft/zk/bin/../conf:
  9. 2018-06-21 01:23:54,940 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
  10. 2018-06-21 01:23:54,940 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
  11. 2018-06-21 01:23:54,940 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
  12. 2018-06-21 01:23:54,940 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
  13. 2018-06-21 01:23:54,941 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
  14. 2018-06-21 01:23:54,941 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-327.el7.x86_64
  15. 2018-06-21 01:23:54,941 [myid:] - INFO [main:Environment@100] - Client environment:user.name=yinzhengjie
  16. 2018-06-21 01:23:54,941 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/home/yinzhengjie
  17. 2018-06-21 01:23:54,941 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/home/yinzhengjie
  18. 2018-06-21 01:23:54,942 [myid:] - INFO [main:ZooKeeper@441] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@277050dc
  19. Welcome to ZooKeeper!
  20. JLine support is enabled
  21. 2018-06-21 01:23:54,973 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
  22. 2018-06-21 01:23:55,031 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@878] - Socket connection established to localhost/127.0.0.1:2181, initiating session
  23. 2018-06-21 01:23:55,049 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x6800003ae7350004, negotiated timeout = 30000
  24.  
  25. WATCHER::
  26.  
  27. WatchedEvent state:SyncConnected type:None path:null
  28. [zk: localhost:2181(CONNECTED) 0] ls /
  29. [a, cluster, controller, brokers, zookeeper, yarn-leader-election, hadoop-ha, admin, isr_change_notification, log_dir_event_notification, controller_epoch, consumers, latest_producer_id_block, config, hbase]
  30. [zk: localhost:2181(CONNECTED) 1] rmr /controller /brokers /admin /controller_epoch /consumers /latest_producer_id_block /config /isr_change_notification /cluster /log_dir_event_notification
  31. [zk: localhost:2181(CONNECTED) 2]

5>.分别启动s102-s104的kafka

  1. [yinzhengjie@s102 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties
  2. [yinzhengjie@s102 ~]$

[yinzhengjie@s102 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties

  1. [yinzhengjie@s103 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties
  2. [yinzhengjie@s103 ~]$

[yinzhengjie@s103 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties

  1. [yinzhengjie@s104 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties
  2. [yinzhengjie@s104 ~]$

[yinzhengjie@s104 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties

6>.创建主题

  1. [yinzhengjie@s104 ~]$ kafka-topics. --list
  2. yinzhengjie
  3. [yinzhengjie@s104 ~]$

查看以及有的主题([yinzhengjie@s104 ~]$ kafka-topics.sh --zookeeper s102:2181 --list)

  1. [yinzhengjie@s104 ~]$ kafka-topics. --create --partitions --replication-factor --topic yzj
  2. Created topic "yzj".
  3. [yinzhengjie@s104 ~]$

创建主题([yinzhengjie@s104 ~]$ kafka-topics.sh --zookeeper s104:2181 --create --partitions 2 --replication-factor 1 --topic yzj)

7>.在任意zk节点开启控制台生产者(例如:在s102上)

  1. [yinzhengjie@s102 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties
  2. [yinzhengjie@s102 ~]$ kafka-console-producer. --topic yzj
  3. >尹正杰到此一游!
  4. >

[yinzhengjie@s102 ~]$ kafka-server-start.sh -daemon /soft/kafka/config/server.properties

8>.在任意zk节点开启控制台消费者(例如:在s103上)

  1. [yinzhengjie@s103 ~]$ kafka-console-consumer. --topic yzj --from-beginning
  2. Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
  3. 尹正杰到此一游!

[yinzhengjie@s103 ~]$ kafka-console-consumer.sh --zookeeper s102:2181 --topic yzj --from-beginning

三.编写kafka启动脚本(“/usr/local/bin/xkafka.sh”,别忘记添加执行权限,而且需要你提前配置好秘钥对哟!

  1. [yinzhengjie@s101 ~]$ more /usr/local/bin/xkafka.sh
  2. #!/bin/bash
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. #判断用户是否传参
  8. ];then
  9. echo "无效参数,用法为: $0 {start|stop}"
  10. exit
  11. fi
  12.  
  13. #获取用户输入的命令
  14. cmd=$
  15.  
  16. ; i<= ; i++ )) ; do
  17. tput setaf
  18. echo ========== s$i $cmd ================
  19. tput setaf
  20. case $cmd in
  21. start)
  22. ssh s$i "source /etc/profile ; kafka-server-start.sh -daemon /soft/kafka/config/server.properties"
  23. echo s$i "服务已启动"
  24. ;;
  25. stop)
  26. ssh s$i "source /etc/profile ; kafka-server-stop.sh"
  27. echo s$i "服务已停止"
  28. ;;
  29. *)
  30. echo "无效参数,用法为: $0 {start|stop}"
  31. exit
  32. ;;
  33. esac
  34. done
  35.  
  36. [yinzhengjie@s101 ~]$ sudo chmod a+x /usr/local/bin/xkafka.sh
  37. [yinzhengjie@s101 ~]$
  38. [yinzhengjie@s101 ~]$ ll /usr/local/bin/xkafka.sh
  39. -rwxr-xr-x root root Jun : /usr/local/bin/xkafka.sh
  40. [yinzhengjie@s101 ~]$

Hadoop生态圈-Kafka的完全分布式部署的更多相关文章

  1. Hadoop生态圈-Kafka的本地模式部署

    Hadoop生态圈-Kafka的本地模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka简介 1>.什么是JMS 答:在Java中有一个角消息系统的东西,我 ...

  2. Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行

    Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...

  3. Apache Hadoop 2.9.2 完全分布式部署

    Apache Hadoop 2.9.2 完全分布式部署(HDFS) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.操作平台 [root@node101.y ...

  4. Hadoop生态圈-kafka事务控制以及性能测试

    Hadoop生态圈-kafka事务控制以及性能测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  5. Hadoop生态圈-Kafka的新API实现生产者-消费者

         Hadoop生态圈-Kafka的新API实现生产者-消费者 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. Hadoop生态圈-Kafka配置文件详解

    Hadoop生态圈-Kafka配置文件详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.默认kafka配置文件内容([yinzhengjie@s101 ~]$ more /s ...

  7. Hadoop生态圈-Kafka的旧API实现生产者-消费者

    Hadoop生态圈-Kafka的旧API实现生产者-消费者 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.旧API实现生产者-消费者 1>.开启kafka集群 [yinz ...

  8. Hadoop生态圈-hbase介绍-完全分布式搭建

    Hadoop生态圈-hbase介绍-完全分布式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Hadoop生态圈-hbase介绍-伪分布式安装

    Hadoop生态圈-hbase介绍-伪分布式安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HBase简介 HBase是一个分布式的,持久的,强一致性的存储系统,具有近似最 ...

随机推荐

  1. libgdx学习记录9——FreeType,ttf中文显示

    前面讲到使用Hireo创建的BitmapFont以显示中文字体.这种方式效率很高,当所要显示的字的总数较少,并且大小比较固定时,可以采用这种方式. 但是这种也有弊端: (1)字体大小不能随意设置,当放 ...

  2. python中的and和or用法

    在python中and和or返回的值并不是True和false这么简单.虽然他们看上去和c++中的&&和||有些相似.在了解and和or之前,我们先要了解python中的True和Fa ...

  3. TDD 与 CI 在 Python 中的实践

    社区化产品的长久生存之道可能莫过于对迭代周期的控制.还记得以前采用老土的阶段开发的年代,将软件生命周期分为各个阶段,当到达每个阶段的里程碑则集中所有的资源.人力作全面冲刺.每次到了里程碑的检查点冲过了 ...

  4. git 报错git-upload-pack 解决方法

    报错如下: bash: git-upload-pack: command not foundfatal: The remote end hung up unexpectedly 原因:原来代码服务器上 ...

  5. 用 IIS 搭建 mercurial server

    mercurial server 对于代码管理工具,更多的人可能对 Git 更熟悉一些(Git太火了).其实另外一款分布式代码管理工具也被广泛的使用,它就是 mercurial.当多人协作时最好能够通 ...

  6. 代理神器allproxy

    背景 allproxy意为all as proxy,即是说所有设备均可以成为一个网络代理,唯一的要求就是有网络访问权限. 一般的代理软件要求宿主机必须有公网地址,然后才能把网络代理出去,但在实际情况下 ...

  7. CEPH FILESYSTEM

    参考文档: CEPH FILESYSTEM:http://docs.ceph.com/docs/master/cephfs/ CephFS best practices:http://docs.cep ...

  8. 微软职位内部推荐-Senior Software Engineer-DUT

    微软近期Open的职位: Document Understanding and Task (DUT) team in STCA focuses on semantic understanding an ...

  9. Theory And Practice

    实践出真知,建议不要一味地看Backbone源码和网上解析,自己动手实践吧少年们! 我是一个简单的简直无可救药的小栗子~ ——Silun Wang 我的几个小问题: 1. Rocket介绍没有Todo ...

  10. [Cyan之旅]使用NPOI实现Excel的导入导出,踩坑若干.

    Cyan是博主[Soar360]自2014年以来开始编写整理的工具组件,用于解决现实工作中常用且与业务逻辑无关的问题. 什么是NPOI? NPOI 是 POI 项目的 .NET 版本.POI是一个开源 ...