数据库技术改造方案v20.docx
- 文档编号:14771968
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:42
- 大小:324.18KB
数据库技术改造方案v20.docx
《数据库技术改造方案v20.docx》由会员分享,可在线阅读,更多相关《数据库技术改造方案v20.docx(42页珍藏版)》请在冰点文库上搜索。
数据库技术改造方案v20
数据库技术改造方案
V2.0
1.背景
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在某些方面的对比情况,如下面列表所示:
项目
HBASE
COUCHBASE
分片信息
每个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上实现数据的本地化。
主机规划:
主机名
IP
安装的软件
运行的进程
master1
192.168.XXX.111
jdk、hadoop、hbase
NN、RM、DFSZKFailoverController(zkfc)、Hmaster、JobHistoryServer
master2
192.168.XXX.112
jdk、hadoop、hbase
NN、RM、DFSZKFailoverController(zkfc)、Hmaster
slave1
192.168.XXX.113
jdk、hadoop、zookeeper、hbase
DN、NM、JournalNode、QuorumPeerMain、HRegionServer
slave2
192.168.XXX.114
jdk、hadoop、zookeeper、hbase
DN、NM、JournalNode、QuorumPeerMain、HRegionServer
slave3
192.168.XXX.115
jdk、hadoop、zookeeper、hbase
DN、NM、JournalNode、QuorumPeerMain、HRegionServer
slave4
192.168.XXX.116
jdk、hadoop、zookeeper、hbase
DN、NM、JournalNode、QuorumPeerMain、HRegionServer
slave5
192.168.XXX.117
jdk、hadoop、zookeeper、hbase
DN、NM、JournalNode、QuorumPeerMain、HRegionServer
这里采用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运行在相同的服务器上实现数据的本地化,提升读写性能,并减少网络压力。
目录规划:
名称
路径
所有软件目录
/application/hadoop/app/
所有数据和日志目录
/data/hadoop/
3.1集群安装前的环境检查
登录名/密码:
root/XXXXX|hadoop/hadoop
时钟同步
所有节点的系统时间要与当前时间保持一致。
查看当前系统时间
[root@master1~]#date
SunApr2404:
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:
:
1
server127.127.1.0#localclock
fudge127.127.1.0stratum10
vi/etc/ntp/step-tickers
加入一行:
pool.ntp.org
这样每次ntpd启动时,会自动连接该国际标准时间服务器;
servicentpdstart
netstat-an|grep123#确保该端口以udp方式开放
时间同步客户端
vi/etc/ntp.conf
#restrict127.0.0.1
#restrict-6:
:
1
server192.168.55.111
ntpdate192.168.55.111
crontab-e
01****/usr/sbin/ntpdate192.168.55.111#每隔1小时同步一次时间
/sbin/servicecrondstart//启动服务
/sbin/servicecrondstop//关闭服务
/sbin/servicecrondrestart//重启服务
/sbin/servicecrondreload//重新载入配置
servicecrondstatus
hosts文件检查
所有节点的hosts文件都要配置静态ip与hostname之间的对应关系。
vi/etc/hosts
192.168.XXX.111master1
192.168.XXX.112master2
192.168.XXX.113slave1
192.168.XXX.114slave2
192.168.XXX.115slave3
192.168.XXX.116slave4
192.168.XXX.117slave5
禁用防火墙
所有节点的防火墙都要关闭。
查看防火墙状态
serviceiptablesstatus
iptables:
Firewallisnotrunning.
如果不是上面的关闭状态,则需要关闭防火墙。
chkconfigiptablesoff//永久关闭防火墙
serviceiptablesstop
修改主机名
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain//改为主机名
保存并输入reboot命令,重新启动服务器。
添加hadoop并进行sudo授权管理
/usr/sbin/groupaddhadoop
/usr/sbin/useraddhadoop-ghadoop
passwdhadoop//修改密码为hadoop
[root@master1~]#visudo
rootALL=(ALL)ALL此行下,添加如下内容
hadoopALL=(ALL)ALL
创建hadoop工作目录/数据目录
su-root
mkdir-p/application/hadoop
mkdir-p/data_sdb/hadoop
mkdir-p/data_sdb/hadoop/hdfs/namenode
mkdir-p/data_sdb/hadoop/hdfs/datanode
mkdir-p/data_sdb/hadoop/hdfs/namesecondary
mkdir-p/data_sdb/hadoop/hdfs/tmp
mkdir-p/data_sdb/hadoop/hdfs/journal
修改目录权限
chown-Rhadoop:
hadoop/application/hadoop
chown-Rhadoop:
hadoop/data_sdb/hadoop
修改文件打开数
[root@master1~]$vi/etc/security/limits.conf
rootsoftnofile65535
roothardnofile65535
rootsoftnproc32000
roothardnproc32000
[root@master1~]$vi/etc/pam.d/login
session required pam_limits.so
3.2配置SSH免密码通信
hadoop@master1~]$mkdir.ssh
[hadoop@master1~]$chmod755.ssh//将权限改为755
[hadoop@master1~]$cd.ssh
[hadoop@master1~]$ssh-keygen-trsa-P''//执行命令一路回车,生成秘钥
[hadoop@master1.ssh]$ls
authorized_keysid_rsaid_rsa.pubknown_hosts
[hadoop@master1.ssh]$catid_rsa.pub>>authorized_keys//将公钥保存到
[hadoop@master1.ssh]$chmod600authorized_keys
authorized_keys认证文件中//注意:
authorized_keys的权限为600
备注:
”公钥登录”,原理,即用户将自己的公钥储存在远程主机上。
登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。
远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
集群所有节点都要行上面的操作。
将所有节点中的共钥id_ras.pub拷贝到djt11中的authorized_keys文件中。
cat~/.ssh/id_rsa.pub|sshhadoop@master1'cat>>~/.ssh/authorized_keys'
所有节点都需要执行这条命令
然后将master1中的authorized_keys文件分发到所有节点上面。
scp-rauthorized_keyshadoop@master2:
~/.ssh/
scp-rauthorized_keyshadoop@slave1:
~/.ssh/
scp-rauthorized_keyshadoop@slave2:
~/.ssh/
scp-rauthorized_keyshadoop@slave3:
~/.ssh/
scp-rauthorized_keyshadoop@slave4:
~/.ssh/
scp-rauthorized_keyshadoop@slave5:
~/.ssh/
测试:
sshmaster2date
3.3JDK安装
通过上传工具上传JDk安装包到/home/hadoop/app
用root用户登陆到系统,打开一个终端输入
卸载rpm版的jdk:
#rpm-qa|grepjdk
显示:
jdk-1.6.0_10-fcs
卸载:
#rpm-e --nodeps jdk-1.6.0_10-fcs
[root@master1~]#chown-Rhadoop:
hadoopjdk-8u60-linux-x64.gz
[hadoop@master1~]$cpjdk-8u60-linux-x64.gz/application/hadoop/
[hadoop@master1hadoop]$chmod755jdk-8u60-linux-x64.gz
[hadoop@master1~]$tar-zxvfjdk-8u60-linux-x64.gz
[hadoop@master1~]$ln-sjdk1.8.0_60/jdk
[hadoop@master1~]$su-root
vi/etc/profile.d/java.sh
exportJAVA_HOME=/application/hadoop/jdk
exportPATH=$JAVA_HOME/bin:
$PATH
[root@master~]#source/etc/profile
[root@master~]#echo$JAVA_HOME
/application/hadoop/jdk
[hadoop@master1~]source/etc/profile
[hadoop@master1~]java-version
3.4Hadoop安装
[root@master1~]#chown-Rhadoop:
hadoophadoop-2.6.0.tar.gz
检查用户hadoop
chown-Rhadoop:
hadoop/application/hadoop/
chown-Rhadoop:
hadoop/data/hadoop/
[hadoop@master1~]$cphadoop-2.6.5.tar.gz/application/hadoop/
[hadoop@master1~]$tar-zxvfhadoop-2.6.5.tar.gz
[hadoop@master1~]$ln-shadoop-2.6.5/hadoop
[hadoop@master1~]$su-root
vi/etc/profile.d/java.sh
exportHADOOP_HOME=/application/hadoop/hadoop
exportPATH=$JAVA_HOME/bin:
$HADOOP_HOME/bin:
$PATH
[root@master1~]#source/etc/profile
[root@master1~]#echo$HADOOP_HOME
/application/hadoop/hadoop
[hadoop@master1hadoop]$source/etc/profile
测试
[hadoop@master1hadoop]$jps
1140Jps
3.5修改Hadoop配置文件(Hadoop用户下)
修改$HADOOP_HOME/etc/hadoop/slaves文件,加入所有slave节点的hostname
slave1
slave2
slave3
slave4
slave5
修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件
exportJAVA_HOME=/application/hadoop/jdk
修改$HADOOP_HOME/etc/hadoop/yarn-env.sh文件
exportJAVA_HOME=/application/hadoop/jdk
修改core-site.xml文件
[root@master1hadoop]#vicore-site.xml
--指定hdfs的nameservice为masters-->
//masters
--指定hadoop临时目录-->
--指定zookeeper地址-->
2181,slave2:
2181,slave3:
2181,slave4:
2181,slave5:
2181
--是否启动Hadoop的本地库,默认启用。
本地库可以加快基本操作,例如IO,压缩等-->
修改hdfs-site.xml
--配置hbase在HDFS文件系统中存放文件的根目录-->
//m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 技术改造 方案 v20
![提示](https://static.bingdoc.com/images/bang_tan.gif)