问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何快速搭建HBase分布式NoSQL数据库

发布网友 发布时间:2022-04-25 00:04

我来回答

2个回答

懂视网 时间:2022-04-30 04:35

基于上篇Hadoop2.6集群部署博文:http://lizhenliang.blog.51cto.com/7876557/1661354

接下来部署HBase1.0分布式NoSQL数据库,HBase中涉及到HMaster和HRegionServer两个概念。

(注:以下概念来着百度百科)

HMaster主要负责Table和Region管理工作:

  1. 管理用户对Table的增、删、改、查操作

  2. 管理HRegionServer的负载均衡,调整Region分布

  3. 在Region Split后,负责新Region的分配

  4. 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移

HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据。

HBase工作原理:

  HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个ColumnFamily中,这样最高效。

  HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是SortedMemory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。

  在理解了上述HStore的基本原理后,还必须了解一下HLog的功能,因为上述的HStore在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。每个HRegionServer中都有一个HLog对象,HLog是一个实现WriteAhead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中,HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

HBase高可用实现方式:

  HBase同样分为Active和Standby,把数据存储在Zookeeper,可以启动两个或多个HMaster服务进程,第一个启动的做为HBase活动节点,其余的作为备用节点。如果一台故障,Zookeeper会选择出备用节点成为活动节点,让他接管故障的活动节点任务,保证总有一个Master运行。

二、HBase安装与配置(每台都要配置)

  1.安装配置

  # tar zxvf hbase-1.0.1.1-bin.tar.gz
  # mv hbase-1.0.1.1 /opt
  # vi hbase-env.sh
  export JAVA_HOME=/usr/local/jdk1.7
  export HBASE_MANAGES_ZK=false     #关闭通过内置Zookeeper管理HBase
  # vi hbase-site.xml
  <configuration>
       <!--HBase数据目录位置-->
   <property>
       <name>hbase.rootdir</name>
       <value>hdfs://hcluster/hbase</value>
   </property>
       <!--启用分布式集群-->
   <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
   </property>
       <!--默认HMaster HTTP访问端口-->
   <property>
       <name>hbase.master.info.port</name>
       <value>16010</value>
    </property>
       <!--默认HRegionServer HTTP访问端口-->
    <property>
       <name>hbase.regionserver.info.port</name>
       <value>16030</value>
    </property>
       <!--不使用默认内置的,配置独立的ZK集群地址-->
   <property>
       <name>hbase.zookeeper.quorum</name>
       <value>HSlave0,HSlave1,HSlave2</value>
   </property>
  </configuration>
  # vi regionservers    
  HSlave0
  HSlave1
  HSlave2

  2. 配置系统变量

  # vi /etc/profile
  HBASE_HOME=/opt/hbase-1.0.1.1
  PATH=$PATH:$HBASE_HOME/bin
  export HBASE_HOME PATH
  # source /etc/profile

  3. 启动HBase

  分别在HMaster0和HMaster1启动hmaster:

  # start-hbase.sh

  分别在 HSlave0/1/2启动HRegionServer:

  # hbase-daemon.sh start regionserver

  4. 检查是否启动成功
  在主备节点查看有HMaster进程说明成功:

  [root@HMaster0 ~]# jps
  2615 DFSZKFailoverController
  30027 ResourceManager
  29656 NameNode
  2841 HMaster
  8448 Jps

  在RegionServer节点查看有HRegionServer进程说明成功:

  [root@HSlave0 ~]# jps
  11391 NodeManager
  11213 DataNode
  11298 JournalNode
  10934 QuorumPeerMain
  12571 HRegionServer
  7005 Jps

通过访问WEB页面查看:

技术分享

  5. hbase shell常用操作命令

  根据下面tb1表的结构来演示hbase增删改查用法:

nameinfoaddress
sexage
zhangsan
22manbeijing
lisi23woman  shanghai 

  # hbase shell  #进入字符页面

  5.1 创建表tb1,并有两个列族name、info和address,info列族下有sex和age列

  hbase(main):024:0> create ‘tb1‘,‘name‘,‘info‘,‘address‘

  5.2 查看表结构

  hbase(main):025:0> describe ‘tb1‘

  5.3 列出所有表

  hbase(main):025:0> list

  5.4 插入几条记录

  hbase(main):028:0> put ‘tb1‘,‘zhangsan‘,‘info:sex‘,‘22‘
  hbase(main):039:0> put ‘tb1‘,‘zhangsan‘,‘info:age‘,‘man‘
  hbase(main):031:0> put ‘tb1‘,‘zhangsan‘,‘address‘,‘beijing‘
  hbase(main):046:0> put ‘tb1‘,‘lisi‘,‘info:age‘,‘woman‘
  hbase(main):047:0> put ‘tb1‘,‘lisi‘,‘info:sex‘,‘23‘
  hbase(main):048:0> put ‘tb1‘,‘lisi‘,‘address‘,‘shanghai‘

  5.5 查看所有记录(全表扫描)

 hbase(main):040:0> scan ‘tb1‘
 ROW              COLUMN+CELL                                                       
 zhangsan                column=address:,timestamp=1435129009088,value=beijing                                              
 zhangsan        column=info:age,timestamp=1435129054098, value=man                                            
 zhangsan        column=info:sex,timestamp=1435128714392, value=22

  说明:

  ROW:行,用来检索记录的主键。

  COLUMN family:列族,是表的一部分,必须在创建表时定义,可以看到列名是以列族作为前缀,一个列族可以有多个列(column)。

  CELL:存储单位,存储实际数据,也就是所看到的value,cell中没有数据类型,全部是字节码形式存储。

  timestamp:时间戳,hbase写时自动赋值,为当前系统时间,精确到毫秒。如果每个cell保存同一份数据多个版本时,可通过时间戳来索引版本。

  5.6 统计表中记录总数

  hbase(main):050:0> count ‘tb1‘
  2 row(s) in 0.0190 seconds
 
  => 2

  5.7 查看表中某条记录

  hbase(main):054:0> get ‘tb1‘,‘zhangsan‘
  hbase(main):054:0> get ‘tb1‘,‘zhangsan‘
  COLUMN                  CELL                                                           
   address:               timestamp=1435129096397,value=beijing                            
   info:age               timestamp=1435129054098,value=man                                
   info:sex               timestamp=1435128714392,value=22

  5.8 查看表中某行某列族中的所有数据

  hbase(main):055:0> get ‘tb1‘,‘zhangsan‘,‘info‘
  COLUMN                  CELL                                                             
   info:age               timestamp=1435129054098,value=man                                
   info:sex               timestamp=1435128714392,value=22

  5.9 更新一条记录(覆盖)

  hbase(main):063:0> put ‘tb1‘,‘zhangsan‘,‘info:sex‘,‘23‘
  0 row(s) in 0.0080 seconds

  6.0 给lisi增加一个comment字段

  hbase(main):070:0> incr ‘tb1‘,‘lisi‘,‘info:comment‘

  6.1 删除某行某列族数据

  hbase(main):065:0> delete ‘tb1‘,‘zhangsan‘,‘info:sex‘

  6.2 删除某行所有记录

  hbase(main):067:0> deleteall ‘tb1‘,‘zhangsan‘

  6.3 删除一个表

  hbase(main):072:0> disable ‘tb1‘  #先禁用
  hbase(main):073:0> drop ‘tb1‘   #再删除


本文出自 ““企鹅”那点事儿” 博客,请务必保留此出处http://lizhenliang.blog.51cto.com/7876557/1665130

HBase1.0分布式NoSQL数据库部署及使用

标签:hadoop+hbase hbase1.0安装 hbase shell

热心网友 时间:2022-04-30 01:43

像MongoDB, Cassandra, HBase, DynamoDB, 和
Riak这些NoSQL缺乏传统的原子事务机制,所谓原子事务机制是可以保证一系列写操作要么全部完成,要么全部不会完成,不会发生只完成一系列中一两个
写操作;因为数据库不提供这种事务机制支持,开发者需要自己编写代码来确保一系列写操作的事务机制,比较复杂和测试。

这些NoSQL数据库不提供事务机制原因在于其分布式特点,一系列写操作中访问的数据可能位于不同的分区服务器,这样的事务就变成分布式事务,在分
布式事务中实现原子性需要彼此协调,而协调是耗费时间的,每台机器在一个大事务过程中必须依次确认,这就需要一种协议确保一个事务中没有任何一台机器写操
作失败。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
墨兰烂根是怎么回事 墨兰烂根后如何养护 谢绝推销参观拍照摄影看房预约 看房子为什么不让拍照 执业药师各科考试时间分配 执业药师考试倒计时100天,怎样备考最有效 中药执业药师怎么备考? 手机拒绝所有来电了怎么设置回来 美国狼人在伦敦演职员表 美国狼人在伦敦幕后制作 美国狼人在伦敦制作发行 安徽省蚌埠市解放一路淮上人家小区物业隶属哪个地方管? 电子产品中猫是什么 四级准考证怎么打印 公务员省考面试的准考证都是网上打印吗?还是现场领取? 著名心理学家皮亚杰把个体认知发展分为四个基本阶段: 火锅店老板要求员工站在老板的位置写三条缺点优点我不知道怎么写三条... 新生求助,四级准考证怎么打印 蚌埠市核酸检测人员有补贴吗 电脑的”猫“是什么意思? 火锅店老板要求员工站在老板的位置写三条缺点优点不知道怎么写? 省考打印准考证需要一些什么东西??? 心理学 皮亚杰把学前儿童认知的发展分为哪几个阶段?每个阶段的特点是什... 谁知道电脑的猫在哪啊,怎么打开 截止2010年年底,安徽省有多少软件企业? 学生会两个优点三个缺点四个憧憬怎么写? 皮亚杰四阶段口诀记忆是什么? 说说你的三个缺点和优点 公*错过了准考证打印期限,求补救办法,有谁知道“有关部门”一般是怎么处理这种情况的! 科目四要打印准考证吗 宽带猫是什么东西? 皮亚杰将儿童智慧的发展分为哪四个时期 99税优是干什么的? 网上怎么打印准考证 皮亚杰把个体的认知发展分为那几个阶段?每个阶段各有什么特点? 自己怎么搭建简易鸡舍? 12123这个app准考证在哪里打印?科四的,急~ 有人清楚武汉天源环保的采购模式吗? 有没有不要钱的定位系统 四个阶段是哪四个阶段? 科目四没有准考证怎么办 三米长十七米高五米宽h型钢搭建房子怎么搭 安徽蚌埠怀远万福农民工返乡创业有什么补贴 网上预约了科目四去哪里拿准考证 Mocha Pro要钱吗 怎样搭建自己的代理服务器 怎么算出当地职工的月平均工资? 我老是想知道我女朋友每时每刻在哪里,有什么定位软件可以知道,求真的,不骗人,不花钱的,求好心人帮助 如何自己搭建vps把链接中转出去 99税优公司正规吗? 有好使不花钱不坑爹好使的强大手机GPS定位软件吗?求推荐!最好隐蔽点的!