• linux-zookeeper-kafka入门


    公告:版权所有,违者必究 ###1.zookeeper安装 **前提:**先安装jdk,zookeeper运行依赖于java环境。 (1.)下载安装包 ``` http://mirror.bit.edu.cn/apache/zookeeper https://zookeeper.aphache.org ``` (2.)解压文件 ``` tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/ mv /usr/local/zookeeper-3.4.13.tar.gz /usr/local/zookeeper //便于记忆,重命名 ``` (3.)编辑配置文件 ``` cd zookeeper-3.4.13/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/tmp/zookeeper/data //修改为自己创建的目录,临时目录存放数据不安全 dataLogDir=/tmp/zookeeper/log ``` **集群场景配置** >如果想配置集群的话,请zoo.cfg文件的clientPort下面添加服务器的ip。如 server.1=192.168.180.132:2888:3888 //这里是1,2,3 就是myid的对应的服务器编号,前面的2888端口用于和leader交换数据的,用于同步副本通信的端口 server.2=192.168.180.133:2888:3888 // 后面这个3888端口用于选举的,在选主的时候用这个端口进行通信 server.3=192.168.180.134:2888:3888 如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。

    如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件,在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
    如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.133上,内容就是2。
    cd /tmp/zookeeper/data
    touch myid
    vim myid

    (4.)设置环境变量

    vi /etc/profiel
    ZOOKEEPER_HOME=/usr/local/zookeeper/
    PATH=$PATH:$ZOOKEEPER_HOME/bin
    source /etc/profile
    

    (5.)zookeeper启动

    zkServer.sh start  //单机模式
    zkServer.sh start zoo1.cfg  //伪集群分布式模式
    zkServer.sh status  //查看状态
    
    【问题记录】:
    集群场景下,有一个节点启动正常,但是查询状态有问题:
    ./zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.
    
    【解决办法】:
    (a.)关闭防火墙,centos7:
    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    (b.)查看zoo.cfg中这两个文件夹是否已经创建,目录是否正确
    dataDir=/opt/zookeeper/zkdata
    dataLogDir=/opt/zookeeper/zkdatalog
    (c.)myid文件是否存在,是否在dataDir目录下,是否编号为1,2,3...内容是否有空格回车符,认真检查!!!
    (d.) 用以下命令启动,查看启动日志:
     zkServer.sh start-foreground   //linux
    ./zkServer.sh print-cmd   //windows
    

    (6.)进程查看

    jps
    

    (7.)客户端的启动

    zkcli.sh   //启动客户端
    ls /path //查看当前节点中所包含的内容
    ls2 /   //查看详情
    
    create  /path  "xxx"   //创建普通节点
    create -e /path1/path2/xxx   "xxx"  //创建临时节点
    create -s /path1/path2  "xxx"  //创建带序列号的节点,即自增节点
    get /path   //获取数据
    
    set /path1/path2  "yyy"  //修改数据
    get /path1/path2   watch   //节点值变化监听
    ls /path1   watch  //路径变化监听,注册时执行一次,即只执行一次
    
    quit  //退出
    

    2. zookeeper的选举机制

    (1.) 半数机制:半数以上工作正常,适合奇数安装。初始化时的选举,就采用该种方式。
    (2.) 选举时先投自己,不能成为master后,再投给节点数比自己大的节点。

    3.节点类型

    (1.)持久型:client与server断开连接后,创建的节点不删除,序列号顺序编号,单调递增。
    (2.)临时型:clent与Server断开连接后,创建的节点自己删除,节点顺序编号。

    4.内容同步到其他节点

    xsync zookeeper/xxx    //同步后,其他节点也有该文件夹
    

    5.zookeeper应用场景

    (1.)统一配置管理:
    分布式环境下,配置文件同步:
    a. 集群中所有节点的配置信息一致,如kafka集群
    b. 对配置文件修改后,可以快速的同步到其他各个节点上。
    配置管理可交给zookeeper实现:
    c. 可将配置信息写入zookeeper的一个节点上。
    d. 各个客户端监听这个节点,一旦节点中的数据被修改,zookeeper将通知各个客户端,同步数据
    (2.) 统一命名服务:
    域名 --> 多个IP
    (3.)统一集群管理
    a.分布式环境中,实现掌握各个节点的状态,可根据节点的实施状态,做出一些调整
    b.zookeeper 可以实现实时监控节点状态变化,可将节点信息写入zookeeper的一个节点,监听这个节点可获取它的实时状态变化。
    (4.)服务器动态上下线
    客户端实时洞察服务器上下线变化,如果该节点挂掉则访问其他节点
    (5.)软负载均衡
    在zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。

    6.zookeeper数据结构

    (1.)树状存储
    (2.)默认每个节点只能存储1M数据
    (3.)按路径访问

    7.zookeeper特性

    (1.)zookeeper = 文件系统 + 通知机制
    (2.)zookeeper 一个leader,N个follower
    (3.)集群中只要有半数 以上节点存活,则zookeeper集群可以正常服务
    (4.)全局数据一致:每个server保存一份相同的数据的副本,客户端无论连到哪个服务端,数据都是一致的。
    (5.)数据更新的原子性,一次数据更新要么成功,要么失败
    (6.)实时性,在一定时间内可以获取最新的数据
    (7.)zookeeper监听服务端下线原理:
    服务端启动时,去注册信息到zookeeper,客户端获取在线服务列表,并注册监听。当服务器节点下线时,zookeeper推送服务端下线的事件给客户端,客户端接收到通知后,重新获取服务器列表,并注册监听。
    ———————————————————————————————————————————————————————————


    ———————————————————————————————————————————————————————————

    kafka入门

    1.下载安装包

    http://kafka.apache.org/downloads.html
    

    2.解压文件

    tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/
    

    3.进入bin目录启动

    ./kafka-server-start.sh …/config/server.properties  //启动Kafka,需指定配置文件
    

    ----------------------------------【喜欢打赏】-------------------------------------------

    小主,辛苦啦!文章棒棒哒,赏杯咖啡吧...
    打赏

    ----------------------------------【喜欢打赏】-------------------------------------------

  • 相关阅读:
    mysql性能调优
    java面试大全
    JVM调优总结
    大数据行业跳槽面试前你需要做什么
    什么是分布式锁?实现分布式锁的方式
    如何保障mysql和redis之间的数据一致性?
    数据倾斜的原因和解决方案
    hive优化
    c# 系统换行符
    12种增强CSS技能并加快开发速度的资源
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/11777649.html
Copyright © 2020-2023  润新知