数据库技术改造方案v20_第1页
数据库技术改造方案v20_第2页
数据库技术改造方案v20_第3页
数据库技术改造方案v20_第4页
数据库技术改造方案v20_第5页
已阅读5页,还剩49页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库技术改造方案V2.01.背景XXXXX 系统,其数据库内存放的数据量较大且要求读写速度快,目前利用的Couchbase 数据库虽然能满足读写速度上的要求,但服务器必须满足较大内存且各个服务节点(服务器)都是对等存在的,一个节点出现问题并不会影响其他节点正常运行,但总内存容量会缩小。当前通过对 XXXXX 更多数据存储到内存,以达到提高数据的读写速率;现把两台服务器内存合并为一个内存 bucket,这样的方案导致一台机器出现宕机时 failover 过程有不可用时间,并且部分数据有丢失的可能,且在高负载系统上有假死现象;如果再增加节点且节点的内存只有达到或超过当前节点才能发挥服务器的性能,否则就要缩减Couchbase 建立的 bucket 的占用内存,服务器就不能合理发挥它的性能作用,由此拥有大量的对比数据就需要提供更好且合理的 NOSQL 数据库。Couchbase 数据库本身也存在以下缺点:.Couchbase 的存储方式为 Key/Value,但 Value 的类型很为单一,不支持数组。另外也不会自动创建 doc id,需要为每一文档指定一个用于存储的 Document Indentifer; .各种组件拼接而成,都是 c+实现,导致复杂度过高,遇到奇怪的性能问题排查比较困难,(中文)文档比较欠缺;.采用缓存全部 key 的策略,需要大量内存。节点宕机时 failover 过程有不可用时间,并且有部分数据丢失的可能,在高负载系统上有假死现象;.逐渐倾向于闭源,社区版本(免费,但不提供官方维护升级)和商业版本之间差距比较大。2.目前结构从结构和实际应用看,XXXXX 存在问题:1、对比数据量较大;2、只有两台服务器只能做到内存扩展无法做到 failover;3、内存数据达到一定比例,再写入数据效率降低;4、假如再添加节点就要求节点的内存必须接近当前两台 节点的内存配置,否则就发挥不了现有节点的性能。3.数据库对比Hbase 是一个运行在 Hadoop 上的分布式和可扩展的大数据仓库,其优点如下:1、需要的是硬盘空间,能够利用 HDFS 的分布式处理模式,并从 Hadoop 的MapReduce 程序模型中获益。这意味着 Hbase 存储容量大,一个表可以容纳上亿行,上百万列;2、可通过版本进行检索,能搜到所需的历史版本数据;3、负载高时,可通过简单的添加机器来实现水平切分扩展,跟 Hadoop 的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能( MapReduce);4、 也可有效避免单点故障的发生。Hbase 与目前所用数据库 Couchbase 在某些方面的对比情况,如下面列表所示:项目 HBASE COUCHBASE分片信息 每个 server,选主数据格式 二进制 json固化方式 一般架设在 hdfs 上,可以认为是一个分布式内存索引系统Couchstore ForestDB负载均衡 自动均衡,迁移主备方式 分布式内存索引,无主备索引支持 仅按 key 排序 主二级过滤器 服务器端服务器端编程 协处理器。启动时放到服务器端,配置(不能动态上传)批量写入支持直接从 hdfs 加载文件 不支持读写内存 可以根据情况调整 定义后不可改通过以上 hbase 和 couchbase 数据库的对比列表可知,在某些方面使用 hbase 要好于 couchbase。集群中进程名称及作用:NameNode【支持对 HDFS 中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作】DFSZKFailoverController【Hadoop Ha 进程维持 namenode 高可用】JournalNode【保证 hadoop Ha 的高可用(一般启动 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.设计与实施使用 Hbase 1.00+Hadoop 2.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 上实现数据的本地化。主机规划:这里采用 Hadoop Ha 的 QJM 方案,该方案由两个 NameNode 构成,一个处于active 状态,另一个处于 Standby 状态,用于 NameNode 的备份和切换,Active NameNode 对外提供服务,而 Standby NameNode 则不对外提供服务,仅同步 active namenode 的状态,以便能够在它失败时快速进行切换。主机名 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在方案中配置独立的 zookeeper 集群,一方面用于ZKFC(DFSZKFailoverController)故障转移,当 Active NameNode 挂掉了,会自动切换 Standby NameNode 为 Active 状态; 另一作用配置 zookeeper 集群负责的工作就是存储 HBase 的 Schema,实时监控 HRegionServer,存储所有 Region 的寻址入口,当然还有最常见的功能就是保证 HBase 集群中只有一个 Master,实现 HMaster 主从节点的 failover。采用 HRegionServer 和 DataNode 运行在相同的服务器上实现数据的本地化,提升读写性能,并减少网络压力。目录规划:名称 路径所有软件目录 /application/hadoop/app/所有数据和日志目录 /data/hadoop/3.1 集群安装前的环境检查登录名/密码:root/XXXXX|hadoop/hadoop时钟同步所有节点的系统时间要与当前时间保持一致。查看当前系统时间rootmaster1# dateSun Apr 24 04:52:48 PDT 2016如果系统时间与当前时间不一致,进行以下操作。rootmaster1# cd /usr/share/zoneinfo/rootmaster1zoneinfo# ls /找到 Asiarootmaster1 zoneinfo# cd Asia/ /进入 Asia 目录rootmaster1 Asia# ls /找到 Shanghairootmaster1 Asia#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime /当前时区替换为上海我们可以同步当前系统时间和日期与 NTP(网络时间协议)一致。rootmaster1 Asia# yum install ntp /如果 ntp 命令不存在,在线安装 ntprootmaster1 Asia# ntpdate /执行此命令同步日期时间rootmaster1 Asia# date /查看当前系统时间时间同步服务端vi /etc/ntp.conf#restrict #restrict -6 :1server # local clockfudge stratum 10vi /etc/ntp/step-tickers加入一行:这样每次 ntpd 启动时,会自动连接该国际标准时间服务器;service ntpd startnetstat -an |grep 123 #确保该端口以 udp 方式开放时间同步客户端vi /etc/ntp.conf#restrict #restrict -6 :1server 11ntpdate 11crontab -e01 * * * * /usr/sbin/ntpdate 11 #每隔 1 小时同步一次时间/sbin/service crond start /启动服务/sbin/service crond stop /关闭服务/sbin/service crond restart /重启服务/sbin/service crond reload /重新载入配置service crond statushosts 文件检查所有节点的 hosts 文件都要配置静态 ip 与 hostname 之间的对应关系。vi /etc/hosts192.168.XXX.111 master1192.168.XXX.112 master2192.168.XXX.113 slave1192.168.XXX.114 slave2192.168.XXX.115 slave3192.168.XXX.116 slave4192.168.XXX.117 slave5禁用防火墙所有节点的防火墙都要关闭。查看防火墙状态service iptables statusiptables: Firewall is not running.如果不是上面的关闭状态,则需要关闭防火墙。chkconfig iptables off /永久关闭防火墙service iptables stop 修改主机名vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=localhost.localdomain /改为主机名保存并输入 reboot 命令,重新启动服务器。添加 hadoop 并进行 sudo 授权管理/usr/sbin/groupadd hadoop/usr/sbin/useradd hadoop -g hadooppasswd hadoop /修改密码为 hadooprootmaster1# visudoroot ALL=(ALL) ALL 此行下,添加如下内容hadoop ALL=(ALL) ALL创建 hadoop 工作目录/ 数据目录su - rootmkdir -p /application/hadoopmkdir -p /data_sdb/hadoopmkdir -p /data_sdb/hadoop/hdfs/namenodemkdir -p /data_sdb/hadoop/hdfs/datanodemkdir -p /data_sdb/hadoop/hdfs/namesecondarymkdir -p /data_sdb/hadoop/hdfs/tmp mkdir -p /data_sdb/hadoop/hdfs/journal修改目录权限chown -R hadoop:hadoop /application/hadoopchown -R hadoop:hadoop /data_sdb/hadoop修改文件打开数rootmaster1 $vi /etc/security/limits.confroot soft nofile 65535root hard nofile 65535root soft nproc 32000root hard nproc 32000rootmaster1 $vi /etc/pam.d/loginsession required pam_limits.so3.2 配置 SSH 免密码通信hadoopmaster1$ mkdir .ssh hadoopmaster1 $ chmod 755 .ssh / 将权限改为 755hadoopmaster1$cd .ssh hadoopmaster1$ ssh-keygen -t rsa -P /执行命令一路回车,生成秘钥hadoopmaster1.ssh$ ls authorized_keys id_rsa id_rsa.pub known_hostshadoopmaster1.ssh$ cat id_rsa.pub authorized_keys /将公钥保存到hadoopmaster1.ssh$ chmod 600 authorized_keysauthorized_keys 认证文件中 /注意:authorized_keys 的权限为 600 备注:”公钥登录”,原理,即用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录 shell,不再要求密码。集群所有节点都要行上面的操作。将所有节点中的共钥 id_ras.pub 拷贝到 djt11 中的 authorized_keys 文件中。 cat /.ssh/id_rsa.pub | ssh hadoopmaster1cat /.ssh/authorized_keys所有节点都需要执行这条命令然后将 master1 中的 authorized_keys 文件分发到所有节点上面。scp -r authorized_keys hadoopmaster2:/.ssh/scp -r authorized_keys hadoopslave1:/.ssh/scp -r authorized_keys hadoopslave2:/.ssh/scp -r authorized_keys hadoopslave3:/.ssh/scp -r authorized_keys hadoopslave4:/.ssh/scp -r authorized_keys hadoopslave5:/.ssh/测试:ssh master2 date3.3 JDK 安装通过上传工具上传 JDk 安装包到/home/hadoop/app用 root 用户登陆到系统,打开一个终端输入卸载 rpm 版的 jdk:#rpm -qa|grep jdk显示:jdk-1.6.0_10-fcs卸载:#rpm -e -nodeps jdk-1.6.0_10-fcsrootmaster1 # chown -R hadoop:hadoop jdk-8u60-linux-x64.gzhadoopmaster 1$ cp jdk-8u60-linux-x64.gz /application/hadoop/hadoopmaster1 hadoop$ chmod 755 jdk-8u60-linux-x64.gzhadoopmaster1 $ tar -zxvf jdk-8u60-linux-x64.gzhadoopmaster1 $ ln -s jdk1.8.0_60/ jdkhadoopmaster1 $ su - rootvi /etc/profile.d/java.shexport JAVA_HOME=/application/hadoop/jdkexport PATH=$JAVA_HOME/bin:$PATHrootmaster # source /etc/profilerootmaster # echo $JAVA_HOME/application/hadoop/jdkhadoopmaster1 source /etc/profilehadoopmaster1 java -version3.4 Hadoop 安装rootmaster1 # chown -R hadoop:hadoop hadoop-2.6.0.tar.gz检查用户 hadoopchown -R hadoop:hadoop /application/hadoop/chown -R hadoop:hadoop /data/hadoop/hadoopmaster1 $ cp hadoop-2.6.5.tar.gz /application/hadoop/hadoopmaster1 $ tar -zxvf hadoop-2.6.5.tar.gzhadoopmaster1 $ ln -s hadoop-2.6.5/ hadoophadoopmaster1 $ su - rootvi /etc/profile.d/java.shexport HADOOP_HOME=/application/hadoop/hadoopexport PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATHrootmaster1 # source /etc/profilerootmaster1 # echo $HADOOP_HOME/application/hadoop/hadoophadoopmaster1 hadoop$ source /etc/profile测试hadoopmaster1 hadoop$ jps1140 Jps3.5 修改 Hadoop 配置文件(Hadoop 用户下)修改$HADOOP_HOME/etc/hadoop/slaves 文件,加入所有 slave 节点的 hostnameslave1slave2slave3slave4slave5修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh 文件export JAVA_HOME=/application/hadoop/jdk修改$HADOOP_HOME/etc/hadoop/yarn-env.sh 文件export JAVA_HOME=/application/hadoop/jdk修改 core-site.xml 文件rootmaster1 hadoop# vi core-site.xmlfs.defaultFShdfs:/mastershadoop.tmp.dir/data_sdb/hadoop/hdfs/tmpha.zookeeper.quorumslave1:2181,slave2:2181,slave3:2181,slave4:2181,slave5:2181io.native.lib.availableTRUE修改 hdfs-site.xmlhbase.rootdirhdfs:/masters/nodes.mastersnn1,node.rpc-address.masters.nn1master1:9000node.http-address.masters.nn1master1:50070node.rpc-address.masters.nn2master2:9000node.http-address.masters.nn2master2:50070node.shared.edits.dirqjournal:/slave1:8485;slave2:8485;slave3:8485;slave4:8485;slave5:8485/mastersdfs.journalnode.edits.dir/data_sdb/hadoop/hdfs/.dir/data_sdb/hadoop/hdfs/namenodedfs.datanode.data.dir/data_sdb/hadoop/hdfs/node.ha.ConfiguredFailoverProx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论