前提
时间同步,无密互通

安装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
EOFecho '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
EOFcat > /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

异常处理

zookeeper HDFS 文件系统 hdfs需要zookeeper吗_操作系统

首先检查防火墙,看有没有拦截

再看myid文件有没有冲突


转载于:https://blog.51cto.com/13323775/2054134