[大数据运维]Apache Hadoop之Zookeeper部署
文章目录
前言:写分布式应用的主要困难在于会出现“部分失败”(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选举端口,端口可以指定其他,但是集群内需要端口号一致。
- 大数据虚拟化零起点-6基础运维第五步-使用CLI创建Apache Hadoop集群 推荐
- 大数据学习22:Apache-Hadoop 2.8.1 集群部署
- 【Apache Hadoop系列】Hadoop1.0.4+zookeeper3.5.4+hbase0.94.5分布式部署
- 【Apache Nutch系列】Nutch2.2+hadoop+hbase+zookeeper环境部署
- Hadoop深度运维:Apache集群原地升级Ambari-HDP - 大数据
- 大数据技术之Apache Hadoop 分布式集群搭建和部署
- Mysql数据导入到Hbase报错:org.apache.hadoop.hbase.HTableDescriptor.addFamily
- 使用Ambari快速部署Hadoop大数据环境
- Apache CarbonData :一种为更加快速数据分析而生的新Hadoop文件版式
- hadoop集群环境搭建之zookeeper集群的安装部署
- 大数据学习第二章 hadoop集群的部署
- Hadoop2.6+Zookeeper3.4+Hbase1.0部署安装
- Kudu:一个为大数据快速分析量身定制的新型Apache Hadoop存储系统
- 专访涛思数据创始人陶建辉:比 Hadoop 快至少10 倍的大数据平台是这样炼成的 – 运维派
- apache sqoop1.99.3+hadoop2.5.2+mysql5.0.7环境构筑以及数据导入导出
- hbase 数据export/import (No enum constant org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS)
- Hadoop 部署之 ZooKeeper (二)
- 七、Hadoop 2.5.2+zookeeper高可用部署
- 学习笔记:从0开始学习大数据-36.docker部署zookeeper集群
- ZooKeeper运维之部署方案设计