hbase安装

HBase的安装

本篇介绍二种HBase的装置格局:本地安装方式和伪分布式安装方式。

设置的前提条件是现已成功安装了hadoop,而且hadoop的版本要和hbase的本子相相称。

本身快要安装的hbase是hbase-0.九四.1一版本,供给的hadoop是hadoop-一.二.1版本。

hbase下载地址:http://mirror.bit.edu.cn/apache/hbase/hbase-0.94.11/

将下载的hbase-0.玖四.1一解压到对应的目录,如/usr/hbase-0.九四.11

将hbase-0.90.四重命名称为hbase

mv hbase-0.94.11 hbase

第一需求将hbase下的bin目录添加到系统的path中,修改/etc/profile,添加如下的剧情:

export  PATH=$PATH:/usr/hbase/bin

 

1.单机安装  修改hbase下的conf目录下的安插文件hbase-env.sh

第二,修改hbase-env.sh中的如下属性:

export JAVA_HOME=/usr/java/jdk1.6

export HBASE_MANAGES_ZK=true  //此配置信息,设置由hbase自己管理zookeeper,不需要单独的zookeeper。

二.伪分布式安装  修改hbase-0.90.肆下的conf目录下的配置文件hbase-env.sh和hbase-site.xml

率先,修改hbase-env.sh中的如下属性:

export JAVA_HOME=/usr/java/jdk1.6 

export HBASE_CLASSPATH=/usr/hadoop/conf 

export HBASE_MANAGES_ZK=true

 

然后,修改hbase-site.xml文件

<configuration>
    <property>
      <name>hbase.rootdir</name>
     <value>hdfs://192.168.70.130:9000/hbase</value> >//此属性要根据自己的hadoop的配置信息进行相应的修改
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

</configuration>

成就以上操作,就足以健康运维Hbase了,运行顺序:先运行Hadoop——>再开发银行Hbase,关闭顺序:先关闭Hbase——>再关闭Hadoop。

 

先是运维hadoop,(假诺hadoop已经家常便饭运转能够不再运维,直接查看进度是还是不是科学,假设经过不科学,那么必须再一次调节和测试hadoop确定保证hadoop平常运营后再开行hbase)

start-all.sh    //启动hadoop
jps                //查看进程

 

2564 SecondaryNameNode 
2391 DataNode
2808 TaskTracker 
2645 JobTracker 
4581 Jps 
2198 NameNode

 

启动hbase:

start-hbase.sh    

 

jps 查看:

2564 SecondaryNameNode 
2391 DataNode 
4767 HQuorumPeer 
2808 TaskTracker 
2645 JobTracker 
5118 Jps 
4998 HRegionServer 
4821 HMaster 
2198 NameNode

能够看出,HBase的相干进程早已起步了

hbase shell 

     

进入shell模式

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.12, r1524863, Fri Sep 20 00:25:45 UTC 2013

hbase(main):001:0> 

停止hbase
要是在操作Hbase的进度中发生错误,能够透过hbase安装主目录下的logs子目录查看错误原因

先停止hbase

stop-hbase.sh

再停止hadoop

stop-all.sh

 

 

 

荒谬解决办法:

一.报错如下:
localhost:  Exception in thread “main”
org.apache.hadoop.ipc.GL450PC$VersionMismatch: Protocol 
org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client
= 4二,  server =  四1) 所以假使蒙受上述错误,就透过轮换jar包化解。(貌似选择新本子的hadoop 和
hbase不汇合世那种指鹿为马

替换Hbase中的jar包
需要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar 
替换掉{HBASE_HOME}/lib目录下的hadoop-1.二.一-append-r十564玖七.jar 
。如若不替换jar文件Hbase运行时会因为hadoop和Hbase的客户端协议不均等而造成HMaster运维很是。

 

     

 

  事务的着力是锁和产出,采纳同步控制的主意确认保障并发的情景下质量尽恐怕高,且易于理解。

     

1、同步阻塞难点。执行进程中,全数出席节点都以事情阻塞型的。当插足者占有公共能源时,别的第一方节点访问公共财富不得不处于阻塞状态

     

2、排它锁

     

PreCommit阶段:协调者依据参与者的反馈情形来控制是还是不是足以记性事务的PreCommit操作。依照响应境况,有以下二种或然:

     

   

     

     

     

 

     

     

一.备选阶段:事务协调者(事务管理器)给各种到场者(能源管理器)发送Prepare音讯,每一种插手者依旧直接回到战败,要么在地头执行工作,写本地的redo和undo日志,但不付出

在排队法中,在装有业务单元的保有的读事务,读写作业都是串行的不二秘籍来拓展,那种方案的落到实处简单,但是并发性最差。

   

  事务单元是经过Begin-Traction,然后Commit(Begin-Traction、Commit和Rollback之间具有针对数据的写入、读取的操作都应有加上同步访问),Begin和Commit之间就是多个体协会同的业务单元。例如,鲍勃给Smith十0块钱正是3个作业单元,这几个进度中有为数不少步操作,具体如下图所示;但对事情以来,仅是一个转化的操作。

 

     

 

图片 1 

  分布式事务是指会提到到操作五个数据库的工作。其实正是将对同一库事务的定义扩张到了对四个库的作业。目标是为着确定保证分布式系统中的数据一致性。分布式事务处理的要紧是必须有壹种格局能够领略事情在其余地点所做的享有动作,提交或回滚事务的决定必须发生统一的结果(全部付给或任何回滚),要想清楚分布式事务,大家须要先介绍一下两阶段提交协议。

 

  总计机的那种特征引出了2个标题:当四人去读、算、写操作时,假若不加访问控制,系统势必会发生争持。而工作约等于在读、算、写操作之外扩展了联合的模块,进而保障唯有一个线程进入工作个中,而其余线程不会进入。那样的艺术其实便是大家提的作业。

     

     

  例如在倒车进度中,全体人只可以看到二种处境:先导时,A有钱,B没钱;截止时,B有钱,A没钱,而中等A减掉钱,B尚未加上钱的状态被锁隐藏掉了,那个操作正是数据库中处监护人务的最专业的方法。如上海教室所示:事务中的Trx二(JoeLock)与其余工作不相干,由此得以并行执行;Trx一要求Lock五个数据鲍勃lock和史密斯lock,而Trx三同样要求Lock那多少个数据,由此Trx叁必须等待,且等待在Boblock上;Joe事务会先甘休,Trx三会等到Trx一完毕后才会起始。

  当八个账户都在开始展览转向操作时,每一种操作都提到Smith账户,全数的政工都会排队,形成一组织工作作单元。
  事务单元之间的Happen-Before关系中的各类也许性:读写、写读、读读、写写。全部事情之间的涉及都足以抽象成这几种之1,来对号入座未来拥有的作业逻辑处理。在此基础之上,要求用最快的快慢处理八个事情单元之间的涉嫌,同时仍是可以保持那多种操作的逻辑顺序。

 

     

     

1、排队法

  • 万1协调者从拥有的加入者获得的汇报都以Yes响应,那么就会履行工作的预执行。

  • 只要有其余二个参加者向协调者发送了No响应,或许等待超时过后,协调者都未曾收受参加者的响应,那么就实施工作的刹车。

 

3、读写锁

所谓的四个阶段是指:第三阶段:预备阶段(投票阶段)和第一等级:交给阶段(执行等级)

     

图片 2

  三PC把二PC的备选阶段再度1分为二,这样三阶段提交就有CanCommit、PreCommit、DoCommit多个等级。

由于2品级提交存在着诸就如步阻塞、单点难点等缺陷,所以,斟酌者们在二阶段交付的底蕴上做了创新,提议了三品级提交。

     

       

     

     

     

     

四、MVCC(多本子出现控制)

1、事务的本质

   

     

     

doCommit阶段:该阶段展开真正的工作提交

 2、单机事务常见处理方法

图片 3

  计算机能够简单的接头为三个正规的打字机,即使看起来总结机能够并行处理很多事情,但骨子里各个CPU单位时间内只好做一件事,要么读取数据、要么计算数据、要么写入数据,全部的天职都得以当作那三件事的聚众。

图片 4 

     

     

 

     

图片 5 

  第3种完毕格局只在数据库保存最新版本的数码,不过会在选用undo时动态重构旧版本数据,那种办法被Oracle和MySQL/InnoDB使用

     

叁、分布式事务的拍卖方案

  所谓事务,它是一个操作集合,这么些操作照旧都实施,要么都不履行,它是七个不可分割的工作单位。比如网上购票,要么你买票成功,余票减一张;
要么你购票败北,余票的数码不变。那就须要定票和余票减弱那一个不一样的操作必须放在1块儿,成为一个整机的逻辑链,那样就构成了2个政工。

1、事务简介

  两等级提交协议(Two-phase
Commit,二PC)常常被用来达成分布式事务。一般分为协调器和多少业务执行者二种剧中人物。这里的工作执行者正是具体的数据库,抽象点能够说是足以决定给数据库的先后。
协调器能够和事务执行器在壹台机械上。

  MVCC的面目是Copy On
Write,也正是历次写都以以重新先导3个新的版本的措施写入数据,由此,数据库中也就富含了前头的有着版本。在数量读的进程中,先申请2个本子号,假如该版本号小高满堂在写入的本子号,则数据肯定能够查询到,无需等到新本子完全写完即可回到查询结果。这种格局可以在读读不打断的前提下,完毕读写/写读不封堵,尽大概保障拥有的读操作并行,而写操作串行。

  排它锁是指向同一个事务单元的数目开始展览访问控制。在上述讲解的排队法中,全部事务单元均以单线程的点子展开操作,不过多少场景不切合用单线程操作,能够使用排他锁的法门来神速隔开并发读写作业。数据库中有1些政工单元是共享的,如图中的事务单元1是共享的,事务单元2/三共享数据;针对工作单元2/三共享数据的有所读写Block住,事务单元一单独用一个锁来支配,用这种艺术成功系统的访问控制。

     

     

图片 6

万1是3个只读的业务,例如只对数码举办询问操作,在该进度中数据肯定不被修改,因而四个查询操作能够并行执行,因而1种针对读读场景的优化任其自流发生——读写锁。读写锁的主干是在数次读的操作中,同时同意七个读者来访问共享财富,升高并发性。

   

   

  事务提起来很简短,正是BEGIN
TRAN,COMMIT TRAN,ROLLBACK TRAN
多少个语句,可是事情的里边贯彻原理是卓殊复杂的,而分布式事务由于供给跨越七个服务器,操作四个数据库,复杂度比单机事务要复杂的多,本文尝试通过锁和产出控制的上课,逐层抽丝剥茧,由浅及深将分布式事务的贯彻原理展现给我们。

图片 7 

  在分布式系统中,各样节点尽管能够明白本身的操作的打响还是退步,却无力回天掌握其余节点的操作的功成名就或退步。当三个作业当先多少个节点时,为了保持工作的ACID天性,需求引进一个作为协调者的零件来统一掌握控制全数节点(称作插足者)。

     

图片 8

     

     

   

     

二、叁PC(三品级提交)

  事务处理中最器重也是最简易的方案是排队法,单线程地拍卖一群数据。

三、数据不平等。在二阶段付出的阶段二中,当协调者向参加者发送commit请求之后,发生了一些互联网尤其大概在发送commit请求进程中协调者爆发了故障,那回导致只有局地到场者接受到了commit请求。而在那一部分参预者收取commit请求之后就会举行commit操作。不过其余部分未接受commit请求的机械则无从履行工作提交。于是壹切分布式系统便出现了数据部壹致性的情景。

  Two Phase
Lock(二PL)是数据库中13分关键的叁个概念。数据库操作Insert、Update、Delete都以先读再写的操作。数据库利用那一个操作的性状,在每三次询问进程中,只要查到数据,就会在该多少上加锁。理论上,全数被读取的数码都已加锁,不会再被别的人读到,也正是说对数码举办的中级操作意况对全体人都不可知,当有着中间状态实现后,提交操作时,解开锁,此时多少对具备系统可知,

     

一、二PC(两阶段提交)

     

2、事务单元

  第3种达成方式是将数据记录的八个本子保存在数据库中,当这么些差别版本数据不再须求时,垃圾收集器回收那一个记录。这些点子被PostgreSQL和Firebird/Interbase接纳,SQL
Server使用的切近机制,所例外的是旧版本数码不是保留在数据库中,而保留在分歧于主数据库的其余四个数据库tempdb中/

图片 9

三、两阶段锁协议

二、单点故障。由于协调者的要紧,壹旦协调者爆发故障。参加者会一直不通下去。尤其在第壹等级,协调者产生故障,那么全数的参加者还都处在锁定事务财富的气象中,而望洋兴叹继续实现业务操作。(要是是协调者挂掉,能够另行大选2个协调者,可是不能够解决因为协调者宕机导致的加入者处于阻塞状态的难题)

  相对于2PC,3PC首要化解的单点故障难点,并缩减堵塞,因为若是参加者不能够即时收到来自行车运动组织调者的音信之后,他会暗中同意执行commit。而不会一向有所事务能源并处于阻塞状态。不过那种体制也会招致数据1致性难题,因为,由于网络原因,协调者发送的abort响应未有立时被加入者收取到,那么加入者在守候超时从此执行了commit操作。这样就和其他收到abort命令并履行回滚的参预者之间存在数量不一样等的情事。

   

   

     

     

单机事务的广大处理措施有排队法、排他锁、读写锁、MVCC等情势,上边来挨家挨户分析。

  MVCC的三种不相同达成格局:

4、二品级不可能缓解的难点:协调者再发生commit音讯随后宕机,而唯一接收到那条音信的出席者同时也宕机了。那么即便协调者通过推举重协会议发生了新的协调者,那条工作的状态也是不明确的,没人知道事情是或不是被已经付出。

     

图片 10

2品级提交看起来实在能够提供原子性的操作,可是不幸的是,二等级提交依然有多少个缺点的:

   

     

     

   

            

 

CanCommit阶段:三PC的CanCommit阶段实际和二PC的预备阶段很像。协调者向参与者发送commit请求,参与者假诺能够付出就赶回Yes响应,不然重回No响应。

二.付出阶段:假使协调者收到了加入者的败诉消息还是逾期,直接给各个参预者发送回滚(Rollback)消息;否则,发送提交(Commit)音信;参预者依据协调者的一声令下执行提交恐怕回滚操作,释放具有事务处理进度中运用的锁能源。(注意:必须在最终阶段释放锁财富)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注