要看你针对客户群体是哪里的:是海外还是国内,不同的地区需要选择的服务器都是不一样的,需要根据你的业务需求选择最适合你的服务器。
在选择IDC供应商时候,不要只因为价格而去选择一些小的个人工作室,需要去找有资历、由企业认证的合法IDC服务商锐讯网络,后期更加有保证。
香港服务器的确是国内性价比高的服务器了,还不需要备案。香港地区有很多机房,下面将香港极大顶级机房说一下,方便您选择。一、香港新世界机房
香港新世界机房成立于2001年,是香港唯一获双ISO认证的机房,机柜存储面积超过30,000平方尺。香港新世界机房是全香港规模最大、设施最好、网络环境最优的顶级机房,同时也是香港机房到大陆最快、最好、最稳定的线路之一。
二、香港Telehouse机房
香港Telehouse机房是HKColoNET数据中心最顶级的机房,占地3万平方,是T3+级标准数据中心,是全香港最大的数据中心之一。Telehouse香港机房提供配备高级别的安全性、电源、冷却系统,先进的技术保证了托管的服务器安全稳定,可以保障999%的运行时间。像熟悉的BlueHost香港主机和香港服务器都是位于香港Telehouse机房,速度以及配置都有所保障。
三、香港电讯机房
香港电讯是由香港电话公司与大东电报局(香港)有限公司合组而成。香港电讯机房最大的优势是网络相对中立,用户可以连接到自己想要的线路,提供95%的本地网络服务,稳定性非常好。
四、香港电讯盈科机房
香港电讯盈科机房成立于2000年,是香港最早的一家固网基础运营商。香港电讯盈科是香港最大的电讯公司,被称为全香港第一家“四网合一”的运营商。其业务已经遍及香港地区,中国内地和亚洲地区,还覆盖美洲、欧洲和非洲等地,产品口碑知名度非常广。
总之,以上就是香港地区几大有名的机房,提供的服务器都是很不错的,要是想要访问速度快的,最好是选择走电信cn2线路的,那样国内访问速度是很快的。1、FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。
2、RegionServer
HRegionServer is the RegionServer implementation It is responsible for serving and managing regions In a distributed cluster, a RegionServer runs on a DataNode
3、Regions
Regions are the basic element of availability and distribution for tables, and are comprised of a Store per Column Family The hierarchy of objects is as follows:
Table (HBase table)
Region (Regions for the table)
Store (Store per ColumnFamily for each Region for the table)
MemStore (MemStore for each Store for each Region for the table)
StoreFile (StoreFiles for each Store for each Region for the table)
Block (Blocks within a StoreFile within a Store for each Region for the table)
对应的数据存储结构:
Region结构说明
(二)单个节点停止
HBASE 节点停止分为优雅停止(Graceful Stop)和立即停止(• Stop )
• Graceful Stop 该方式会促使Regions重新分配到其它的RegionServer节点,下线region在新节点部署后才重新分配下一个region,当所有region都在新节点部署后才下线自己,这样增加节点断开hbase服务的有效性。该方式设置了一个超时时间,如果在指定的超时时间没有成功完成停止节点的工作,会转为使用kill -9 终止RegionServe服务。恢复时会从受影响的region开始。执行的命令:
$ /bin/graceful_stopsh
Usage: graceful_stopsh [--config &conf-dir>] [--restart] [--reload] [--thrift] [--
rest] &hostname>
thrift If we should stop/start thrift before/after the hbase stop/start
rest If we should stop/start rest before/after the hbase stop/start
restart If we should restart after graceful stop
reload Move offloaded regions back on to the stopped server
debug Move offloaded regions back on to the stopped server
hostname Hostname of server we are to stop
• Stop 刚方式RegionServer会立即关所有的region,然后关闭自己,不会将Regions重新分配到其它的RegionServer节点,这种方式当region比较多时关闭有可能需要很长时间,该方式使用ill -5 终止RegionServe服务。
$ /bin/hbase-daemonsh stop regionserver
两种方式都建议关闭Load Balancer:
关闭命令:
hbase(main):001:0> balance_switch false
开启命令:
balance_switch true
(三)、节点启动
手工启动命令:
$ /bin/hbase daemonsh start regionserver
bin/graceful_stopsh --restart --reload --debugregionserver_nodename;
他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来。
Hbase中每个Region自己维护其在hbase:meta表中的信息。
状态机中包括下面几种状态:
offline:region离线没有开启
opening:region正在被打开
open:region正在打开,并且region server通知了master
failed_open:regionserver打开失败
closing:region正在被关闭
closed:regionserver正在关闭,并且已经通知了master
failed_close:regionserver关闭失败了
splitting:region server通知master,region正在被切分
split:region server通知master,region已经被切分完了
spliting_new:region是切分过程中新建的文件
merging:regionserver通知master region正在合并
merged:regionserver通知master region合并完了
merging_new:region是合并新建出来的
不同的颜色是不同含义:
棕色:离线状态,属于一种短暂的瞬间状态(比如关闭后开启的中间状态)、停止状态或者初始化的时候的状态
绿色:正常的状态,可以支持请求访问
蓝色:短暂的状态
红色:失败
:合并或者切分的状态
灰色:刚开始的状态
各个序号代表不同的 *** 作场景:
1、Master向region server发起region从offline到openning的状态请求,regionserver如果没有收到,master会尝试重试几次。RegionServer接收到请求后,regin状态变成opening
2、如果Master发起的open请求超过次数,那么无论region server是否已经打开region,master都会命令region server关闭文件,状态变为closing
3、当region server打开region后,会尝试通知master,让他把region状态修改为open,并通知regsion server。这样region才能变为open状态
4、如果region server打开四百,会尝试通知master。master会把region的状态变更为closed,并且尝试去其他的region server打开region
5、如果master尝试几次后,都没有打开region,就会把状态变更为failed_open
6、master通知region server关闭region,如果没有反应,会重试
7、如果region server没有在线,会抛出异常。然后region的状态会变成closing
8、如果region server在线,但是好几次都没响应,就会更新状态为failed_close
9、如果region server收到请求,并且关闭了region,那么会通知master把region状态修改为closed。并且把region分配给其他的server
10、在分配之前,master会先把region从closed状态转换为offline
11、如果region server正在切分region,会通知mastere。master把region状态由open变为splitting,并且把新增两个region的信息,这两个region都是splitting_new状态
12、如果region切分成功,当前的region状态从splitting变成split;新增的两个region状态从splitting_new变成open
13、如果切分失败,状态从splitting回到open,两个region也从splitting_new变成offline
14、如果region server想要合并两个region,那么也会先通知master。master把两个region从open变成merging,然后增加一个新的region,状态为merging_new
15、合并成功,旧的region从merging变为merged,新的region从merging_new变为open
16、如果合并失败,region的状态从merging变回open,新建的一个region状态又变成offline
17、如果管理员通过hbase shell *** 作分配region,master会尝试把失败的状态变成close
baiduX��,�上图是RegionServer数据存储关系图。上文提到,HBase使用MemStore和StoreFile存储对表的更新。数据在更新时首先写入HLog和MemStore。MemStore中的数据是排序的,当MemStore累计到一定阈值时,就会创建一个新的MemStore,并且将老的MemStore添加到Flush队列,由单独的线程Flush到磁盘上,成为一个StoreFile。与此同时,系统会在Zookeeper中记录一个CheckPoint,表示这个时刻之前的数据变更已经持久化了。当系统出现意外时,可能导致MemStore中的数据丢失,此时使用HLog来恢复CheckPoint之后的数据。
StoreFile是只读的,一旦创建后就不可以再修改。因此Hbase的更新其实是不断追加的 *** 作。当一个Store中的StoreFile达到一定阈值后,就会进行一次合并 *** 作,将对同一个key的修改合并到一起,形成一个大的StoreFile。当StoreFile的大小达到一定阈值后,又会对 StoreFile进行切分 *** 作,等分为两个StoreFile。
11 写 *** 作流程
(1) Client通过Zookeeper的调度,向RegionServer发出写数据请求,在Region中写数据。
(2) 数据被写入Region的MemStore,直到MemStore达到预设阈值。
(3) MemStore中的数据被Flush成一个StoreFile。
(4) 随着StoreFile文件的不断增多,当其数量增长到一定阈值后,触发Compact合并 *** 作,将多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除。
(5) StoreFiles通过不断的Compact合并 *** 作,逐步形成越来越大的StoreFile。
(6) 单个StoreFile大小超过一定阈值后,触发Split *** 作,把当前Region Split成2个新的Region。父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上,使得原先1个Region的压力得以分流到2个Region上。
可以看出HBase只有增添数据,所有的更新和删除 *** 作都是在后续的Compact历程中举行的,使得用户的写 *** 作只要进入内存就可以立刻返回,实现了HBase I/O的高性能。
12 读 *** 作流程
(1) Client访问Zookeeper,查找-ROOT-表,获取META表信息。
(2) 从META表查找,获取存放目标数据的Region信息,从而找到对应的RegionServer。
(3) 通过RegionServer获取需要查找的数据。
(4) Regionserver的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据。读请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache。
寻址过程:client–>Zookeeper–>-ROOT-表–>META表–>RegionServer–>Region–>client
21 -ROOT-表结构
HBase的用-ROOT-表来记录META的Region信息,就和META记录用户表的Region信息一模一样。-ROOT-只会有一个Region。
这么一来Client端就需要先去访问-ROOT-表。所以需要知道管理-ROOT-表的RegionServer的地址。这个地址被存在ZooKeeper中。默认的路径是:
/hbase/root-region-server
22 META表结构
23 两个表的关系
HBase的所有Region元数据被存储在META表中21,随着Region的增多,META表中的数据也会增大,并分裂成多个新的Region。为了定位META表中各个Region的位置,把META表中所有Region的元数据保存在-ROOT-表中,最后由Zookeeper记录-ROOT-表的位置信息。所有客户端访问用户数据前,需要首先访问Zookeeper获得-ROOT-的位置,然后访问-ROOT-表获得META表的位置,最后根据META表中的信息确定用户数据存放的位置,如下图所示。
-ROOT-表永远不会被分割,它只有一个Region,这样可以保证最多只需要三次跳转就可以定位任意一个Region。为了加快访问速度,META表的所有Region全部保存在内存中。客户端会将查询过的位置信息缓存起来,且缓存不会主动失效。如果客户端根据缓存信息还访问不到数据,则询问相关META表的Region服务器,试图获取数据的位置,如果还是失败,则询问-ROOT-表相关的META表在哪里。最后,如果前面的信息全部失效,则通过ZooKeeper重新定位Region的信息。所以如果客户端上的缓存全部是失效,则需要进行6次网络来回,才能定位到正确的Region。服务器问题,即服务器故障或正在维护中。
网络供应商跟游戏大区的服务器网络供应商不对口。
浏览器问题,有些浏览器对WEB游戏兼容性不好而导致连接区域服务器失败。
网页临时文件和缓存垃圾文件太多,可能会导致游戏服务器连接失败。
电脑感染病毒或者木马导致区域服务器连接失败。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)