您的位置:首页 > 大数据

大数据简介、MapReduce和Zookeeper

2018-03-12 23:19 239 查看
一.大数据处理的关键技术:大数据采集,大数据预处理,大数据存储及管理,大数据分析及挖掘,大数据展现和应用(大数据检索、大数据可视化、大数据应用和大数据安全等)
二.MapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式。Map(映射),Reduce(简化)运行模型如下:


两个主要函数:
Map:(in_key,in_value) {(keyj,valuej) | j = 1...k}
Reduce:(key,[value1...,valueem]) (key,final_value)
三.Zookeeper
Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统。
Zookeeper主要是用来维护和监控一个目录节点树中存储的数据状态,所以我们能否操作Zooleeper的也和操作目录节点树答题一样,如创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子目录节点,给某个目录节点设置权限和监控这个目录节点的状态变化。Zookeeper.Stringcreate(String path,byte[] data,List<ACL>acl ,Create Mode createModel)创建一个给定的目录节点path,并给它设置数据,CreateModel标识有四种形式的目录节点,分别是PERSISTENT:持久化目录节点,这个目录节点存储的数据不会丢失;PERSISTENT_SEQUENTIAL:顺序自动编号的目录节点,这种目录节点会根据当前已近存在的节点数自动加1,然后返回给客户端已经成功创建的目录节点名;EPHEMERAL:临时目录节点,一旦这个节点的客户端与服务器端口也就是session超时,这种节点会被自动删除;EPHEMERAL_SEQUENTIAL:临时自动编号节点。getChildren(String path,boolean watch)获取制定path下所有的子目录节点,同样getChildren方法也有一个重载的方法可以设置特定的watcher监控子节点的状态,Stateexists(String path,boolean watch)判断买个path是否存在,并设置是否监控这个目录节点。
Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。
Zookeeper是基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册。一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式。
配置管理图:



集群管理Leader Election(选出一个Master Server)每台Server创建一个EPHEMERAL目录节点它还是一个SEQUENTIAL目录节点,我们可以给每台Server编号,可以选择最小的节点作为Master,假如这个节点被删除,当前又出现最小编号的节点,我们就选择这个节点作为当前Master,动态选择Master避免传统意义上单Master出现的单点故障问题。
共享锁:
实现方式:需要获得锁的Server创建一个EPHEMEARAL_SEQUENTIAL目录节点,然后调用getChildren的方法获取当前的目录节点列表中最小的目录节点是不是自己创建的目录节点,如果正是自己创建的,那么它就获得了锁,如果不是自己创建的目录节点他就调用exists(String path,boolean watch)方法并监控Zookeeper上目录节点列表的变化,一直到自己创建的节点是列表中最小的目录节点,从而获取锁,释放锁很简单,只要删除前面它自己所创建的目录就行了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: