hbase集群部署与测试(2017)

部署hbase的集群
首先我们要需要一个hadoop集群、至少要有一个hdfs的集群和zookeeper集群
用HA集群的可用性号,由于做实验,没必要这么多集群,那么就不用HA集群
第一步看一下hdfs是否正常
启动hdfs
start-dfs.sh
启动zookeeper看是否正常(每台机器上都手动启动zookeeper)
./zkServer.sh start
检查zookeeper的工作状态
./zkServer.sh status
我们可以输入
hdfs dfsadmin -report 来查看集群的工作信息
前期工作准备好了,接下来就是搭建hbase
首先上传hbase的安装包(注意:这里hbase的安装包必须要和之前安装的hadoop的安装包匹配要支持你所安装的hadoop)
我安装的hadoop是2系类的所有下载hbase时也要下载支持2系类的

上传到主机上目录上
解压 tar -zxvf hbase文件名 -C app/

在运行的机器上docs文档可以删除来节省空间
rm -rf docs/

我们要到conf里面去修改配置文件
cd conf/
修改3个配置文件 hbase-env.sh hbase-site.xml regionservers
首先我们修改hbase-env.sh
vi hbase-env.sh
修改export JAVA_HOME=/usr/local/apps/jdk1.8.0_121修改成你安装的jdk的安装目录
在另外一台机器上执行echo $JAVA_HOME 找到jdk的安装目录。
接下来我们找一下export HBASE_MANAGES_ZK=true(在键盘上按ESC:/ZK 就可以自动找到)
export HBASE_MANAGES_ZK=true(告诉hbase他内部要不要管理zookeeper的管理实例hbase内部自己自带的zookeeper 因为hadoop组件里面各种各种的组件都需要zookeeper,在这里我们要把export HBASE_MANAGES_ZK=false,不要让hbase管理自己的zookeeper,如果hbase停掉了,他不会去把我们的zookeeper去关掉)

接下来修改hbase-site.xml(最主要的配置文件)
vi hbase-site.xml
<configuration>

hbase.rootdir
hdfs://hadoop-server-00:9000/hbase

hbase.cluster.distributed
true

hbase.zookeeper.quorum
hadoop-server-00:2181,hadoop-server-01:2181,hadoop-server-02:2181

接下来修改regionservers
vi regionservers
修改为:
hadoop-server-00
hadoop-server-01
hadoop-server-02
保存退出
注意:我们要把hadoop中的hdfs-site.xml 和 core-site.xml 配置文件放到hbase/conf下
pwd
/usr/local/apps/hbase-0.98.24-hadoop2/conf
cp /usr/local/apps/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./
cp /usr/local/apps/hadoop-2.6.5/etc/hadoop/core-site.xml ./
接下来我们要把在00上配置的hbase信息拷贝到01 02机器上
[root@hadoop-server-00 apps]# scp -r hbase-0.98.24-hadoop2/ hadoop-server-01:/usr/local/apps/
[root@hadoop-server-00 apps]# scp -r hbase-0.98.24-hadoop2/ hadoop-server-02:/usr/local/apps/
启动hbase前必须保证hdfs的集群和zookeeper集群正常工作
启动hbase,首先看一下bin目录里面有上面脚本
cd bin/
在bin目录下启动hbase
./start-hbase.sh(在那台机器上启动,你就在那台机器上出现Hmaster 其他的集群机器出现QuorumPeerMain)
我们要在集群中实现高可用性(HA)就要再启动一个Hmaster,那么随便在那台机器上都可以,只要你安装了hbase的安装包
随便在那台机器上却换到bin目录下看到hbase-daemon.sh
./hbase-daemon.sh statrt master(这样就会有两台Hmaster)
**hbase命令行客户端简单使用**
在hbase的安装包bin目录下有一个hbase
./hbase shell
启动一个shell这样的交互的客户端
进入了数据库操作界面hbase(main):001:0> 可以再这后面进行hbase的命令操作
里面不可以用mysql的语句命令,他是不认识的,他有自己的一套语法,
第一次进入这个里面,你输入的东西是不可以往回删除的,我们需要在session Option做一个设置
点击Emulation 选择linux 在Mapped Keys 把Backspace sends delete前面的沟 沟上
可以用help查看命令
Group name: ddl 数据定义语言
Group name: dml 数据操作语言
Group name: namespace 名称空间(也就是mysql中的库的概念)
Group name: tools 运维的工具
Group name: replication 做副本备份的工具
Group name: snapshots 快照的工具
Group name: security 做安全验证的工具命令
status 查看状态
version 查看数据库的版本号
whoami 查看是哪个用户操作的此数据库
list 查看哪些表
查找一个字段值的坐标
表名---->rowkey---->列族名---->列----->版本号(版本号可以不指定,他默认返还给一个最新的值)
hbase表中,只支持一种数据类型:byte[]
hbase命令行客户端创建表和插入数据以及表的排序特性
hbase> create ‘t1‘, {NAME => ‘f1‘,VERSIONS => 1}, {NAME => ‘f2‘}, {NAME => ‘f3‘}
‘t1‘表示:表名 {NAME => ‘f1‘}, {NAME => ‘f2‘}, {NAME => ‘f3‘}表示:列族名
VERSIONS 表示:f1这个列族里面最多可以保存几个版本
现在我们来创建一个表
create ‘user_info‘, {NAME => ‘base_info‘,VERSIONS => 3},{NAME => ‘extra_info‘}
创建好后可以用list来看,就有这张表的存在了(其实在网页上也可以看到)
用put命令在插入数据
直接按put看系统提供的例子hbase> put ‘t1‘, ‘r1‘, ‘c1‘, ‘value‘, ts1
‘t1‘ 表示:表名 ‘r1‘ 表示:行键 ‘c1‘ 表示:列名(列名属于列族 列族和列名一起写)
‘value‘ 表示:你所插入列名的值 ts1 表示:事件搓(一般不需要手动去定义)
比如
put ‘user_info‘,‘rk0001‘,‘base_info:id‘,‘1‘
put ‘user_info‘,‘rk0001‘,‘base_info:name‘,‘zhangsan‘
put ‘user_info‘,‘rk0001‘,‘base_info:age‘,‘20‘
put ‘user_info‘,‘rk0001‘,‘extra_info:address‘,‘beijing‘
(在第一行中插入了四个字段和值:分别是base_info中的id name age 和extra_info中的address)
put ‘user_info‘,‘rk0002‘,‘base_info:id‘,‘2‘
put ‘user_info‘,‘rk0002‘,‘base_info:name‘,‘lisi‘
put ‘user_info‘,‘rk0002‘,‘base_info:sex‘,‘male‘
(插入了两行数据)
接下来我们来查询一下
在dml中的get来查询数据针对一行 scan对整个表的扫描
scan ‘user_info‘(查看的整个表)
scan也可以指定起始的范围,不需要对整个表进行扫描 表很大的时候
scan ‘t1‘, {COLUMNS => [‘c1‘, ‘c2‘], LIMIT => 10, STARTROW => ‘xyz‘}
‘t1‘ 表示:表名 COLUMNS => [‘c1‘, ‘c2‘] 表示:要返还哪些列 STARTROW => ‘xyz‘ 表示:范围起始的行 LIMIT => 10要查询多少行
比如:
scan ‘user_info‘, {LIMIT => 2, STARTROW => ‘rk0001‘}
hbase(main):030:0> scan ‘mjh_shiyanshuju:mjh_hbase‘, {COLUMNS => [‘b‘, ‘ct‘], LIMIT => 1, STARTROW => ‘001‘}
ROW COLUMN+CELL
001 column=b:balance, timestamp=1521192923285, value=10000.00
001 column=ct:email, timestamp=1521192923285, value=zhangsan@email.com
001 column=ct:tep, timestamp=1521192923285, value=123456789
1 row(s) in 0.0600 seconds
hbase怎么查询表里的总纪录数呢?
hbase(main):010:0> count ‘vargo:vargo_hbase‘
3 row(s) in 0.0300 seconds
=> 3
他的排列的顺序是不一定是我们插入时的顺序,他的内部会给我们自动排序,排序后会给我们存放进去,他不是按照我们插入的先后顺序排序而是按照字段的名字来排序(他是按照字母的排序大小来排序的a~z)
(hbase的表中,列族和kv都会自动排序,排序的规律是按照列族名和列名的字典顺序,行也会排序,根据行健的字典顺序)
比如是按照以下顺序排列
rk0001
rk0001
rk0001
rk0001
rk00010
rk00010
rk00010
rk0002
rk0002
rk0002
用get命令在查询数据
get ‘t1‘, ‘r1‘, {COLUMN => ‘c1‘, TIMERANGE => [ts1, ts2], VERSIONS => 4}
COLUMNS => ‘c1‘ 表示:要返还哪些列 VERSIONS => 4 表示:返还的版本号 TIMERANGE => [ts1, ts2]:时间搓
比如:
get ‘user_info‘ ,‘rk0001‘
get ‘user_info‘ ,‘rk0001‘,{COLUMN => ‘base_info:name‘,VERSIONS => 3}
hbase命令行客户端管理名称空间
Group name: namespace 名称空间(也就是mysql中的库的概念)
我们可以在不同的名称空间里创建不同的表
create_namespace ‘orderdb‘
create ‘orderdb:t_order‘,‘f1‘,‘f2‘
查看名称空间
list_namespace
删除名称空间
disable ‘orderdb:t_order‘(禁用‘orderdb:t_order‘中的表)
drop ‘orderdb:t_order‘ (删除‘orderdb:t_order‘中的表)
drop_namespace ‘orderdb‘(删除‘orderdb‘名称空间)
hbase(main):015:0> count ‘vg_device‘
Current count: 1000, row: 948069935274401803
1586 row(s) in 0.3650 seconds
=> 1586
hbase(main):016:0> truncate ‘vg_device‘ (情况表语句)
Truncating ‘vg_device‘ table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 3.3790 seconds
hbase(main):017:0> count ‘vg_device‘
0 row(s) in 0.2500 seconds
=> 0
**lsdf命令重写出现界面hbase(main)>图标**
**Hbase 建表基本命令总结**:https://blog.csdn.net/kky2010_110/article/details/12616137
**HBase scan shell操作详解**:https://blog.csdn.net/vaq37942/article/details/54949428
**Hbase在HDFS上的各个目录作用** https://blog.csdn.net/jsjsjs1789/article/details/52739356
1、/hbase/.META.
就是存储1中介绍的 META 表的存储路径。
2、/hbase/.archive
HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到.archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。
3、/hbase/.corrupt
存储HBase做损坏的日志文件,一般都是为空的。
4、/hbase/.hbck
HBase 运维过程中偶尔会遇到元数据不一致的情况,这时候会用到提供的 hbck 工具去修复,修复过程中会使用该目录作为临时过度缓冲。
5、/hbase/WAL
大家都知道 HBase 是支持 WAL(Write Ahead Log) 的,HBase 会在第一次启动之初会给每一台 RegionServer 在.log 下创建一个目录,若客户端如果开启WAL 模式,会先将数据写入一份到.log 下,当 RegionServer crash 或者目录达到一定大小,会开启 replay 模式,类似 MySQL 的 binlog。
6、/hbase/oldlogs
当.logs 文件夹中的 HLog 没用之后会 move 到.oldlogs 中,HMaster 会定期去清理。
7、/hbase/.snapshot
hbase若开启了 snapshot 功能之后,对某一个用户表建立一个 snapshot 之后,snapshot 都存储在该目录下,如对表test 做了一个 名为sp_test 的snapshot,就会在/hbase/.snapshot/目录下创建一个sp_test 文件夹,snapshot 之后的所有写入都是记录在这个 snapshot 之上。
8、/hbase/.tmp
当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作。
9、/hbase/hbase.id
它是一个文件,存储集群唯一的 cluster id 号,是一个 uuid。
10、/hbase/hbase.version
同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。
————————————————————————————————————————————————————————————————————————————————————————————————————
2019/1/16 星期三
HBase二级索引实现方案 https://blog.csdn.net/wypersist/article/details/79830811
HBase的局限性 : HBase本身只提供基于行键和全表扫描的查询,而行键索引单一,对于多维度的查询困难。
HBase的一级索引就是rowkey,我们只能通过rowkey进行检索。如果我们相对hbase里面列族的列列进行一些组合查询,就需要采用HBase的二级索引方案来进行多条件的查询。
1. MapReduce方案
2. ITHBASE(Indexed-Transanctional HBase)方案
3. IHBASE(Index HBase)方案
4. Hbase Coprocessor(协处理器)方案
5. Solr+hbase方案
6. CCIndex(complementalclustering index)方案
----------------------------------------------------------------------------
**详细解释 hbase分布式存储机制简介 //见单独文档**
region server 可以由很多个 根据数据的规模来的
regionserver01 regionserver02 regionserver03
用户具体创建的表是在hbase中具体怎么存储的?
当一个大表的若干行达到一定范围的时候(若干行的数据量达到10G就划分为一个region)
每一个region会交给每一个regionserver去管理

原文地址:http://blog.51cto.com/12445535/2351982

时间: 2024-10-11 06:49:35

hbase集群部署与测试(2017)的相关文章

集群部署及测试SolrCloud-5

SolrCloud-5.2.1 集群部署及测试 一. 说明 Solr5内置了Jetty服务,所以不用安装部署到Tomcat了,网上部署Tomcat的资料太泛滥了. 部署前的准备工作: 1. 将各主机IP配置为静态IP(保证各主机可以正常通信,为避免过多的网络传输,建议在同一网段). 2. 修改主机名,配置各主机映射:修改hosts文件,加入各主机IP和主机名的映射. 3. 开放相应端口或者直接关闭防火墙. 4. 保证Zookeeper集群服务正常运行.Zookeeper的部署参考:http://

redis3.0集群部署和测试

redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141redis版本:redis-3.2.4 部署前准备 关闭防火墙--->systemctl stop firewalld开机禁用防火墙--->systemctl disable firewalld临时关闭selinux--->setenforce 0永久关闭selinux--->sed -

hbase 集群部署

Hhase 集群部署 使用的软件 hadoop-2.7.4 hbase-1.2.6 jdk-8u144 zookeeper-3.4.10 Hbase 自带的有zookeeper,在这里使用自己部署的zookeeper zookeeper 集群部署 安装jdk 下载zookeeper 程序 修改zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataLogDir=/zookeeper/logs dataDir=/zookeeper/data clien

SolrCloud-5.2.1 集群部署及测试

一. 说明 Solr5内置了Jetty服务,所以不用安装部署到Tomcat了,网上部署Tomcat的资料太泛滥了. 部署前的准备工作: 1. 将各主机IP配置为静态IP(保证各主机可以正常通信,为避免过多的网络传输,建议在同一网段). 2. 修改主机名,配置各主机映射:修改hosts文件,加入各主机IP和主机名的映射. 3. 开放相应端口或者直接关闭防火墙. 4. 保证Zookeeper集群服务正常运行.Zookeeper的部署参考:http://www.cnblogs.com/wxisme/p

HBase集群部署

HBase是分布式.面向列式存储的开源数据库,来源于Google的论文BigTable,HBase运行于Hadoop平台之上,不同于一般的关系数据库,是一个适合非结构化数据存储的分布式数据库 安装Hbase之前首先系统应该做通用的集群环境准备工作,这些是必须的: 1.集群中主机名必须正确配置,最好有实际意义:并且主机名都在hosts文件中对应主机IP,一一对应,不可缺少 这里是3台主机,分别对应 2.JDK环境正确安装 3.集群中每台机器关闭防火墙,保证通信畅通 4.配置集群间ssh免密登录 5

2.Spark 2.x 集群部署和测试

配置免密度登录 执行 ssh-keygen -t rsa#建立 ssh 目录,一路敲回车, 生成的密钥对 id_rsa, id_rsa.pub,默认存储在~/.ssh 目录下 chmod 755 .ssh #赋予 755 权限 cd .ssh #ls – l id_rsa id_rsa.pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys把公用密匙添加到 authorized_keys 文件中(此文件最后一定要赋予 644 权限) 现在给sla

Hadoop及Zookeeper+HBase完全分布式集群部署

Hadoop及HBase集群部署 一. 集群环境 系统版本 虚拟机:内存 16G CPU 双核心 系统: CentOS-7 64位 系统下载地址: http://124.202.164.6/files/417500000AB646E7/mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso 软件版本 hadoop-2.8.1.tar.gz hbase-1.3.1-bin.tar.gz zookeeper-3.4.10.t

HBase集成Zookeeper集群部署

大数据集群为了保证故障转移,一般通过zookeeper来整体协调管理,当节点数大于等于6个时推荐使用,接下来描述一下Hbase集群部署在zookeeper上的过程: 安装Hbase之前首先系统应该做通用的集群环境准备工作,这些是必须的: 1.集群中主机名必须正确配置,最好有实际意义:并且主机名都在hosts文件中对应主机IP,一一对应,不可缺少 这里集群有6台服务器:bigdata1,bigdata2,bigdata3,bigdata4,bigdata5,bigdata6 这里是3台主机,分别对

ZooKeeper分布式集群部署及问题

ZooKeeper为分布式应用系统提供了高性能服务,在许多常见的集群服务中被广泛使用,最常见的当属HBase集群了,其他的还有Solr集群.Hadoop-2中的HA自己主动故障转移等. 本文主要介绍了为HBase集群部署ZooKeeper集群的过程.并说明了部署过程中遇到的问题. 默认情况下,由HBase管理ZooKeeper的启动和停止.要想改动这一默认行为,须要将hbase-env.sh中的export HBASE_MANAGES_ZK=true改为export HBASE_MANAGES_