zookeeper集群安装
- 格式:docx
- 大小:517.96 KB
- 文档页数:46
Hadoop+Zookeeper+HBase安装指南RUC DB-IIR 卞昊穹/bhq2010bianhaoqiong@2012.07.28-Version1集群情况:4个节点,IP分别为:node0: 192.168.181.136(NameNode/JobTracker/SecondaryNameNode/HMaster)node1: 192.168.181.132(DataNode/TaskTracker/HRegionServer/QuorumPeerMain)node2: 192.168.181.133(DataNode/TaskTracker/HRegionServer/QuorumPeerMain)node3: 192.168.181.134(DataNode/TaskTracker/HRegionServer/QuorumPeerMain)软件版本:CentOS Linux 6.2 x86_64(2.6.32)OpenJDK-1.6.0_24Hadoop-1.0.2Zookeeper-3.4.3HBase-0.94.0目录1. hosts和hostname设置 (2)2. SSH设置 (2)3. Hadoop配置安装 (3)4. Zookeeper配置安装 (5)5. HBase配置安装 (6)1. hosts和hostname设置安装分布式的Hadoop和HBase集群需要在每一个节点上都设置网络中的hosts和本机的hostname。
首先将/etc/hosts文件中127.0.0.1这一行的中间一段改为本机的主机名,并在文件末尾添加hosts配置,每行为一个ip地址和对应的主机名,以空格分隔。
以node0为例,修改后的hosts 文件如下:再将/etc/sysconfig/network文件中HOSTNAME=一行中“=”之后内容改为主机名,如:2. SSH设置之后,在node0生成ssh公钥,添加到node1/2/3的~/.ssh/authorized_keys文件中以实现node0无密码登录node1/2/3,参考:/bhq2010/article/details/6845985此处node0是ssh客户端,node1/2/3是ssh服务器端。
prettyzoo的使用PrettyZoo是一款基于Apache ZooKeeper的图形化管理工具,它提供了一种简单、直观的方式来管理和监控ZooKeeper集群。
本文将介绍PrettyZoo的使用方法和功能特点。
一、PrettyZoo的安装和配置我们需要下载和安装PrettyZoo。
在官方网站上找到最新的版本,下载并解压缩文件。
然后,进入解压缩后的目录,找到可执行文件,双击运行即可。
安装完成后,我们需要配置PrettyZoo连接ZooKeeper集群的信息。
在主界面的左侧面板中,点击“Add”按钮,弹出一个对话框。
在对话框中,填写ZooKeeper服务器的IP地址和端口号,点击“OK”保存配置。
二、PrettyZoo的主要功能1.集群管理:PrettyZoo提供了集群管理功能,可以方便地查看集群中的节点信息、创建和删除节点等操作。
通过图形化界面,我们可以直观地了解整个集群的状态和拓扑结构。
2.数据监控:PrettyZoo可以实时监控ZooKeeper集群中节点的数据变化。
在主界面的右侧面板中,可以选择要监控的节点,然后在下方的数据区域中查看节点的值和变化历史。
这对于对节点数据的实时监控和分析非常有帮助。
3.权限管理:PrettyZoo提供了权限管理功能,可以对ZooKeeper 集群中的节点进行权限控制。
通过图形化界面,可以方便地设置节点的读写权限,确保数据安全。
4.事件通知:PrettyZoo可以实时通知用户关于节点变化的事件。
在主界面的右侧面板中,可以选择要监控的节点,然后在下方的事件区域中查看节点的变化情况。
这对于及时发现和处理节点变化非常有帮助。
5.日志查看:PrettyZoo可以查看ZooKeeper集群的日志信息,包括操作日志、错误日志等。
在主界面的左侧面板中,选择“Logs”选项,可以显示日志信息并进行搜索和过滤。
三、使用示例假设我们有一个ZooKeeper集群,其中包含了一些节点。
zookeeper、ZK安装、ZK配置、ZK使⽤-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介第⼆部分:zookeeper环境搭建 1、单机环境 2、集群环境第三部分:zookeeper基本使⽤ 1、java原⽣zk客户端api操作 2、zkClient客户端操作(推荐) 3、curator客户端操作(推荐)第四部分:zookeeper应⽤场景第五部分:zookeeper深⼊进阶第六部分:zookeeper源码分析-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介1、 zookeeper基本概念zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂并且容易出差错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并提供给⽤户⼀些简单的接⼝,zookeeper是⼀个典型的分布式⼀致性的解决⽅案(CP模式),分布式应⽤程序可以基于它实现数据订阅/发布、负载均衡,命名服务、集群管理、分布式锁和分布式队列等功能。
2、基本概念@1、集群⾓⾊通常在分布式系统中,构成⼀个集群中的每⼀台机器都有⾃⼰的⾓⾊,典型的是master/slave模式(主备模式),这种情况下能够处理写操作的机器成为master机器,把所有通过⼀步复制⽅式获取最新数据并且提供服务的机器为slave机器。
在zookeeper中没有是⽤主备模式,引⼊了Leader、Follower、Observer三种⾓⾊,在zk集群中所有的机器通过Leader选举来选Leader,Leader服务器为客户端提供读写服务,Follower和Observer都能提供读服务,唯⼀的区别是Observer不参与Leader选举,不参与写操作的过半写成功。
在Docker中部署ZooKeeper集群的详细教程一、介绍Docker是一种流行的容器化技术,允许开发人员将应用程序和其依赖项打包到一个可移植的容器中,实现软件环境的一致性和可移植性。
而ZooKeeper是一个开源的协调服务,用于分布式系统中的配置管理,命名服务和分布式锁等功能。
本文将详细介绍如何在Docker中部署ZooKeeper集群。
二、准备工作首先,需要在系统上安装Docker和Docker Compose。
具体的安装过程可以参考Docker和Docker Compose的官方文档。
安装完成后,确保Docker和Docker Compose正确运行。
三、创建Docker Compose文件在部署ZooKeeper集群之前,需要创建一个Docker Compose文件来定义集群中的容器。
创建一个新文件,命名为docker-compose.yml,并在其中输入以下内容:version: "3"services:zoo1:image: zookeeper:3.4.14restart: alwaysports:- "2181:2181"environment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo1:/datazoo2:image: zookeeper:3.4.14restart: alwaysenvironment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo2:/datazoo3:image: zookeeper:3.4.14restart: alwaysenvironment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo3:/data在这个文件中,我们定义了三个ZooKeeper节点:zoo1、zoo2和zoo3。
Docker下安装zookeeper(单机集群)启动Docker后,先看⼀下我们有哪些选择。
有官⽅的当然选择官⽅啦~下载:[root@localhost admin]# docker pull zookeeperUsing default tag: latestTrying to pull repository docker.io/library/zookeeper ...latest: Pulling from docker.io/library/zookeeper1ab2bdfe9778: Already exists7aaf9a088d61: Pull complete80a55c9c9fe8: Pull completea0086b0e6eec: Pull complete4165e7457cad: Pull completebcba13bcf3a1: Pull complete41c03a109e47: Pull complete4d5281c6b0d4: Pull completeDigest: sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39edStatus: Downloaded newer image for docker.io/zookeeper:latest查看镜像详情[root@localhost admin]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE192.168.192.128:443/hello-2 latest 0c24558dd388 42 hours ago 660 MB192.168.192.128:443/hello latest a3ba3d430bed 42 hours ago 660 MBdocker.io/nginx latest 5a3221f0137b 13 days ago 126 MBdocker.io/zookeeper latest 3487af26dee9 13 days ago 225 MBdocker.io/registry latest f32a97de94e1 5 months ago 25.8 MBdocker.io/mongo latest 8bf72137439e 12 months ago 380 MBdocker.io/influxdb latest 34de2bdc2d7f 12 months ago 213 MBdocker.io/centos latest 5182e96772bf 12 months ago 200 MBdocker.io/grafana/grafana latest 3e16e05be9a3 13 months ago 245 MBdocker.io/hello-world latest 2cb0d9787c4d 13 months ago 1.85 kBdocker.io/java latest d23bdf5b1b1b 2 years ago 643 MB[root@localhost admin]# docker inspect 3487af26dee9[{"Id": "sha256:3487af26dee9ef9eacee9a97521bc4f0243bef0b285247258c32f4a03cab92c5","RepoTags": ["docker.io/zookeeper:latest"],"RepoDigests": ["docker.io/zookeeper@sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed"],"Parent": "","Comment": "","Created": "2019-08-15T06:10:50.178554969Z","Container": "9a38467115f1952161d6075135d5c5287967282b834cfe68183339c810f9652b","ContainerConfig": {"Hostname": "9a38467115f1","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"2181/tcp": {},"2888/tcp": {},"3888/tcp": {},"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin","LANG=C.UTF-8","JAVA_HOME=/usr/local/openjdk-8","JAVA_VERSION=8u222","JAVA_BASE_URL=https:///AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_","JAVA_URL_VERSION=8u222b10","ZOO_CONF_DIR=/conf","ZOO_DATA_DIR=/data","ZOO_DATA_LOG_DIR=/datalog","ZOO_LOG_DIR=/logs","ZOO_TICK_TIME=2000","ZOO_INIT_LIMIT=5","ZOO_SYNC_LIMIT=2","ZOO_AUTOPURGE_PURGEINTERVAL=0","ZOO_AUTOPURGE_SNAPRETAINCOUNT=3","ZOO_MAX_CLIENT_CNXNS=60","ZOO_STANDALONE_ENABLED=true","ZOO_ADMINSERVER_ENABLED=true","ZOOCFGDIR=/conf"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"zkServer.sh\" \"start-foreground\"]"],"ArgsEscaped": true,"Image": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e","Volumes": {"/data": {},"/datalog": {},"/logs": {}},"WorkingDir": "/apache-zookeeper-3.5.5-bin","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {}},"DockerVersion": "18.06.1-ce","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"2181/tcp": {},"2888/tcp": {},"3888/tcp": {},"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin","LANG=C.UTF-8","JAVA_HOME=/usr/local/openjdk-8","JAVA_VERSION=8u222","JAVA_BASE_URL=https:///AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_","JAVA_URL_VERSION=8u222b10","ZOO_CONF_DIR=/conf","ZOO_DATA_DIR=/data","ZOO_DATA_LOG_DIR=/datalog","ZOO_LOG_DIR=/logs","ZOO_TICK_TIME=2000","ZOO_INIT_LIMIT=5","ZOO_SYNC_LIMIT=2","ZOO_AUTOPURGE_PURGEINTERVAL=0","ZOO_AUTOPURGE_SNAPRETAINCOUNT=3","ZOO_MAX_CLIENT_CNXNS=60","ZOO_STANDALONE_ENABLED=true","ZOO_ADMINSERVER_ENABLED=true","ZOOCFGDIR=/conf"],"Cmd": ["zkServer.sh","start-foreground"],"ArgsEscaped": true,"Image": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e","Volumes": {"/data": {},"/datalog": {},"/logs": {}},"WorkingDir": "/apache-zookeeper-3.5.5-bin","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 225126346,"VirtualSize": 225126346,"GraphDriver": {"Name": "overlay2","Data": {"LowerDir": "/var/lib/docker/overlay2/92185ebf7638a7b34180cfb87795dd758405cbad4fd0139b92a227d1a4b61847/diff:/var/lib/docker/overlay2/8787e91f5c03a7c03cee072019eca49a0402a0a0902be39ed0b5d651a79cce35/diff:/var/lib/doc "MergedDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/merged","UpperDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/diff","WorkDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/work"}},"RootFS": {"Type": "layers","Layers": ["sha256:1c95c77433e8d7bf0f519c9d8c9ca967e2603f0defbf379130d9a841cca2e28e","sha256:2bf534399acac9c6b09a0b1d931223808000b04400a749f08187ed9ee435738d","sha256:eb25e0278d41b9ac637d8cb2e391457cf44ce8d2bfe0646d0c9faefc96413f91","sha256:e54bd3566d9ef3e1309a5af6caf8682f32c6ac4d6adfcbd3e601cfee4e2e0e85","sha256:c79435051d529a7b86f5f9fc32e7e2ec401929434e5596f02a2af731f55c9f28","sha256:76e0d7b2d700e6d17924b985703c7b5b84fb39ddcc0a1181b41217c2a11dffc4","sha256:eecdc37df6afd77091641588f9639f63b65e8eb141e56529e00da44419c5bd04","sha256:36e788f2d91a89375df5901f31cca33776f887c00ddfd3cf9f2466fa4cb794d6"]}}]默认拉取最新的是3.5.X版本,如果你需要3.4.X版本的,要指定标签单机# 最后那个是镜像的ID[root@localhost admin]# docker run -d -p 2181:2181 --name some-zookeeper --restart always 3487af26dee9d5c6f857cd88c342acf63dd58e838a4cdf912daa6c8c0115091147136e819307[root@localhost admin]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd5c6f857cd88 3487af26dee9 "/docker-entrypoin..." 4 seconds ago Up 3 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp some-zookeeper[root@localhost admin]# docker exec -it d5c6f857cd88 bashroot@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.shConnecting to localhost:21812019-08-29 07:15:21,623 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT2019-08-29 07:15:21,679 [myid:] - INFO [main:Environment@109] - Client environment:=d5c6f857cd882019-08-29 07:15:21,680 [myid:] - INFO [main:Environment@109] - Client environment:java.version=1.8.0_2222019-08-29 07:15:21,717 [myid:] - INFO [main:Environment@109] - Client environment:java.vendor=Oracle Corporation2019-08-29 07:15:21,718 [myid:] - INFO [main:Environment@109] - Client environment:java.home=/usr/local/openjdk-82019-08-29 07:15:21,725 [myid:] - INFO [main:Environment@109] - Client environment:java.class.path=/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.5.5-bin/bin/../build/classes:/apache-zookeeper-3.5.5 2019-08-29 07:15:22,108 [myid:] - INFO [main:Environment@109] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:java.io.tmpdir=/tmp2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:piler=<NA>2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:=Linux2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:os.arch=amd642019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:os.version=3.10.0-862.9.1.el7.x86_642019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:=root2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:user.home=/root2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:user.dir=/apache-zookeeper-3.5.5-bin2019-08-29 07:15:22,118 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.free=11MB2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.max=247MB2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.total=15MB2019-08-29 07:15:22,206 [myid:] - INFO [main:ZooKeeper@868] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3b95a09c2019-08-29 07:15:22,239 [myid:] - INFO [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation2019-08-29 07:15:22,285 [myid:] - INFO [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes2019-08-29 07:15:22,366 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=Welcome to ZooKeeper!JLine support is enabled2019-08-29 07:15:22,563 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unkno 2019-08-29 07:15:23,443 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:37198, server: localhost/0:0:0:0:0:0:0:1:2181 2019-08-29 07:15:23,520 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10001216d990000, negotiated WATCHER::WatchedEvent state:SyncConnected type:None path:null[zk: localhost:2181(CONNECTED) 0] ls /[zookeeper][zk: localhost:2181(CONNECTED) 1] quitWATCHER::WatchedEvent state:Closed type:None path:null2019-08-29 07:15:37,042 [myid:] - INFO [main:ZooKeeper@1422] - Session: 0x10001216d990000 closed2019-08-29 07:15:37,043 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x10001216d990000root@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# exitexit[root@localhost admin]#在外部访问(192.168.192.128:2181)集群环境:单台宿主机(192.168.192.128),启动三个zookeeper容器。
1.概述操作系统为3台ubuntu虚拟机,其ip地址分别为ubuntu1 192.168.1.109ubuntu2 192.168.1.108ubuntu3 192.168.1.110jdk版本为jdk72.下载解压(三台机器都执行一遍)2.1将zookeeper解压到/usr/local/zookeeper-3.4.5目录下2.2以下命令都是在/usr/local/zookeeper-3.4.5目录下执行的#从zookeeper的sample中复制一个zk的配置文件root@ubuntu-2:/usr/local/zookeeper-3.4.5# cp conf/zoo_sample.cfg conf/zoo.cfg #修改一下这个配置文件,让他支持集群root@ubuntu-2:/usr/local/zookeeper-3.4.5# vi conf/zoo.cfg#修改一下存储数据的目录,给出的模板里放在/tmp/zookeeper(如果/var/lib/zookeeper目录不存在则需要自行创建)dataDir=/var/lib/zookeeper/#在这个文件的末尾添加如下配置(遵循server.id=host:port:port的格式):server.1=192.168.1.109:2888:3888server.2=192.168.1.108:2888:3888server.3=192.168.1.110:2888:3888保存配置退出vi编辑器2.3切换到/var/lib/zookeeper目录下(这个目录即上面的zoo.cfg中配置的dataDir目录)新建一个myid的文本文件,编辑其内容如下在server.1=192.168.1.109这台机器上设置1在server.2=192.168.1.108这台机器上设置2在server.3=192.168.1.110这台机器上设置3设置的规则就是在zoo.conf文件指定的server.id,zookeeper用这个数字来标识集群中的哪一个节点3.启动切换到zookeeper安装目录的bin下root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh start4.集群验证在三台机器上分别使用zkServer.sh status命令查看当前服务状态server3输出:root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfgMode: leaderroot@ubuntu-3:/usr/local/zookeeper-3.4.5/bin#server2输出:root@ubuntu-2:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfgMode: followerroot@ubuntu-2:/usr/local/zookeeper-3.4.5/bin#server1输出:root@ubuntu-1:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh statusJMX enabled by defaultUsing config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfgMode: followerroot@ubuntu-1:/usr/local/zookeeper-3.4.5/bin#注意:实际的输出结果leader和follower可能会分步的节点不同,但是只会有一个leader,另外两个节点是folower。
ZooKeeper集群安装后⽆法启动ZooKeeperJMXenabledbydefaultZooKeeper做三节点集群,启动后报错如下:[root@storm1 conf]# zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /my/servers/zookeeper-3.4.10/bin/../conf/zoo.cfgStarting zookeeper ... STARTED[root@storm1 conf]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /my/servers/zookeeper-3.4.10/bin/../conf/zoo.cfgError contacting service. It is probably not running.于是开始⽹上查找解决⽅案:⼀、关闭防⽕墙servcie iptables stop --临时关闭防⽕墙chkconfig iptables off --永久关闭防⽕墙⼆、配置问题zookeeper_home/conf/zoo.cfg配置⽂件⾥dataDir指定的那个⽬录下创建myid⽂件。
并且指定id,改id为你zoo.cfg⽂件中server.1=ip:2888:3888中的1.只要在myid头部写⼊1即可.同理其它两台机器的id对应上。
⽐如第⼀台机器cfg⽂件:配置相应的myid为:1三、⽤户权限问题切换为root⽤户启动尝试了以上⽅法,仍然不能解决。
看到某篇博客下评论说:zookeeper_home/conf/zoo.cfg配置⽂件⾥dataDir指定的⽂件夹没权限导致,于是使⽤chmod -R 777 data。
然后就可以成功启动了~。
Zookeeper简单操作使⽤(⼆)1 安装配置ZooKeeper1.1 基本安装将下载的apache-zookeeper-3.5.5-bin.tar.gz⽂件使⽤命令tar -xzvf 解压到 /usr/java ⽬录,并将原⽬录名修改为zookeeper-3.5.5。
进⼊zookeeper-3.5.5⽬录并创建两个⼦⽬录 data 和logs。
# mkdir data logs# echo 创建⼀个唯⼀的zookeeper实例号,我是⽤IP最后⼀个字节# cd data# vim myid // 输⼊ 128 后保存退出128# echo 复制 zoo_sample.cfg 为 zoo.cfg# cp zoo_sample.cfg zoo.cfg# 修改参数 dataDir# vim zoo.cfgdataDir=/var/lib/zookeeper然后修改 /etc/profile,增加修改相应的环境变量# vim /etc/profileexport PGDATA=/usr/java/postgres/dataZOOKEEPER_HOME=/usr/java/zookeeper-3.5.5PATH=$ZOOKEEPER_HOME/bin:$PATHexport ZOOKEEPER_HOME PATH# zkServer.sh start //启动服务# zkServer.sh status //查看服务状态# zkServer.sh stop //停⽌服务Zookeeper使⽤的默认端⼝是2181,可以在conf/zoo.cfg中修改这个端⼝号。
安装完成后,需要在防⽕墙开启端⼝# firewall-cmd --zone=public --add-port=2181/tcp –permanent# firewall-cmd –reload1.2 ZooKeeper安装为服务创建⾃动启动的脚本# cd /etc/rc.d/init.d# touch zookeeper# chmod +x zookeeper# vim zookeeper#!/bin/bash#chkconfig:2345 10 90#description:service zookeeper#set java environmentJAVA_HOME=/usr/java/jdk8u222-b10JRE_HOME=/usr/java/jdk8u222-b10/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binexport JAVA_HOME JRE_HOME CLASS_PATH PATHexport PGDATA=/usr/java/postgres/dataZOOKEEPER_HOME=/usr/java/zookeeper-3.5.5PATH=$ZOOKEEPER_HOME/bin:$PATHexport PATH ZOOKEEPER_HOMEsu root ${ZOOKEEPER_HOME}/bin/zkServer.sh "$1"// 添加到启动脚本# chkconfig --add zookeeper// ⼿⼯启动# service start zookeeper1.3 控制台使⽤zookeeper命令⾏连接到zookeeper# zhCli.sh -server 127.0.0.1:2181关于 zookeper的常⽤使⽤命令百度即可或者⽤help命令查看。
Hadoop、Zookeeper、Hbase、Hive集群安装配置手册运行环境机器配置虚机CPU E5504*2 (4核心)、内存 4G、硬盘25G进程说明QuorumPeerMain ZooKeeper ensemble member DFSZKFailoverController Hadoop HA进程,维持NameNode高可用 JournalNode Hadoop HA进程,JournalNode存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,保证数据高可用 NameNode Hadoop HDFS进程,名字节点DataNode HadoopHDFS进程, serves blocks NodeManager Hadoop YARN进程,负责 Container 状态的维护,并向 RM 保持心跳。
ResourceManager Hadoop YARN进程,资源管理 JobTracker Hadoop MR1进程,管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。
TaskTracker Hadoop MR1进程,manages the local Childs RunJar Hive进程HMaster HBase主节点HRegionServer HBase RegionServer, serves regions JobHistoryServer 可以通过该服务查看已经运行完的mapreduce作业记录应用 服务进程 主机/hostname 系统版本mysql mysqld10.12.34.14/ Centos5.810.12.34.15/h15 Centos5.8 HadoopZookeeperHbaseHiveQuorumPeerMainDFSZKFailoverControllerNameNodeNodeManagerRunJarHMasterJournalNodeJobHistoryServerResourceManagerDataNodeHRegionServer10.12.34.16/h16 Centos5.8 HadoopZookeeperHbaseHiveDFSZKFailoverControllerQuorumPeerMainHMasterJournalNodeNameNodeResourceManagerDataNodeHRegionServerNodeManager10.12.34.17/h17 Centos5.8 HadoopZookeeperHbaseHiveNodeManagerDataNodeQuorumPeerMainJournalNodeHRegionServer环境准备1.关闭防火墙15、16、17主机:# service iptables stop2.配置主机名a) 15、16、17主机:# vi /etc/hosts添加如下内容:10.12.34.15 h1510.12.34.16 h1610.12.34.17 h17b) 立即生效15主机:# /bin/hostname h1516主机:# /bin/hostname h1617主机:# /bin/hostname h173. 创建用户15、16、17主机:# useraddhduser密码为hduser# chown -R hduser:hduser /usr/local/4.配置SSH无密码登录a)修改SSH配置文件15、16、17主机:# vi /etc/ssh/sshd_config打开以下注释内容:#RSAAuthentication yes#PubkeyAuthentication yes#AuthorizedKeysFile .ssh/authorized_keysb)重启SSHD服务15、16、17主机:# service sshd restartc)切换用户15、16、17主机:# su hduserd)生成证书公私钥15、16、17主机:$ ssh‐keygen ‐t rsae)拷贝公钥到文件(先把各主机上生成的SSHD公钥拷贝到15上的authorized_keys文件,再把包含所有主机的SSHD公钥文件authorized_keys拷贝到其它主机上)15主机:$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys16主机:$cat ~/.ssh/id_rsa.pub | ssh hduser@h15 'cat >> ~/.ssh/authorized_keys'17主机:$cat ~/.ssh/id_rsa.pub | ssh hduser@h15 'cat >> ~/.ssh/authorized_keys'15主机:# cat ~/.ssh/authorized_keys | ssh hduser@h16 'cat >> ~/.ssh/authorized_keys'# cat ~/.ssh/authorized_keys | ssh hduser@h17 'cat >> ~/.ssh/authorized_keys'5.Mysqla) Host10.12.34.14:3306b) username、passwordhduser@hduserZookeeper使用hduser用户# su hduser安装(在15主机上)1.下载/apache/zookeeper/2.解压缩$ tar ‐zxvf /zookeeper‐3.4.6.tar.gz ‐C /usr/local/配置(在15主机上)1.将zoo_sample.cfg重命名为zoo.cfg$ mv /usr/local/zookeeper‐3.4.6/conf/zoo_sample.cfg /usr/local/zookeeper‐3.4.6/conf/zoo.cfg2.编辑配置文件$ vi /usr/local/zookeeper‐3.4.6/conf/zoo.cfga)修改数据目录dataDir=/tmp/zookeeper修改为dataDir=/usr/local/zookeeper‐3.4.6/datab)配置server添加如下内容:server.1=h15:2888:3888server.2=h16:2888:3888server.3=h17:2888:3888server.X=A:B:C说明:X:表示这是第几号serverA:该server hostname/所在IP地址B:该server和集群中的leader交换消息时所使用的端口C:配置选举leader时所使用的端口3.创建数据目录$ mkdir /usr/local/zookeeper‐3.4.6/data4.创建、编辑文件$ vi /usr/local/zookeeper‐3.4.6/data/myid添加内容(与zoo.cfg中server号码对应):1在16、17主机上安装、配置1.拷贝目录$ scp ‐r /usr/local/zookeeper‐3.4.6/ hduser@10.12.34.16:/usr/local/$ scp ‐r /usr/local/zookeeper‐3.4.6/ hduser@10.12.34.17:/usr/local/2.修改myida)16主机$ vi /usr/local/zookeeper‐3.4.6/data/myid1 修改为2b)17主机$ vi /usr/local/zookeeper‐3.4.6/data/myid1修改为3启动$ cd /usr/local/zookeeper‐3.4.6/$./bin/zkServer.sh start查看状态:$./bin/zkServer.sh statusHadoop使用hduser用户# su hduser安装(在15主机上)一、安装Hadoop1.下载/apache/hadoop/common/2.解压缩$ tar ‐zxvf /hadoop‐2.4.0.tar.gz ‐C /usr/local/二、 编译本地库,主机必须可以访问internet。
zookeeper集群安装2010-07-19 15:43:22| 分类:分布式|字号订阅Linux/OS X下:1 install1.1) 建立安装目录mkdir -p /local/software/zookeeper/cd /local/software/zookeeper/1.2) 下载压缩包curl -O /hadoop/zookeeper/zookeeper-3.3.1/zookeeper-3.3.1.tar.gz1.3) 解压缩文件tar xzf zookeeper-3.3.1.tar.gzcd /local/software/zookeeper/2. Config我们把提供相同应用的服务器组称之为一个quorum,quorum中的所有机器都有相同的配置文件。
在这里我们以3个机器组成的quorum为例,具体配置如下。
2.1) 建立数据目录mkdir -p /local/software/zookeeper/zookeeper-3.3.1/data2.2) 编辑配置文件 /local/software/zookeeper/zookeeper-3.3.1/conf/zoo.cfgdataDir=/local/software/zookeeper/zookeeper-3.3.1/data clientPort=2181initLimit=10syncLimit=5tickTime=2000server.1=175.41.131.28:2888:3888server.2=175.41.131.114:2888:3888server.3=175.41.132.171:2888:3888其中server.X代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。
下面会讲myid文件的配置。
2.3) 创建dataDir参数指定的目录(这里指的是"/local/software/zookeeper/zookeeper-3.3.1/data"),并在目录下创建文件,命名为“myid”,编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在175.41.131.114上,“myid”文件内容就是2,在175.41.132.171上,内容就是 32.4)注意打开防火墙的端口(1)如果是用iptable的话,在/etc/sysconfig/iptables中加入:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 –j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 –j ACCEPT执行命令:service iptables stopservice iptables start(2)EC2上的请打开相应的防火墙端口3. 启动服务三台電腦先後下zkServer start 指令,無限定誰先誰後,但三台電腦間執行此指令的間隔不宜過久(因為有設定timeout時間)bin/zkServer.sh start没有出错信息,则成功启动4. 执行测试4.1)在一台机器如server.2上进行一个写操作:$bin/zkCli.sh -server 127.0.0.1:2181[zk: 127.0.0.1:2181(CONNECTED) 1] create /mytest test [zk: 127.0.0.1:2181(CONNECTED) 3] ls /[mytest, zookeeper][zk: 127.0.0.1:2181(CONNECTED) 5] get /mytesttestcZxid = 0x100000002ctime = Mon Jul 19 03:30:20 EDT 2010mZxid = 0x100000002mtime = Mon Jul 19 03:30:20 EDT 2010pZxid = 0x100000002cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 04.2)在其他机器上查询:(如ssh://root@175.41.131.28:22)[zk: 127.0.0.1:2181(CONNECTED) 1] ls /[mytest, zookeeper][zk: 127.0.0.1:2181(CONNECTED) 2] ls /mytest[][zk: 127.0.0.1:2181(CONNECTED) 3] get /mytesttestcZxid = 0x100000002ctime = Mon Jul 19 03:30:20 EDT 2010mZxid = 0x100000002mtime = Mon Jul 19 03:30:20 EDT 2010pZxid = 0x100000002cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 0$bin/zkServer.sh statusJMX enabled by defaultUsing config: /local/software/zookeeper/zookeeper-3.3.1/bin/../conf/zoo.cfg2010-07-19 04:09:49,862 -INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOS erverCnxn$Factory@250] - Accepted socket connection from /127.0.0.1:422342010-07-19 04:09:49,864 -INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOS erverCnxn@1236] - Processing stat command from/127.0.0.1:422342010-07-19 04:09:49,866 - INFO [Thread-20:NIOServerCnxn$StatCommand@1152] - Stat command output2010-07-19 04:09:49,866 - INFO [Thread-20:NIOServerCnxn@1434] - Closed socket connection for client /127.0.0.1:42234 (no session established for client)Mode: follower5.注意事项通过shell脚本在每个机器上启动zookeeper的时候,可能会显示错误信息“Cannot open channel to X at election address”。
这是由于zoo.cfg文件中指定的其他zookeeper服务找不到所导致。
所有机器的zookeeper服务启动之后该错误提示将会消失。
Zookeeper 簡介2010-07-19 15:53:23| 分类:分布式|字号订阅Zookeeper是Google的Chubby一個開源的實現.是高有效和可靠的協同工作系統.Zookeeper能夠用來leader選舉,配置信息維護等.在一個分佈式的環境中,我們需要一個Master實例或存儲一些配置信息,確保文件寫入的一致性等.在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或獲取數據.如果在創建znode時Flag設置為EPHEMERAL,那麼當這個創建這個znode的節點和Zookeeper失去連接後,這個znode將不再存在在Zookeeper 裡.Zookeeper使用Watcher察覺事件信息,當客戶端接收到事件信息,比如連接超時,節點數據改變,子節點改變,可以調用相應的行為來處理數據.那麼Zookeeper能幫我們作什麼事情呢?簡單的例子:假設我們我們有個20個搜索引擎的服務器(每個負責總索引中的一部分的搜索任務)和一個總服務器(負責向這20個搜索引擎的服務器發出搜索請求併合並結果集),一個備用的總服務器(負責當總服務器宕機時替換總服務器),一個web的 cgi(向總服務器發出搜索請求).搜索引擎的服務器中的15個服務器現在提供搜索服務,5個服務器正在生成索引.這20個搜索引擎的服務器經常要讓正在提供搜索服務的服務器停止提供服務開始生成索引,或生成索引的服務器已經把索引生成完成可以搜索提供服務了.使用Zookeeper可以保證總服務器自動感知有多少提供搜索引擎的服務器並向這些服務器發出搜索請求,備用的總服務器宕機時自動啟用備用的總服務器,web的cgi能夠自動地獲知總服務器的網絡地址變化.這些又如何做到呢?1. 提供搜索引擎的服務器都在Zookeeper中創建znode,zk.create("/search/nodes/node1", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);2. 總服務器可以從Zookeeper中獲取一個znode的子節點的列表,zk.getChildren("/search/nodes", true);3. 總服務器遍歷這些子節點,並獲取子節點的數據生成提供搜索引擎的服務器列表.4. 當總服務器接收到子節點改變的事件信息,重新返回第二步.5. 總服務器在Zookeeper中創建節點,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);6. 備用的總服務器監控Zookeeper中的"/search/master"節點.當這個znode的節點數據改變時,把自己啟動變成總服務器,並把自己的網絡地址數據放進這個節點.7. web的cgi從Zookeeper中"/search/master"節點獲取總服務器的網絡地址數據並向其發送搜索請求.8. web的cgi監控Zookeeper中的"/search/master"節點,當這個znode 的節點數據改變時,從這個節點獲取總服務器的網絡地址數據,並改變當前的總服務器的網絡地址.一個Zookeeper的集群中,3個Zookeeper節點.一個leader,兩個follower的情況下,停掉leader,然後兩個follower選舉出一個leader.獲取的數據不變Zookeeper能夠幫助Hadoop做到:Hadoop,使用Zookeeper的事件處理確保整個集群只有一個NameNode,存儲配置信息等.HBase,使用Zookeeper的事件處理確保整個集群只有一個HMaster,察覺HRegionServer聯機和宕機,存儲訪問控制列表等.[转]/site/waue0920/Home/zookeeper/Zookeeper原理介绍Zookeeper可以运行在两种模式下,一种是单机模式,单机模式就是只有一个zookeeper service ,这对与测试来讲非常方便,但不能保证服务的高性能和高可靠性;另一种就是复制模式(集群模式),在这种模式下,只要集群中的大多数正常工作,就可以提供稳定的高性能服务,如五个节点的ensemble,任意两个节点失败,服务器仍然可以正常工作,实现原理很简单:确保znode树的每一次修改都被复制到ensemble的大多数机器中。