是什么

Hbase是一个非关系型的数据库

体系架构

client: 客户端
zookeeper
  • 监控hmaster的状态,保证有且仅有一个活跃的hmaster,达到高可用.
  • 存储meta表的寻址入口
  • 感知regionserver的上下线信息,通知hmaster
Hmaster
  • 为regionserver分配region
  • 复杂regionserver的负载聚合
regionserver
  • 管理本机的region
  • 切分运行时变大的region
Hlog

记录hbase的操作,优先写入Hlog

region

一个表的一部分.

安装

以分布式安装为例

[root@mypc01 ~]# tar -zxvf hbase-1.2.1-bin.tar.gz -C /usr/local/
[root@mypc01 ~]# cd /usr/local/
[root@mypc01 local]# mv hbase-1.2.1 hbase
[root@mypc01 local]# vi /etc/profile
.......省略.......
#hbase environment
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH[root@mypc01 local]# source  /etc/profile
[root@mypc01 local]# hbase version

禁用hbase自带zookeeper,用自己搭建的,需要修改hbase-env.sh文件

[root@mypc01 local]# vi $HBASE_HOME/conf/hbase-env.sh#找到下面内容,解开注释,添加具体路径# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/local/jdk# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false       #禁止内置zookeeper

修改hbase-site.xml
主要修改一下hbase在hdfs上的存储路径以及zookeeper的安装位置

<configuration><!-- 指定hbase在HDFS上存储的路径 --><property><name>hbase.rootdir</name><value>hdfs://mypc01:8020/hbase</value></property><!-- 指定hbase是分布式的 --><property><name>hbase.cluster.distributed</name><value>true</value></property><!-- 指定zk的地址,多个用“,”分割 --><property><name>hbase.zookeeper.quorum</name><value>mypc01:2181,mypc02:2181,mypc03:2181</value></property><!--将属性hbase.unsafe.stream.capability.enforce 改为true --><property><name>hbase.unsafe.stream.capability.enforce</name><value>true</value></property>
</configuration>

配置regionserver所在信息,如下表明有3台regionserver

[root@mypc01]#  vi $HBASE_HOME/conf/regionservers删除localhost
添加:mypc01mypc02mypc03

配置备用hmaster,为了保证宕机时可以有备用

[root@mypc01 local]#  cd $HBASE_HOME/conf/
[root@mypc01 conf]#  echo "mypc02">> backup-masters

拷贝hadoop的配置文件到hbase

[root@mypc01 local]#  cd $HADOOP_HOME/etc/hadoop/
[root@mypc01 hadoop]#  cp core-site.xml hdfs-site.xml $HBASE_HOME/conf/

分发到其他机器

[root@mypc01 local]# scp -r /usr/local/hbase mypc02:/usr/local
[root@mypc01 local]# scp -r /usr/local/hbase mypc03:/usr/local
[root@mypc01 local]# scp /etc/profile mypc02:/etc/
[root@mypc01 local]# scp /etc/profile mypc03:/etc/

启动hbase

需首先启动hdfs和Zookeeper,因为hbase用到这个.
其中HRegionServer与HMaster为hbase相关进程

[root@mypc01 /]# start-hbase.sh
[root@mypc01 /]# jps
993 Application
3795 Jps
3479 HMaster
991 Application
3631 HRegionServer

hbase客户端

hbase shell

之后会进入hbase的命令行.

hbaseshell命令

Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.COMMAND GROUPS:Group name: generalCommands: status, table_help, version, whoamiGroup name: ddlCommands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disa      bled, is_enabled, list, locate_region, show_filtersGroup name: namespaceCommands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tablesGroup name: dmlCommands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserveGroup name: toolsCommands: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, com      pact, compact_mob, compact_rs, flush, major_compact, major_compact_mob, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split,       trace, unassign, wal_roll, zk_dumpGroup name: replicationCommands: add_peer, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, get_peer_config, list_pe      er_configs, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs, update_peer_configGroup name: snapshotsCommands: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshotGroup name: configurationCommands: update_all_config, update_configGroup name: quotasCommands: list_quotas, set_quotaGroup name: securityCommands: grant, list_security_capabilities, revoke, user_permissionGroup name: proceduresCommands: abort_procedure, list_proceduresGroup name: visibility labelsCommands: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibilityGroup name: rsgroupCommands: add_rsgroup, balance_rsgroup, get_rsgroup, get_server_rsgroup, get_table_rsgroup, list_rsgroups, move_servers_rsgroup, move_tables_rsgro      up, remove_rsgroup

table相关操作

- 直接创建
#ns3 是namespace,emp是表,base_info是列簇
hbase(main):037:0> create 'ns3:emp','base_info'
#shell界面会有结果提示,如下,表示操作的结果创建了一个叫做emp的表
=> Hbase::Table - ns3:emphbase(main):036:0> t = create 'ns3:employee','base_info'#创建多个列族名
hbase(main):040:0> create 'ns3:emp1','f1','f2','f3'#创建表时同时指定列族属性
hbase(main):043:0> create 'ns3:emp2',{NAME=>'f1',VERSIONS'10=>3,TTL=>2592000,BLOCKCACHE=>TRUE}#创建表同时指定分片hbase(main):050:0> create 'ns3:emp=3', 'f1', SPLITS => ['10', '20', '30', '40']

有了表就要存数据

  hbase> put 'ns1:t1', 'r1', 'c1', 'value'hbase> put 't1', 'r1', 'c1', 'value'hbase> put 't1', 'r1', 'c1', 'value', ts1hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

之后查看数据有两种方式 get和scan

  hbase> get 'ns1:t1', 'r1'hbase> get 't1', 'r1'hbase> get 't1', 'r1', {TIMERANGE => [ts1, ts2]}hbase> get 't1', 'r1', {COLUMN => 'c1'}hbase> get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']}hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}hbase> get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}hbase> get 't1', 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}hbase> get 't1', 'r1', 'c1'hbase> get 't1', 'r1', 'c1', 'c2'hbase> get 't1', 'r1', ['c1', 'c2']hbase> get 't1', 'r1', {COLUMN => 'c1', ATTRIBUTES => {'mykey'=>'myvalue'}}hbase> get 't1', 'r1', {COLUMN => 'c1', AUTHORIZATIONS => ['PRIVATE','SECRET']}hbase> get 't1', 'r1', {CONSISTENCY => 'TIMELINE'}hbase> get 't1', 'r1', {CONSISTENCY => 'TIMELINE', REGION_REPLICA_ID => 1}

Hbase Java API

新建maven项目导入依赖

<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.1</version>
</dependency>

连接测试

public class ConnectionDemo {public static void main(String[] args) throws IOException {// 1、获取配置对象Configuration conf = new Configuration();// 2、配置zookeeper的参数conf.set("hbase.zookeeper.quorum", "mypc01:2181,mypc02:2181,mypc03:2181");// 3、获取连接对象Connection connection = ConnectionFactory.createConnection(conf);// 4、获取一个DDL操作的hbase客户端AdminAdmin admin = connection.getAdmin();//5 、创建一个namespace的描述器NamespaceDescriptor descriptor = NamespaceDescriptor.create("ns3").build();//6. 客户端进行提交创建admin.createNamespace(descriptor);//7. 关闭操作connection.close();admin.close();}
}

Hbase体系架构与安装相关推荐

  1. HBase体系架构说明

    HBase体系架构说明! client:两种--Hbase shell 命令行接口 JavaAPI client访问Region不能直接访问,首先client需要先连接到zookeeper,zooke ...

  2. 达梦数据库——DM8安装操作及体系架构介绍

    文章目录 一.数据库行业的发展趋势 二.国产数据库的现状 1.自主研发 三.达梦公司的介绍和达梦产品 1.达梦公司的由来 2.达梦公司的产品线 四.DM8的安装及实例的管理 1.软件信息收集 2.硬件 ...

  3. 2021年大数据HBase(七):Hbase的架构!【建议收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hbase的架构 一.Client 二.Master ...

  4. Hadoop简介和体系架构

    目录 2.1 Hadoop简介 2.1.1 Hadoop由来 2.1.2 Hadoop发展历程 2.1.3 Hadoop生态系统 2.2 Hadoop的体系架构 2.2.1 分布式文件系统HDFS 2 ...

  5. [翻译]No.9352 SharePoint Pages(1)之SharePoint页面体系架构

    [开篇]最近一段时间在研究SharePoint技术,在内网建设了一个门户的原型,做一些尝试.由于一些需求要新建一些功能页.开始使用SharePoint制作页面,搞了半天才明白原来内容页不支持内联代码, ...

  6. 如何构建 FinTech 科学反欺诈体系|架构师实践日

    微众圈 > 微信资讯 > 科技 > 文章 如何构建 FinTech 科学反欺诈体系|架构师实践日 摘自公众号:七牛云发布时间:2017-4-11 21:28:33 FinTech,即 ...

  7. 【转】BI 入门: 体系架构及相关技术

    (1) 老板,你要这么多数据做什么?         假如你是一个商品零售公司的老板.     你的公司很先进,已经实现了业务信息化,每一笔销售单据都保存在数据库中,日积月累,已经保存了十余年的销售数 ...

  8. linux操作系统的体系架构,linux操作系统的体系架构_linux操作系统的关机指令

    linux操作系统的体系架构 Linux系统结构一般有3个主要部分:内核kernel.命令解释层Shell或其他操作环境.实用工具. 1.Linux内核 内核是系统的核心,是运行程序和管理磁盘.打印机 ...

  9. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

最新文章

  1. Python核心编程学习日记之错误处理
  2. CVPR 2019 开源论文 | 基于翻译向量的图像翻译
  3. JavaScript 是传值调用还是传引用调用?
  4. centos7 mysql启动后端口_centos7 修改mysql5.7默认端口后启动异常
  5. android面试service,Android面试,与Service交互方式(4)
  6. Pytorch+opencv 手势识别
  7. 蓝桥杯 BASIC-19 基础练习 完美的代价
  8. [转载] [转载] python中的Numpy库入门
  9. Java第四次作业,面向对象高级特性(继承和多态)
  10. 机器学习实战(SVM)
  11. 【毕业设计】基于stm32的语音识别 - 单片机 嵌入式 物联网 语音识别
  12. 例3.1 有人用温度计测量出用华氏法表示的温度,今要求把它转换为以摄氏法表示的温度。
  13. 8产权界定_保护与限制
  14. 超市进销存管理系统(C#+SQL Server实现)C#窗体应用、数据库应用,生成可执行安装包程序
  15. HP11(HP其他喷头也可) 喷头程序开发项目外包
  16. 逆序输出数组,将给定数组逆序输出
  17. 基于51单片机篮球计分器proteus仿真设计
  18. 华为路由器利用web管理界面备份
  19. c语言sizeof char,sizeof(char),sizeof(char*),sizeof(char[4]),
  20. 完美解决Setup has encountered an error(system file time out of sync,error code is 800b0101)

热门文章

  1. html实体编码_为什么涨薪的永远不是你?你的编码姿势对了吗?
  2. Linux 根据服务名字找安装路径
  3. 埃氏筛法求质数(例如:200以内的质数)
  4. php mysql 读取数据_PHP MySQL 读取数据
  5. Java常用工具类StringUtils的常用方法
  6. GlobalAuthenticationConfigurerAdapter.class 整合activiti 工作流报错
  7. espresso java_java – Espresso单击菜单项
  8. 安装erlang没有bin文件夹_Windows10有关jdk13.0.1的详细安装过程
  9. oracle dba_hist tablepsace,oracle数据库dba_hist等视图中的Delta相关字段介绍
  10. python读取数据库数据类型_从SQL数据库读取二进制数据(图像数据类型)并将其膨胀,Matlab vs.Python...