您的位置:首页 > 大数据 > Hadoop

[大数据运维]Apache Hadoop之Zookeeper部署

2020-07-13 16:11 162 查看

文章目录

  • 3、cfg文件配置参数详解

  • 前言:写分布式应用的主要困难在于会出现“部分失败”(partial failure)。 例如当一条消息在网络中两个节点之间传送时,如果出现网络错误,发送者无法知道接收者是否已经收到这条消息。接收者可能在出现网络错误之前就已经收到这条消息,也有可能没有收到,又或者接收者的进程已经死掉。发送者能够获得真实情况的唯一途径就是重新连接接收者,并向它发出询问。这种情况就是部分失败,即我们甚至不知道一个操作是否已经失败。
    由于部分失败是分布式系统固有的特征,因此,使用ZooKeeper 并不能避免出现部分失败,当然它也不会隐藏部分失败。ZooKeeper 可以提供一组工具,使你在构建分布式应用时能够对部分失败进行正确处理。
    ZooKeeper是一个集中型服务,用于维护集群配置信息、命名、提供分布式同步和提供组服务,它支持高度可靠的分布式协调。

    1、Zookeeper的特点

    Zookeeper具有以下特点:

    • 简单:ZooKeeper 的核心是一个精简的文件系统,它提供一些简单的操作和一些额外的抽象操作,例如,排序和通知。

    • 富有表现力: ZooKeeper 的基本操作是一组丰富的“构件”(buildingblock),可用于实现多种协调数据结构和协议。相关的例子包括:分布式队列、分布式锁和一组节点中的“ 领导者选举”(leaderelection)。

    • 高可用性:ZooKeeper 运行于一组机器之上,并且在设计上具有高可用性,因此应用程序完全可以依赖于它。ZooKeeper 可以帮助系统避免出现单点故障,因此可以用于构建一个可靠的应用程序。

    • 松耦合交互方式:ZooKeeper支持的交互过程中,参与者不需要彼此了解。例如,ZooKeeper 可以被用于实现“数据汇集"(rendezvous)机制,让进程在不了解其他进程(或网络状况)的情况下能够彼此发现并进行信息交互。参与的各方甚至可以不必同时存在,因为一个进程可以在ZooKeeper 中留下一条消息,在该进程结束后,另外一个进程还可以读取这条消息。

    • 庞大的资源库:ZoKeeper 提供了一个通用协调模式实现方法的开源共享库,使程序员免于写这类通用的协议(这通常是很难写正确的)。所有人都能够对这个资源库进行添加和改进,久而久之,会使每个人都从中受益。

    ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer

    2、Zookeeper的安装部署

    需要先完成jdk安装!

    1、解压
    tar -zxvf ./zookeeper-3.4.10.tar.gz -C /usr/local/zookeeper
    2、配置环境变量
    vim /etc/profile
    export ZOOKEEPER_HOME=/usr/local/hadoop/zookeeper-3.4.10
    export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

    生效

    source /etc/profile
    3、修改配置文件

    打开安装目录里的conf中的zoo.cnf。首先复制备份

    cp ./zoo_sample.cfg zoo.cfg

    打开修改

    #dataDir:数据存放目录
    dataDir=/usr/local/hadoop/zookeeper-3.4.10/zkData
    #dataLogDir:日志存放目录
    dataLogDir=/usr/local/hadoop/zookeeper-3.4.10/zkdatalog
    #节点信息
    server.1=master:2888:3888
    4、创建myid(dataDir下)

    创建数据目录和日志目录

    mkdir ./zkData
    mkdir ./zkdatalog

    进入目录,创建myid

    cd zkData
    vim myid

    注意这个值是随着zoo.cfg的配置文件和ip地址的

    1
    5、运行Zookeeper
    [root@Yiyu zookeeper-3.4.10]# ./bin/zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    3、cfg文件配置参数详解

    配置文件如下:

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/usr/local/hadoop/zookeeper-3.4.10/zkData
    
    # the port at which the clients will connect
    clientPort=2181# the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60#
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1dataLogDir=/usr/local/hadoop/zookeeper-3.4.10/zkdatalog
    server.1=master:2888:3888
    server.2=slaveD:2888:3888
    server.3=slaveT:2888:3888

    建议先阅读注释内容,注释往往能提供50%的信息,也能避免我们踩一半的坑

    这是一个标准的Java 属性文件,本例中定义的三个属性是以独立模式运行ZooKeeper所需的最低要求。简单地说:

    tickTime
    属性指定了ZooKeeper 中的基本时间单元(以毫秒为单位);
    syncLimit
    指定主从节点请求和应答时间长度,单位秒;
    initLimit
    属性指定了follower连接到主节点的等待初始化时间,值=
    tickTime
    *
    syncLimit
    ;
    dataDir
    属性指定了ZooKeeper 存储持久数据的本地文件系统位置(非/tmp);
    clientPort
    属性指定了ZooKeeper用于监听客户端连接的端口(通常使用2181端口)。

    还有两个参数:

    #maxClientCnxns=60

    最大客户端连接数,为0则无限个

    server.3=slaveT:2888:3888

    节点布置,格式:节点+number=ip或者映射名称:监听端口:leader选举端口,端口可以指定其他,但是集群内需要端口号一致。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: