热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:zookeeper+jstorm的集群搭建

篇首语:本文由编程笔记#小编为大家整理,主要介绍了zookeeper+jstorm的集群搭建相关的知识,希望对你有一定的参考价值。zoo

篇首语:本文由编程笔记#小编为大家整理,主要介绍了zookeeper+jstorm的集群搭建相关的知识,希望对你有一定的参考价值。




zookeeper的配置:

zookeeper有三种配置方式:单机式/伪分布式/集群式

其中伪分布式是在一台电脑上通过不同的端口来模拟分布式情形,需要N份配置文件和启动程序,而集群式是多个zookeeper程序。

 

首先通过sftp等方式获取tar包,解压到指定的目录:/usr/local/java 下,生成目录zookeeper-3.3.6;

配置环境变量(注意路径后面千万不要有空格,路径之前,与等号之间也不要有空格。):


vi /etc/profile
#zk
ZOOKEEPER_HOME=/usr/local/java/zookeeper-3.3.6
export PATH="$PATH:$ZOOKEEPER_HOME/bin"
export ZOOKEEPER_HOME


cd /zookeeper-3.3.6/conf
touch zoo.cfg 或 mv zoo-sample.cfg zoo.cfg
vi zoo.cfg
插入如下的内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/java/zookeeper-3.3.6/data
dataLogDir=/usr/local/java/zookeeper-3.3.6/logs
clientPort=4180
server.3=192.168.204.3:2888:3888
server.4=192.168.204.4:2888:3888
server.5=192.168.204.5:2888:3888
--其中节点数量大于虚拟机数量,文件路径一定要存在,不存在后面要创建,路径后面不能有空格


完成配置:Esc -> :wq
cd .. 到根目录
mkdir logs
mkdir data
需要在data下面建立一个myid问价,内容为server的编号,一定是本机的server编号
touch myid
vi myid
插入
主机对应的server号






基本配置就是这样,之后我们在另外两台虚拟机上执行同样的配置,zoo.cfg基本不变,但是myid要根据本机的ip映射的server编号来。同样路径不能有空格




依次启动三台虚拟机的zookeeper,zkServer.sh start 记住启动第一个的时候,会报错找不到后面的两个,这个不要紧,都启动就好了。

通过bin下面的命令:zkServer.sh status 查看状态,启动成功后会有节点是leader还是follower的标识,表示启动成功了。

中间遇到了一些问题,主要是无法启动,启动之后不能通信,找不到文件等。原因有:myid丢失,bin没有配置到path里,配置的logs文件夹没有建立,zoo.cfg中路径有空格,防火墙阻止等。

本来已经运行成功了,但是第二天过来的时候,又出问题了。表现是:

zhServer.sh start 启动之后,显示STARTED,并且后台的进程也在运行中,依次启动zk。jps命令也能看到 QuorumPeerMain 进程。明明已经启动成功了

但是zkServer.sh status 命令查看,却又报错:Error contacting service. It is probably not running 。

查看了许多资料啊,什么改hosts,检查myid,检查文件夹是否建立,但是没有针对性地改来改去,始终没有结果。而iptables命令,也显示invalid(我以为已经关闭了)

总结一下:报错的开始,并没有认真看报错日志,主要是网上有博客说启动的时候报错是正常的,因为其他节点没有启动。所以就没有继续深入了,然后各种漫无目的的瞎碰......


报错如下
java.net.NoRouteToHostException: No route to host(没有到主机的路由)
之后检查网络,端口,hosts,iptables都没有用。
随后发现centos7的防火墙不再是iptables了,变成firewall。我之前不停地
service iptables stop 命令并没有用。
最后通过:
--------------------------------------------------------------
centos7.0(默认是使用firewall作为防火墙,如若未改为iptables防火墙,使用以下命令查看和关闭防火墙)
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
------------------------------------------------------------------
Ubuntu(ubuntu-12.04-desktop-amd64)
查看防火墙状态:ufw status
关闭防火墙:ufw disable
---------------------------------------------------------------
CentOS6.0
查看防火墙状态:service iptables status
关闭防火墙:chkconfig iptables off #开机不启动防火墙服务

 




关闭了防火墙,于是不报错了。很简单的设置,但是却无效率地磨蹭了很长时间。(百度居然还有说status命令有问题)

 


另外,为了防止下次再捣乱,选择禁止开机启动: systemctl disable firewalld.service 

命令敲完后:

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

这一步应该是从开机的加载项里去掉,实现禁止开机启动。如果以后有需要,再复制进去应该可以。

参考:【http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html  】

 

所以,依次启动zkServer.sh start 显示启动成功,然后zkServer.sh status 显示:


[root@tm4 bin]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/java/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
[root@tm4 bin]# jps
2473 QuorumPeerMain
2661 Jps

 



即为成功。记住报错一定要围着zookeeper.out.

其他问题

1.终端始终连不上其中一台虚拟机,我以为哪里配置地不对,删除又重新克隆,重新配置,但还是不行,后来换了一个终端程序就好了,真是日了狗的心情。

  无论是带UI还是不带UI的虚拟机命令行,都很难用。只有通过xShell工具来连接,可以很方便的编辑。

 

jstorm配置

  jstorm 环境变量:


vi /etc/profile
插入
#jstorm
export JSTORM_HOME=/usr/local/java/jstorm-0.9.6
export PATH=$PATH:$JSTORM_HOME/bin

 




jstorm配置文件:

  可 参考服务器上已配置好的文件,结合自己的集群,做一些修改即可。

   


########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
- "192.168.204.3"
- "192.168.204.4"
- "192.168.204.5"
storm.zookeeper.root: "/jstorm"
nimbus.host: "192.168.204.3"
# %JSTORM_HOME% is the jstorm home directory
storm.local.dir: "%JSTORM_HOME%/data"

java.library.path: "/usr/local/java/jstorm-0.9.6/lib:/usr/local/lib:/opt/local/lib:/usr/lib"
supervisor.slots.ports:
- 6800
- 6801
- 6802
- 6803
# Default disable user-define classloader
# If there are jar conflict between jstorm and application,
# please enable it
topology.enable.classloader: false
# enable supervisor use cgroup to make resource isolation
# Before enable it, you should make sure:
# 1. Linux version (>= 2.6.18)
# 2. Have installed cgroup (check the file\'s existence:/proc/cgroups)
# 3. You should start your supervisor on root
# You can get more about cgroup:
# http://t.cn/8s7nexU
supervisor.enable.cgroup: false
### Netty will send multiple messages in one batch
### Setting true will improve throughput, but more latency
storm.messaging.netty.transfer.async.batch: true

### default worker memory size, unit is byte
worker.memory.size: 2147483648
# Metrics Monitor
# topology.performance.metrics: it is the switch flag for performance
# purpose. When it is disabled, the data of timer and histogram metrics
# will not be collected.
# topology.alimonitor.metrics.post: If it is disable, metrics data
# will only be printed to log. If it is enabled, the metrics data will be
# posted to alimonitor besides printing to log.
topology.performance.metrics: true
topology.alimonitor.metrics.post: false
ui.clusters:
- {
name: "jstorm",
zkRoot: "/jstorm",
zkServers:
[ "192.168.204.3","192.168.204.4","192.168.204.5"],
zkPort: 2181,
}

 




 

这里需要下载一下官方例子运行在UI 上,做测试,但是git却无法支持只clone其中example目录,这个正常的需求。简直失望

 

查看端口信息

netstat -ntulp |grep 80

 

ui.clusters:
- {
name: "jstorm",
zkRoot: "/jstorm",
zkServers:
[ "192.168.204.3","192.168.204.4","192.168.204.5"],
zkPort: 4180,
}
topology.backpressure.enable: true

supervisor.slots.ports.base: 6800
supervisor.slots.port.cpu.weight: 1.2
# supervisor.slots.port.cpu.weight: 0.5
supervisor.slots.port.mem.weight: 0.7
# supervisor.slots.port.mem.weight: 0.5
supervisor.slots.ports: null


 

 



http://blog.csdn.net/morning99/article/details/40426133



http://my.oschina.net/bigsloth/blog/387297



http://blog.csdn.net/zzu09huixu/article/details/26452947



http://coolxing.iteye.com/blog/1871009




来自为知笔记(Wiz)




附件列表


 



推荐阅读
  • java程序员_Java程序员最新职业规划,逆袭面经分享
    java程序员_Java程序员最新职业规划,逆袭面经分享 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 本文详细介绍了使用ZooKeeper构建高可用集群的方法,包括必要的软件环境准备、配置文件调整及集群启动等关键步骤。通常,一个ZooKeeper集群由奇数个节点组成,以确保Leader选举的有效性。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • 本文详细介绍了MooseFS中的副本管理(Goal)以及文件回收机制。副本管理允许用户设定文件的复制份数,确保数据的安全性和可用性;而文件回收机制则提供了在误删除文件后的恢复途径,通过设置合理的隔离时间,保护重要数据。 ... [详细]
  • Zookeeper面试常见问题解析
    本文详细介绍了Zookeeper中的ZAB协议、节点类型、ACL权限控制机制、角色分工、工作状态、Watch机制、常用客户端、分布式锁实现、默认通信框架以及消息广播和领导选举的流程。 ... [详细]
  • 本指南详细介绍了如何在 CentOS 7.0 系统上部署 Spring Boot 2.x 应用程序,包括必要的配置和步骤。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 如何构建基于Dubbo协议的示例项目
    本文详细介绍了构建基于Dubbo协议的示例项目的步骤,包括环境搭建、服务接口定义、服务实现、配置文件设置及客户端调用等环节,旨在为初学者提供一个清晰的学习路径。 ... [详细]
  • solrCloud分布式集群安装配置
    solrCloud分布式集群安装配置1.前提安装Zookeeper集群2.安装部署多个solr节点10.41.2.82 ... [详细]
  • 本文详细介绍了 Apache ZooKeeper 的 FileTxnLog 类中的 setPreallocSize 方法,并提供了多个实际应用中的代码示例。通过这些示例,读者可以更好地理解如何在不同场景下合理设置日志文件的预分配大小。 ... [详细]
author-avatar
风桥残岸_476
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有