HBSAE实战总结

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: HBSAE实践:(先启动zookeeper)

HBSAE实践:(先启动zookeeper)



1、安装(hbase-0.98.6-hadoop2)

(1)安装zookeeper(zookeeper-3.4.5)

首先,将zoo_sample.cfg改名为zoo.cfg(要求所有机器保持一致)

server.0=master:8880:7770
server.1=slave1:8881:7771
server.2=slave2:8882:7772

然后,zookeeper根目录创建myid(每个机器独立分配,不能重复)


启动,]# ./bin/zkServer.sh start

检查:]# ./bin/zkServer.sh status

(2)安装hbase

首先:hbase-env.sh设置环境变量

export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export HBASE_MANAGES_ZK=false

修改hbase-site.xml:


<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>

接下来,创建regionservers文件,里面存储regionserver的master地址


1 slave1

2 slave2

将这些配置分发拷贝到其他节点(scp)


启动 ./bin/start-hbase.sh

(1)在主节点看到HMaster进程,在从节点看到HRegionServer进程

(2)]# hbase shell,进入终端执行status,查看状态

(3)web UI:192.168.179.10:60010


2、hbase shell的基础操作

list查看有哪些表格

删除表格:

> disable "m_table"

> drop "m_table"

创建表格:

> create 'm_table', 'meta_data', 'action'

查看数据(全表扫描)——不建议直接用

> scan "m_table"

增加cf:

> alter "m_table", {NAME=>'cf_new'}

删除cf:

> alter "m_table", {NAME=>'cf_new', METHOD=>'delete'}

查看表格有多少条记录:

> count "m_table"

删掉一条记录

delete "m_table", "user|4001", "meta_data:name"

写数据:

put "m_table", '1002', 'meta_data:name', 'li4'

put "m_table", '1001', 'meta_data:age', '18'

put "m_table", '1002', 'meta_data:gender', 'man'

查看数据

逐条读:get "m_table", '1002'

get "m_table", '1002', 'meta_data:name'

批量读:scan "m_table"


过滤

(1)找zhang3,值

--通过明确的value,反查记录

scan "m_table", FILTER=>"ValueFilter(=, 'binary:zhang3')"
scan "m_table", FILTER=>"ValueFilter(=, 'binary:wang5')"

(2)找包含‘a’的value

--通过value漫匹配,反查记录

scan "m_table", FILTER=>"ValueFilter(=, 'substring:a')"

(3)列名匹配

两个条件同时限制,对列明的前缀做校验

scan "m_table", FILTER=>"ColumnPrefixFilter('na') AND ValueFilter(=, 'substring:zhang3')"
scan "m_table", FILTER=>"ColumnPrefixFilter('na')
put "m_table", '3001', 'meta_data:name', '777'

(4)rowkey匹配---查询rowkey prefix的方式:

以10开头:

> scan "m_table", FILTER=>"PrefixFilter('10')"

指定rowkey的范围,rowkey之后的数据

> scan "m_table", {STARTROW=>'1002'}
> scan "m_table", {STARTROW=>'1002', FILTER=>"PrefixFilter('10')"}

修改版本号:

> alter "m_table", {NAME=>'meta_data', VERSIONS => 3}
put "m_table", '1001', 'meta_data:name', 'wang5'
put "m_table", '1001', 'meta_data:name', 'zhao6'
put "m_table", '1001', 'meta_data:name', 'heng7'
get "m_table", '1001'

指定版本号读取:

get "m_table", '1001', {COLUMN=>"meta_data:name", VERSIONS => 1}
get "m_table", '1001', {COLUMN=>"meta_data:name", VERSIONS => 2}
> get "m_table", '1001', {COLUMN=>"meta_data:name", VERSIONS => 3}
get "m_table", '1001', {COLUMN=>"meta_data:name", TIMESTAMP=>1573349851782}
get "m_table", '1001', {COLUMN=>"meta_data:name", TIMESTAMP=>1573349547463}

正则过滤

1.行正则

import org.apache.hadoop.hbase.filter.RegexStringComparator
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.filter.RowFilter
scan 'm_table', {FILTER => RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'),RegexStringComparator.new('^10'))}

2.值正则:


import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
scan "m_table", {FILTER=>RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'), RegexStringComparator.new('^user\|\d+$'))}

值正则:


import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
scan "m_table", {FILTER=>RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'), RegexStringComparator.new('^user\|\d+$'))}

清空词表


> truncate "m_table"

查看行数

> count 'm_table'(同一个row是一行,下图3行)


3、python操作hbase

dc9d0add4c0d75b331823ede501fd78c_552865a7dcd2e994155b83798862724f.png

94413c875d2a657ff7e99ee1eb3b9b68_e8896b151ec99f3772d53ee275c6ddb6.png

1)首先启动thrift服务

1.本地操作 ]# ./bin/hbase-daemon.sh start thrift

]# netstat -antp | grep 9090

2)下载thrift源码包:thrift-0.8.0.tar.gz

解压后,编译安装:]# ./configure && ./make && ./make install

]# cd lib/py/build/lib.linux-x86_64-2.6/

看到thrift的python模块包

3)下载hbase源码包:hbase-0.98.24-src.tar.gz

解压,]# ls hbase-thrift/src/main/resources/org/apache/hadoop/hbase/

看到thrift的模块包,进入该目录

]# thrift --gen py Hbase.thrift

产生hbase的python模块包gen-py,把hbase的python包copy出来

需要依赖模块

下载thrift-0.8.0.tar.gz

解压:

1)configure

2)make

3)make install


下载hbase-0.98.24-src.tar.gz源码包

解压后,进入目录,再进入子目录 hbase-thrift/src/main/resources/org/apache/hadoop/hbase/中

thrift --gen py Hbase.thrift

产生gen-py,目录下存在hbase的模块

启动thrift服务

]# ./hbase-daemon.sh start thrift

netstat -antp |grep 9090

ps aux | grep 5324

1)创建表格

python create_table.py

2)写数据

python insert_data.py

3)读数据+扫描数据

python get_one_line.py

python scan_many_lines.py

4、mr+hbase

batch_insert+MapReduce

运行bash run.sh--时实现hdfs批量网hbse里灌,count统计记录行验证

5、Hive+Hbase

创建Hbase表:

> create 'classes','user'
put 'classes','001','user:name','jack'
put 'classes','001','user:age','20'
put 'classes','002','user:name','liza'

创建hive表:


]# cat create_hive_hbase_table.sql
CREATE EXTERNAL Table classes(id int, name string, age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping"=":key,user:name,user:age")
TBLPROPERTIES("hbase.table.name"="classes")

返回到hbase中,插入数据测试

> put 'classes','003','user:age','18908989089'


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
测试技术
AQtime实战
最近在博客园看到了JustIn兄弟写的一些列的AQtime文章,非常不错,看完了手痒痒于是自己就写点了。Justin [原创]DebugTools系列(1):AQTime初探 [原创]DebugTools系列(2):AQT...
730 0
|
Web App开发 前端开发
HTML+CSS提升小实战
1 2 3 4 几米简介 5 6 *{ 7 margin:0px;padding:0px; 8 } 9 #header{ 10 background:url(images/banner.
1236 0
|
Spring
上部 本地实战
本文属于《JavaEE实战——从本地到云端》 上部 本地实战 从开发环境搭建开始,带你一步一步了解当下流行的SpringMVC——SSM(Spring+SpringMVC+MyBatis) 框架,spring-boot框架在项目中的实际应用方法。
798 0
html+css实战91-pxcook使用
html+css实战91-pxcook使用
184 0
html+css实战91-pxcook使用
|
数据采集 JSON 数据格式
Python网络爬虫实战三例(附视频讲解)
抓取简书用户信息 之前我写的爬虫都是将已知的固定数据的网址存到list中,然后遍历list中的网址。这次针对简书,我们使用递归来试一下。 什么是递归 程序(或函数)调用自身的编程技巧称为递归( recursion)。
7410 0
|
JavaScript 前端开发
html+css实战118-特点
html+css实战118-特点
132 0
html+css实战118-特点
|
测试技术 Android开发 Kotlin
QMUI实战(一)—为何我们要使用 LauncherActivity?
QMUI 2 发布了,但是里面换肤等相关的很多东西,如果不讲,那么很多人估计就只能复制粘贴下 QMUIDemo 的代码,而并不能用好 QMUI, 或者是通过 QMUI 来提升自己的 UI 开发能力,毕竟现在很多 Android 开发都是轻 UI 而重数据流,遇到需要复杂 UI 的地方,在 Github 上随便找个组件套上去就行了,如果找得到刚好符合需求的还好,如果找到的不是那么切合需求,那一天的状态很可能就是“一壶茶、一包烟、几个间距颜色调一天”了。
239 0

热门文章

最新文章

相关实验场景

更多