前提 时间同步,无密互通
安装jdk
请到oralce jdk官网下载
删除老的jdk
find /usr/local/ -maxdepth 1 -type d -name "jdk*" -exec rm -rf {} ;
将文件解压到指定目录下(这个看个人喜好)
tar axf /tmp/jdk-8u151-linux-x64.tar.gz -C /usr/local/
创建软链接
dirname=find /usr/local/ -maxdepth 1 -type d -name "jdk*"
ln -s ${dirname} /usr/local/jdk
cat >> /etc/profile <<EOF
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
EOF
source /etc/profile
单点安装zookeeper
zookeeper:分布式应用程序协调服务。
删除老的(我习惯把东西安装在 /usr/local下,把下载的文件放在/tmp下)
find /usr/local -maxdepth 1 -type d -name "zookeeper*" -exec rm -rf ;
find /tmp -maxdepth 1 -type f -name "zookeeper*" -exec rm ;
下载安装包
cd /tmp
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
解压
filename=find /tmp -maxdepth 1 -type f -name "zookeeper*"
tar axf ${filename} -C /usr/local
创建软链接
basedir=find /usr/local -maxdepth 1 -type d -name "zookeeper*"
ln -s ${basedir} /usr/local/zookeeper
创建文件目录
mkdir -p /usr/local/zookeeper/{data,logs}
设置环境变量
cat >> /etc/profile << EOF
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF
zoo.cfg主配置文件
zoo.cfg是zookeeper的主配置文件,位于${ZOOKEEPER_HOME}/conf/,安装包中没有这个文件,可以复制该目录下的zoo_sample.cfg生成 cp ${ZOOKEEPER_HOME}/conf/zoo_sample.cfg ${ZOOKEEPER_HOME}/conf/zoo.cfg
配置文件讲解
tickTime=2000 |
---|
tickTime:基本事件单元,单位为毫秒,发送心跳,获取信息,默认会话超时时间为该时间的两倍 |
initLimit=10 |
zookeeper集群中leader连接到follower最大次数,如果超过最大超时则连接超时,即超时时间为10*2000=20秒 |
syncLimit=5 |
syncLimit leader与follower之间发送信息是请求和应答的连接次数,超过为超时,时间为5*2=10秒 |
dataDir=/usr/local/zookeeper/data |
dataDir 数据存放路径 |
dataLogDir=/usr/local/zookeeper/logs #日志存放路径 |
clientPort=2181 #l连接端口 |
其他配置(只用过部分) |
---|
globalOutstandingLimit |
所在服务器所有没有响应请求的连接个数,默认为1000 |
preAllocSize |
预先分配额定空间用于后续transactionlog 写入,默认64M,当剩余空间小于4K时会再分配64M。 |
snapCount |
默认100,000,没怎么明白干啥的 |
traceFile |
不太明白干啥的 |
maxClientCnxns |
客户端同时连接服务器的最大连接数,默认为10,0表示没有限制。限制防止DoS攻击。 |
clientPortAddress |
指定client的地址,没有设置允许所有IP连接,指定了只允许指定IP连接 |
minSessionTimeout |
最小session timeout时间,默认为2个ticktime,以leader端为准 |
maxSessionTimeout |
最大session timeout时间,默认为20个ticktime,以leader端为准 |
集群参数配置
electionAlg |
---|
领导选举算法,默认是3(fast leader election,基于tcp)使用默认即可 |
initLimit |
设置 |
tickTime的个数,表示在leader选举结束后,followers与leader同步数据需要的时间,当需要同步数据较多时,应将此值设置大点,同步完成后再调小 |
syncLimit |
tickTime的个数,表示follower和observer与leader交互时的最大等待时间,同步完毕之后,进行交互的超时时间。 |
leaderServes |
如果该值不是no,则表示该服务器作为leader时是需要接受客户端连接的。为了获得更高吞吐量,当服务器数三台以上时一般建议设置为no。 |
cnxTimeout |
默认值是5000,单位ms 表示leaderelection时打开连接的超时时间,只用在算法3中。 |
单节点zoo.cfg配置文件
cat > /usr/local/zookeeper/conf/zoo.cfg << EOF tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/logs clientPort=2181 EOF
echo '1' >/usr/local/zookeeper/data/myid
添加用户 useradd hadoop -s /sbin/nologin chown -R hadoop.hadoop /usr/local/zookeeper/
常用命令
启动 zkServer.sh start 停止 zkServer.sh stop 重启 zkServer.sh restart 查看状态 zkServer.sh status 连接 zkCli.sh -server IP:PORT
客户端常用命令
help 帮助信息 quit 退出 ls / 查看当前zookeeper中的内容 ls2 / 查看当前节点数据,能够看到更新次数等 create /zk "test" 创建一个新的znode节点zk,关联字符串为test delete /zk 删除znode节点zk
zookeeper集群配置(3节点)
节点一、
前提:各节点之间无秘互通,时间同步,安装java环境
删除老的
find /usr/local -maxdepth 1 -type d -name "zookeeper*" -exec rm -rf ;
find /tmp -maxdepth 1 -type f -name "zookeeper*" -exec rm ;
下载安装包
cd /tmp
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
解压
filename=find /tmp -maxdepth 1 -type f -name "zookeeper*"
tar axf ${filename} -C /usr/local
创建软链接
basedir=find /usr/local -maxdepth 1 -type d -name "zookeeper*"
ln -s ${basedir} /usr/local/zookeeper
创建文件目录
mkdir -p /usr/local/zookeeper/{data,logs}
设置环境变量
cat >> /etc/profile << EOF
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF
cat > /usr/local/zookeeper/conf/zoo.cfg << EOF tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/logs clientPort=2181 server.1=host1:2887:3887 server.2=host2:2887:3887 server.3=host3:2887:3887 EOF 注意修改上面的host改为相应的ip或者在hosts文件中做域名解析 echo '1' >/usr/local/zookeeper/data/myid 添加用户 useradd hadoop -s /sbin/nologin chown -R hadoop.hadoop /usr/local/zookeeper/ 将文件复制到其他节点 scp -r /usr/local/zookeeper host2:/usr/local scp -r /usr/local/zookeeper host3:/usr/local
节点二
设置环境变量 cat >> /etc/profile << EOF export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin EOF source /etc/profile 添加用户 useradd hadoop -s /sbin/nologin chown -R hadoop.hadoop /usr/local/zookeeper/ 节点ID echo '2' >/usr/local/zookeeper/data/myid
节点三
设置环境变量 cat >> /etc/profile << EOF export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin EOF source /etc/profile 添加用户 useradd hadoop -s /sbin/nologin chown -R hadoop.hadoop /usr/local/zookeeper/ 节点ID echo '3' >/usr/local/zookeeper/data/myid
启动集群 在每个节点上运行 zkServer.sh start 查看状态 zkServer.sh status
异常处理
首先检查防火墙,看有没有拦截 |
再看myid文件有没有冲突 |