zoukankan      html  css  js  c++  java
  • 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.
    这一步应该是从开机的加载项里去掉,实现禁止开机启动。如果以后有需要,再复制进去应该可以。
     
    所以,依次启动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
     
     





    附件列表

  • 相关阅读:
    KTorrent 2.1
    Krusader-双面板文件治理器
    VirtualBox 1.3.4
    QEMU 0.9.0 & QEMU Accelerator 1.3.0pre10
    Sweep:音频编辑器材
    USBSink-优盘同步备份东西
    玩转 MPlayer(1)
    玩转 MPlayer(2)
    活动目录之迁移
    再学 GDI+[26]: TGPPen 画笔对齐 SetAlignment
  • 原文地址:https://www.cnblogs.com/opensesame/p/6074549.html
Copyright © 2011-2022 走看看