第一件事情就是要上传zookeeper,当前这里有一个zookeeper,我们用的不是最新的,现在已经有3.4.6了
我用的都是3.4.5
第一件事情做什么事呢,解压这个zookeeper,这个很简单,tar -zxvf zookeeper -C /usr/local,解压到/usr/local下
三个节点都是software文件下,基本上这三个节点都解压成功了,然后咱们退出,cd ..,然后重命名一下,
三个节点都应用一下,三个节点都变成zookeeper
三个节点都应用一下,解压完改完名字之后,可能要设置一下环境变量,vim /etc/profile文件,然后加上zookeeper的
home,添加到path下边,这个步骤其实已经写完了,咱们整体的去vim /etc/profile文件
就是这个配置我不改了,不再去做了,就配一个zookeeper_home,/usr/local/zookeeper,然后把zookeeper_home加在这里,
/bin找到zookeeper的运行,这三个文件都有,这步就默认修改完了,咱们q!退出来,改完这个文件resource一下,生效
这两步走完以后,你要改一下zookeeper里的配置文件,他的配置文件就叫这个名字,默认就叫sample,在zookeeper的
conf下面
他里面有三个文件,主要是zoo_sample.cfg,这个咱们整体的去mv一下,去改成zoo.cfg
复制一下,这三个都有了,整体去执行一下,就变成这个名字
然后咱们去编辑一下,进到这里面之后呢,他的配置是非常简单的,都需要指定一个dataDir,dataDir是咱们存放数据的地方
那我这块改一下,/usr/local/software/zookeeper-3.4.6/data,我建立一个文件夹,就是zookeeper下面有一个data
文件夹,这是第一步咱们要改的操作,然后下一步咱们要做的事情,就是咱们要配置三个节点,三个节点之间要相互的进行通信,
你注意看我这块吧,这块怎么去做呢,就是最后要加一个内容,就是在server.0,server.1,server.2,标识其实你是可以随便去改的,
然后是你的主机名或者IP名也行,就是IP地址加上2888,3888,这个是什么意思呢,咱们之后再去讲这个事,先把这个配置配上
第一个节点是server.0,看他是怎么写的,server.0=192.168.1.121:2888:3888,copy一下,粘贴再粘贴,122,123,改成server.1,
改成server.2,把这个配置整体copy,粘贴
就是三个节点都要做同样的事情,然后按ESC,第二件事情要做的,刚才其实咱们路径指定的是什么啊,指定的是
dataDir=/usr/local/zookeeper/data,data文件夹,要再创建一个文件夹data,在zookeeper下面,现在这三个文件都在
zookeeper下面了,mkdir data这个文件,回车
都创建好了这个data文件以后呢,ll一下,你会发现三个节点的zookeeper下都有一个data文件夹,都会有一个data文件夹,
然后咱们集体的cd到data文件夹下面,这下面是没有任何文件的,咱们要建立一个文件了,用touch,vim都行,zookeeper要指定
一个myid的文件,myid的文件分别写上0,1,2,直接vim myid回车,121上写一个0,122上写一个1,123上写一个2,这个就对应server.0,
server.1,server.2,整体wq!保存退出,其实做完这两步操作,咱们的zookeeper就算配置完毕了,然后就可以去启动咱们的zk了,
路径其实是要到/usr/local/zookeeper/bin去启动,咱们看一眼吧,我随便找一个机器吧,cd /usr/local/zookeeper/,
zookeeper下有一堆的文件
一堆的文件,咱们主要是去bin下去看一下,这下面都是啥啊,这下面就是一些启动的脚本
咱们要启动,现在要应用的就两个,一个是zkCli.sh,一个zkServer.sh,由于咱们已经配置了环境变量了,所以说无所谓,
整体cd到/usr/local下,咱们直接敲命令就行,因为环境变量已经配置好了,vim /etc/profile
zkServer.sh start回车
三个节点都去start完了以后,到底启动还是没有启动,你得看他的状态,他有个status
你看121的模式是follower
然后122是一个leader
123他也是一个follower
122这个节点是一个主节点,121和123是一个从节点,然后咱们整体的clear,其实现在zookeeper的环境是已经搭建
完毕了,其实很简单,然后咱们怎么去操作zookeeper,去看数据啊,他这里面有点像shell命令
他这里面有一个相当于是shell操作吧,他提供了zkCli.sh的一个脚本,我从主节点找也行,从从节点找也行,
这个无所谓,咱们JPS一下吧,咱们的zookeeper进程一直都在,zookeeper服务一直都是OK的,然后咱们继续往下走,接下来咱们要
操作这个东西,通过zkCli.sh这个,连一下客户端,那我就随便找一台机器吧,你是121也好,你是122也好,你是123也好,
直接zkCli.sh就进来了
不用start,我刚才敲得是zkCli.sh这个,然后进来以后呢,这里面他能看到什么啊,这里进入d的是zk的客户端,
正常的zk的客户端是需要查看数据的,查看命令其实就这几个命令,ls表示要查找什么样的数据,咱们现在的zookeeper下是
没啥数据的,其实之前也说过,你用client端看着别扭,你看zk下面节点是没有的
他就是这样的一个节点,根目录下有一个zookeeper,zookeeper下有一个quota,配额,其实 你不用去看,
相当于数据有多少配额,我后期会发啊,其实正常来讲,你去看这儿,你可以去eclipse下去装插件,
工具有很多种,你会发现下面是连着三台服务器,然后节点基本上就是这么一个情况,既然看到这个情况了,
你要想操作命令行的话,你要ls /,回车
你会发现根节点下有一个zookeeper的节点,进去回车 ls /zookeeper,有quota这个节点,就是刚才可视化的结果
这个下面就是空了,啥也没有了,其实默认的zookeeper刚装好以后呢,就是这种形态,就是根节点下挂着一个zookeeper的,
然后zookeeper下挂着一个quota,这个东西,应该很简单了,你会发现他没有clear命令
你敲clear命令,他就会说我们这里是没有clear命令的,然后告诉你有什么命令,一共就这么多,connect,get
还有set啊,rmr,delquota,quit退出,退出client端,stat节点的状态,history,还有sync同步,delete删除节点,
其实我quit就是退出的
你就发现我就已经退出了,我再进入zkCli.sh进入,这个也是可以的,接下来咱们看怎么去操作,还是看这个,如果你想新创建一个节点,
其实很简单的,调用create这个命令,create命令他其实有key有value,他这个目录是一个树形结构,一个树形结构,这里可以有分支,
他也可以有分支,这里面也有分支,然后对应着这个目录,比如/zookeeper,然后我可以建一个目录,你说根节点下是一个/,我也可以
创建一个/bhz,相当于一个节点的目录,你可以把它当做一个key,这个key可以指定一个value,这个value就是这个节点存放的一个数据,
就是这样的,结构其实是很简单的,咱们做一下create,比如随便找一个路径吧,create /bhz hadoop,/bhz这个是一个key,value叫
啥呢,比如叫hadoop,你会看见这个节点已经OK了
这回我们再去观察一下这个数据,我刷新一下,他就变成这种结构了,根节点下有一个这个文件,你会发现是这样的了
其实也很简单,通过get /bhz,也可以通过set设值,我取一下吧,get /zookeeper
你get一下zookeeper,里面一堆东西,你可能看不明白,咱们先clear掉,咱们先不get /zookeeper,咱们先get /bhz这个,
这个你就能够看明白了
你会发现他的数据就在这里了,hadoop就是数据,这里有一堆,比如ctime,这个节点的时间是什么,然后这个修改的
节点是什么,zookeeper它是保证一条一条顺序的,所以每生成一个节点操作他的时候,都会生成一个id,包括他的version版本号,
就是dataVersion,这里面都有,包括他的children,多少个孩子,包括节点的长度是多长,6个长度,hadoop是6个字母,就是这个意思,
如果获取到zookeeper下面,get /zookeeper
这回你再看,这个zookeeper是没有任何数据的,他也有一个时间,创建的时间,然后你会发现他下面有一个孩子numChildren,那个
孩子就是quota,然后其他的就无所谓了,慢慢的再说,基本上就是这个形式,我可以去set这个节点,给他起个名字,
set /bhz baihe
我现在set成功了以后,它会返回一个东西,这个时候数据就成5个了,然后你就会发现他不一致了,mtime是modify time就变了
然后dataVersion同理也有些变化了,我再设一遍 set /bhz kkkk
这个dataVersion你每次去进行修改的时候,dataVersion总是进行加1,然后长度也总是变化的,set /bhz cccc,
然后你有没有发现,你会发现有一个问题,就是mZxid这个也发生变化了,就是mZxid = 0xfe2这个,这个id,
每次也会有不一致的变化,创建节点的时候会有一个节点的ID,就是modify的时候会指定一个节点的id,
他两因为有修改了,都会有节点的变化的,就是你每次操作一下,其实你通过咱们client端的api啊,你都是可以去
查找到的,这里面的信息都是可以查找到的,然后咱们继续往下看,还有一些啊,删除,你可以递归的删除,你也可以
不递归的删除,你不想递归的删除就用rmr /path这个,rmr,如果不递归的删除就用delete /path/child这个,
你比如我现在去建立一个节点,我现在ls /一下
有一个节点了,你比如我想在bhz节点下创建一个节点,你肯定也是这么去写,也会创建一个attr,create /bhz/attr,
bhz的节点下就是attr,他整体是一个url,这个url也当做一个key,我给他指定一个名字,create /bhz/attr shuxing,
就这么写
create成功,然后我去get的时候,get /bhz/attr
你会发现,这个属性就已经有了,删除我这么写行不行,delete /bhz,这样写行不行
他说什么啊,Node not empty,因为我这个节点下还有一个子节点,所以你delete不行,先删除,只有删除attr,
我们rmr /bhz这样总可以吧
这回我们在看一下,有少了一个节点了
基本上这都是最简单的client端操作,能理解我说的意思吧,你也可以通过工具去添加一个节点,好像有add node,
刷新一下下没有了,我就add node,然后起一个名字
然后又delete node,然后还有change node,还是我new的不太多,一般remove就行了,一般用这个比较多
双击就可以写数据了,这里面随便写数据了
数据你保存一下就行了,刚才有个*就没了,这回你会发现,你会发现bhz的值就发生变化了,因为下面没有节点,所以返回空
所以我get /bhz
是不是一行1就已经有了,还有16个长度,这个是我刚才通过工具进行操作的,我只要以变更然后保存就发生变化了,
这个工具都是很好操作的
所以关于工具的操作,利用这个命令去做,就OK了,演示一下File,你可以传一个文件的,一般我是自己去创建file,
你可以这么去做,这个节点存储数据的作用,其实就是动态的变更信息,咱们到后期再详细去说,以后对应的一个节点,
我可以存一堆数据,这个数据可以存一个JSON字符串,这都可以,包括这个节点可以上传文件,图片啊,这都是行的,
这里面怎么去传呢,我先新建一个,我还没试过能不能行呢,新文件new_file,没试过,就123吧
现在有一个文件了,然后上传,我没有试过,试一下,不知道行不行
这样的话我的节点下肯定不一样了,我再双击打开就是123
也就是说也可以传,图片文件就是图片了,我这里有没有有图片呢,不要太大,小图片就行,这里又张小图片,
/bhz这个节点我要修改,我要上传一个文件,这个文件就在这儿
保存好了关掉,我再去打开,这里面一堆东西
这个就是那个图片,很多,这工具也是可以上传的,也是可以上传的,创建什么呢,一般是二进制的文件的,
JAVA API这部分,我不知道这个编码有没有问题,自己回去试试,这个我真不知道,咱们后期自己可以去做
通过JAVA API去获得