hadoop里面有:1)hdfs分布式存储 2)yarn资源调度框架;3)hive数据仓库技术,在线事物分析,延迟性很高,最终用的仍是mr技术,可是再也不使用mr技术了
4)hbase:创建在hadoop上面的数据库技术,随机定位+实时读写,业务是分布式的,可是最终仍是存储在hasoop上面的
要实现自动容灾,就须要引进zookeeperhtml
1.管理大量主机的协同服务,轻量级的 2.分布式应用,实现了分布式读写技术 3.zk提供的服务有哪些? 1):名称服务Naming service,按照名称来区分集群中的主机 2):配置管理Configuration management //针对新加入节点的最新化处理 3):集群管理Cluster management //实时感知集群中节点的增减 4):Leader election //leader follower 5):Locking and synchronization service //修改时来 锁定数据,实现容灾 6):Highly reliable data registry //节点宕机数据也是可用的
1.jdk 2.下载zookeeper-3.4.10。tar.gz,下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/ 3.tar开 4.符号链接,环境变量 $>ln -s zookeeper-3.4.10 zk 5.配置zk,复制zoo.cfg.sample-->zoo.cfg [zk/conf/zoo.conf] # 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=/home/centos/zookeeper # 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=1 6.启动zk服务器 $>bin/zkServer.sh start 7.验证zk $>netstat -anop|grep 2181 8.启动客户端链接到服务器 $>zkCli.sh -server s200:2181 //就直接进入到zk的命令行下面 $zk]help //查看帮助 $zk]quit //退出 $zk]create /a tom //建立过程,每次建立都要写数据 $zk]ls / //获得[a,zookeeper] $zk]get /a //查看数据 create /a/a1 jerry; get /a/a1 //查看数据 set /a tomas ;//修改节点数据 delete /a/a1; //删除一个节点 rmr /a //递归输出节点
1.Client 从server获取信息,周期性发送给server,表示本身还活着 当client链接时,server回传ack信息,若是客户端没有收到响应,就会重定向到另外一个server 2.Server. zk集群的一员,向client提供全部service,向客户端发送确认信息表示服务器还活着 3.ensemble 一组服务器,最小的节点数是3 4.leader.若是任何被链接的节点发生故障,自定恢复,zk服务启动时,完成leader的选举 5.Follower.遵循leader管理的的服务节点
zk中的节点,维护了stat的状态。 由version number,Action Control List,Timestamp,Data length组成 version number:数据写入过程的变化 ACL //action control list,访问控制列表
1.持久节点:永久性节点,client退出还存在 2.临时节点:在客户端活跃时有效,断开后自动删除。临时节点不能有子节点,在leader推选的时候扮演重要角色 create -e /b/e1 tom0;//创建一个临时节点 3.序列节点:在节点名以后副驾10个数字,主要用于同步和锁
Session中,会话的请求是按照先进先出的顺序执行的,一旦client链接到server,那么这个session就创建了,那么sessionId就分配给客户端了 client以固定间隔向server发送心跳,表示session是valid的, zk集群若是在超时的时候,没有收到心跳,就断定为client挂了 与此同时,临时节点就被删除了
观察者模式 Client可以经过watch机制在数据发生变化时收到通知 client可以在read节点的时候设置观察者。watch机制针对节点的变化会发送通知给注册的客户端程序 观察模式只触发一次。若是session过时,那么观察者就会被删除
zk工做流程
-----------------------、
zk集群启动后,客户端链接到其中的一个节点,这个节点能够是leader,也能够是follower
连通以后,node会分配一个id给client,发送ack信息给客户端,若是客户端没有收到ack确认,
若是客户端没有收到ack,链接到另一个节点
客户端周期性发送心跳信息给节点保证链接不会丢失node
若是客户端读取数据,发送请求给节点node,node读取本身的数据库,返回节点数据给client 若是client存储数据,将路径和数据发送给server,server转发给leader,leader将会补发全部的请求给follower,只有大多数的节点成功响应,则写操做就成功
文件系统层级结构存储 path:/home/centos/xxx=znode.节点上能够关联数据,数据能够是任何数据,可是数据大小不能超过1m 节点的类型 1.永久节点 2.临时节点 3.序列节点 数据状态:版本。
读: 写:
1.全部节点在同一目录下面建立临时序列节点 2.zk会添加10位的序列号到路径后面,而且znode会是xxx/xxx00000000001 3.对于给定的例子,在全部znode节点中,建立最小号的节点会成为leader,全部其余节点会成为follower 4.每一个节点会观察小于本身节点的主机(注册观察者) 5.若是leader挂了,对应的znode就会被删除了 6.观察者就会收到通知
1.挑选3台主机 s200-s202 2.每台机器都安装zk 3.配置zk配置文件 s200-s202 [/soft/zk/conf/zoo.cfg] autopurge.purgeInterval=1 dataDir=/home/centos/zookeeper 4.在每台主机的/home/centos/zookeeper中添加myid,内容分别是1,2,3 [s200] $>echo 1 >/home/centos/zookeeper/myid [s201] $>echo 2 >/home/centos/zookeeper/myid [s202] $>echo 3 >/home/centos/zookeeper/myid 5.启动服务器集群 在每台主机上执行:$>zkServer.sh start 6.查看每台服务器的状态 $>zkServer.sh status 7.修改zk的log目录