您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 数据库技术改造方案v2.0
数据库技术改造方案V2.01.背景XXXXX系统,其数据库内存放的数据量较大且要求读写速度快,目前利用的Couchbase数据库虽然能满足读写速度上的要求,但服务器必须满足较大内存且各个服务节点(服务器)都是对等存在的,一个节点出现问题并不会影响其他节点正常运行,但总内存容量会缩小。当前通过对XXXXX更多数据存储到内存,以达到提高数据的读写速率;现把两台服务器内存合并为一个内存bucket,这样的方案导致一台机器出现宕机时failover过程有不可用时间,并且部分数据有丢失的可能,且在高负载系统上有假死现象;如果再增加节点且节点的内存只有达到或超过当前节点才能发挥服务器的性能,否则就要缩减Couchbase建立的bucket的占用内存,服务器就不能合理发挥它的性能作用,由此拥有大量的对比数据就需要提供更好且合理的NOSQL数据库。Couchbase数据库本身也存在以下缺点:1.Couchbase的存储方式为Key/Value,但Value的类型很为单一,不支持数组。另外也不会自动创建docid,需要为每一文档指定一个用于存储的DocumentIndentifer;2.各种组件拼接而成,都是c++实现,导致复杂度过高,遇到奇怪的性能问题排查比较困难,(中文)文档比较欠缺;3.采用缓存全部key的策略,需要大量内存。节点宕机时failover过程有不可用时间,并且有部分数据丢失的可能,在高负载系统上有假死现象;4.逐渐倾向于闭源,社区版本(免费,但不提供官方维护升级)和商业版本之间差距比较大。2.目前结构从结构和实际应用看,XXXXX存在问题:1、对比数据量较大;2、只有两台服务器只能做到内存扩展无法做到failover;3、内存数据达到一定比例,再写入数据效率降低;4、假如再添加节点就要求节点的内存必须接近当前两台节点的内存配置,否则就发挥不了现有节点的性能。3.数据库对比Hbase是一个运行在Hadoop上的分布式和可扩展的大数据仓库,其优点如下:1、需要的是硬盘空间,能够利用HDFS的分布式处理模式,并从Hadoop的MapReduce程序模型中获益。这意味着Hbase存储容量大,一个表可以容纳上亿行,上百万列;2、可通过版本进行检索,能搜到所需的历史版本数据;3、负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);4、也可有效避免单点故障的发生。Hbase与目前所用数据库Couchbase在某些方面的对比情况,如下面列表所示:项目HBASECOUCHBASE分片信息每个server,选主数据格式二进制json固化方式一般架设在hdfs上,可以认为是一个分布式内存索引系统Couchstore/ForestDB负载均衡自动均衡,迁移主备方式分布式内存索引,无主备索引支持仅按key排序主/二级过滤器服务器端服务器端编程协处理器。启动时放到服务器端,配置(不能动态上传)批量写入支持直接从hdfs加载文件不支持读写内存可以根据情况调整定义后不可改通过以上hbase和couchbase数据库的对比列表可知,在某些方面使用hbase要好于couchbase。集群中进程名称及作用:NameNode【支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作】DFSZKFailoverController【HadoopHa进程维持namenode高可用】JournalNode【保证hadoopHa的高可用(一般启动2n+1个)】JobHistoryServer【可以该服务查看已经运行完了的作业记录】ResourceManager【管理集群资源分配,接收NodeManager的资源汇报】DataNode【调度存储和检索数据】NodeManager【负责在单个节点上执行MapReduce任务】QuorumPeerMain【zookeeper独立的进程,ZooKeeper作用包括管理Hadoop集群中的NameNode,HBase中HBaseMaster的选举,Servers之间状态同步等】HMaster【管理和分配HRegion、HRegionServer负载均衡、权限控制、实现DDL操作】HRegionServer【维护HMaster分配给他的region,处理对这些region的io请求负责切分正在运行过程中变的过大的region】zookeeper【实现namenode和HMaster主从节点的failover,存放HBase集群的元数据以及集群的状态信息】4.设计与实施使用Hbase1.00+Hadoop2.60+Zookeeper3.4.6替换原NOSQL数据库Couchbase,原2台服务器+后添5台服务器共同组成一个Hbase分布式数据集群。架构图清晰地表达了HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由HMaster节点、HRegionServer节点、ZooKeeper集群等节点组成,而在底层,它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等;HMaster和NameNode都支持多个热备份,使用ZooKeeper来做协调;ZooKeeper并不是云般神秘,它一般由三台机器组成一个集群,内部使用PAXOS算法支持三台Server中的一台宕机,在本次设计中使用五台机器,此时则可以支持同时两台宕机,既少于半数的宕机;把RegionServer和DataNode放在相同的Server上实现数据的本地化。主机规划:这里采用HadoopHa的QJM方案,该方案由两个NameNode构成,一个处于active状态,另一个处于Standby状态,用于NameNode的备份和切换,ActiveNameNode对外提供服务,而StandbyNameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。在方案中配置独立的zookeeper集群,一方面用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换StandbyNameNode为Active状态;另一作用配置zookeeper集群负责的工作就是存储HBase的Schema,实时监控HRegionServer,存储所有Region的寻址入口,当然还有最常见的功能就是保证HBase集群中只有一个Master,实现HMaster主从节点的failover。采用HRegionServer和DataNode运行在相同的服务器上实现数据的本地化,提升读写性能,并减少网络压力。主机名IP安装的软件运行的进程master1192.168.XXX.111jdk、hadoop、hbaseNN、RM、DFSZKFailoverController(zkfc)、Hmaster、JobHistoryServermaster2192.168.XXX.112jdk、hadoop、hbaseNN、RM、DFSZKFailoverController(zkfc)、Hmasterslave1192.168.XXX.113jdk、hadoop、zookeeper、hbaseDN、NM、JournalNode、QuorumPeerMain、HRegionServerslave2192.168.XXX.114jdk、hadoop、zookeeper、hbaseDN、NM、JournalNode、QuorumPeerMain、HRegionServerslave3192.168.XXX.115jdk、hadoop、zookeeper、hbaseDN、NM、JournalNode、QuorumPeerMain、HRegionServerslave4192.168.XXX.116jdk、hadoop、zookeeper、hbaseDN、NM、JournalNode、QuorumPeerMain、HRegionServerslave5192.168.XXX.117jdk、hadoop、zookeeper、hbaseDN、NM、JournalNode、QuorumPeerMain、HRegionServer目录规划:名称路径所有软件目录/application/hadoop/app/所有数据和日志目录/data/hadoop/3.1集群安装前的环境检查登录名/密码:root/XXXXX|hadoop/hadoop时钟同步所有节点的系统时间要与当前时间保持一致。查看当前系统时间[root@master1~]#dateSunApr2404:52:48PDT2016如果系统时间与当前时间不一致,进行以下操作。[root@master1~]#cd/usr/share/zoneinfo/[root@master1zoneinfo]#ls//找到Asia[root@master1zoneinfo]#cdAsia///进入Asia目录[root@master1Asia]#ls//找到Shanghai[root@master1Asia]#cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime//当前时区替换为上海我们可以同步当前系统时间和日期与NTP(网络时间协议)一致。[root@master1Asia]#yuminstallntp//如果ntp命令不存在,在线安装ntp[root@master1Asia]#ntpdatepool.ntp.org//执行此命令同步日期时间[root@master1Asia]#date//查看当前系统时间时间同步服务端vi/etc/ntp.conf#restrict127.0.0.1#restrict-6::1server127.127.1.0#localclockfudge127.127.1.0stratum10vi/etc/ntp/step-tickers加入一行:pool.ntp.org这样每次ntpd启动时,会自动连接该国际标准时间服务器;servicentpdstartnetstat-an|grep123#确保该端口以udp方式开放时间同步客户端vi/etc/ntp.conf#restrict127.0.0.1#restrict-6::1server192.168.55.111ntpdate192.168.55.111crontab-e01****/usr/sbin/ntpdate192.168.55.111#每隔1小时同步一次时间/sbin/servicecrondstart//启动服务/sbin/servicecrondstop//关闭服务/sbin/servicecrondrestart//重启服务/sbin/servicecrondreload//重新载入配置servicecrondstatushosts文件检查所有节点的hosts文件都要配置静态ip与hostname之间的对应关系。vi/etc/hosts192.168.XXX.111master1192.168.XXX.112master2192.168.XXX.113slave1192.168.XXX.114slave2192.168.XXX.115slave3192.168.XXX.116slave4192.168.XXX.117slave5禁用防火墙所有节点的防火墙都要关闭。查看防火墙状态serviceiptablesstatusiptables:Firewallisnotrunning.如果不是上面的关闭状态,则需要关闭防火墙。chkconfigiptablesoff//永久关闭防火墙serviceiptablesstop修改主机名vi/etc/sysconfig/networkNETWORKING=yesHOSTNAME=localhost.localdomain//改为
本文标题:数据库技术改造方案v2.0
链接地址:https://www.777doc.com/doc-4494026 .html