什么是HBase ???(个人学习总结)

1、B站学习视频:尚硅谷HBase教程(hbase框架快速入门)_哔哩哔哩_bilibili

2、简书---Hbase学习笔记:Hbase学习笔记 - 简书

3、简书---Hbase学习笔记(二):HBase学习笔记(二) - 简书

4、简书---Hbase介绍三(配置文件详解):Hbase介绍三(配置文件详解) - 简书

5、简书---Hbase 常用参数:hbase 常用参数 - 简书

6、简书---HBase客户端:四、HBase客户端 - 简书

7、简书---HBase运维:十二、HBase运维 - 简书

8、C语言中文网---HBase是什么?:HBase是什么?(对HBase介绍的比较全面)

0x01. 简介

1、定义

HBase是一种分布式、可扩展、支持海量数据存储的一个NoSQL数据库,相较于HDFS可以进行随机写操作。

什么是NoSQL:非结构化数据库(非关系型数据库),

2、物理存储结构

通过时间戳覆盖文件

3、数据模型

1、Name Space

命名空间,类似于关系型数据库的database概念,每个命名空间下存在多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase中存放着HBase内置的表,default表是默认使用的命名空间。

2、Region

类似于关系数据库中表的概念,在HBase俗称表的切片。

3、Row

HBase表中的每行数据都由一个RowKey 和 多个Column(咧)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索。

4、Column

HBase中每个列都由Column Family (列族)和Column Qualifier (列限定符)进行限定

5、Time Stamp

时间戳,唯一标识。每条数据写入时,如果不指定时间戳,系统会自动添加。

4、HBase的基本架构

架构角色

1、Region Server

Region Server为Region的管理者。主要作用---对数据的操作:get、put、delete

2、Master

Master是所有Region Server的管理者。主要作用---对表的操作,create、delete、alter

3、Zookeeper

HBase通过Zookeeper来做master的高可用、Region Server的监控、元数据的入口以及集群配置的维护工作

4、HDFS

HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持

5、高可用性(Backup Masters)

1、启用backup-master

#:hbase-daemon.sh start master

2、自动启用

backup-master

在conf目录下创建backup-masters文件

输入HBase 主机名

0x02. HBase Shell操作

Hbase Shell命令操作分为DDL和DML两组命令

DDL:

1、判断表是否存在

2、创建表

3、创建命名空间

4、删除表

DML:

1、插入数据

2、查数据(get)

3、查数据(scan)

4、删除数据

常用命令:

1、bin/start-hbase.sh 进入shell界面

2、ctrl + backspace 删除命令

3、create 'stu' 创建列族

4、list 查看 列族

5、drop 删除

6、scan 扫描表

Hbase用户权限管理

HBase提供五个权限标识符:(RWXCA)

读R - represents read privilege.

写W - represents write privilege.

执行X - represents execute privilege.

创建C - represents create privilege.

管理员A - represents admin privilege.

1. 通过grant命令赋予权限

语法:

grant <user> <permissions> [<table> [<column family> [<column; qualifier>]]

用法示例:

授权:

hbase(main):012:0> grant 'Administrator','RWCA','emp'(表名)

0 row(s) in 0.1740 seconds

权限查看

hbase(main):014:0> user_permission 'emp'(表名)

hbase(main):014:0> user_permission 'emp'

User Namespace,Table,Family,Qualifier:Permission(命名空间、表、族、限定符:权限)

Administrator default,emp,,: [Permission: actions=READ,WRITE,CREATE,ADMIN]

root default,emp,,: [Permission: actions=READ,WRITE,EXEC,CREATE,ADMIN]

2 row(s) in 0.0640 seconds

2. 权限收回

语法:

revoke <user> [<table> [<column family> [<column; qualifier>]]

hbase(main):014:0> revoke 'Administrator','emp

'0 row(s) in0.1860seconds

指定hbase集群的端口
在hbase_env.sh中增加

export HBASE_SSH_OPTS="-p 2222"

0x03. 备份数据

参考链接:HBase原理 – snapshot 快照_jast_zsh的博客-CSDN博客_hbase snapshot 原理

参考链接:Hbase snapshot_tiny@ant的博客-CSDN博客

hbase提供了很简单的一种通过snapshot方式进行打快照和恢复快照.同时也可以通过这种方式定期的备份hbase数据,以防数据丢失.

一、hbase表级备份原理

对当前表做快照,可以使用恢复快照命令将表到某个时间点。

Snapshot 命令通常在秒级即可完成、快照只生成一些元数据,不会对文件本身产生影响。HBase 提供导出快照功能,可以将快照文件导出到另外的HBase集群进行恢复。也可以在原集群进行恢复。恢复在秒级完成。目前仅支持对当前时间点做全量快照,无法增量备份。

HBase 配置支持快照功能:

<property> <name>hbase.snapshot.enabled</name> <value>true</value> </property>

启动hbase shell

bin/hbase shell

执行快照命令

snapshot 'myTable','myTable20200220'

列出快照

list_snapshots

删除快照

delete_snapshot 'myTable20200220'

恢复某一个快照

restore_snapshot 'myTable20200220'

也可以很方便的将快照导出到另外一个集群

bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://hadoop-data-2:8082/hbase -mappers 16

0x04. HBase 安全审计------Apache Ranger:统一授权管理框架

原文链接:Apache Ranger:统一授权管理框架_自知自省的博客-CSDN博客

1. 简介

Apache Ranger 是一个用在 Hadoop 平台上并提供操作、监控、管理综合数据安全的框架。Ranger 的愿景是在 Apache Hadoop 生态系统中提供全面的安全性。 目前,Apache Ranger 支持以下 Apache 项目的细粒度授权和审计:

  • Apache Hadoop
  • Apache Hive
  • Apache HBase
  • Apache Storm
  • Apache Knox
  • Apache Solr
  • Apache Kafka
  • YARN

对于上面那些受支持的 Hadoop 组件,Ranger 通过访问控制策略提供了一种标准的授权方法。作为标准,Ranger提供了一种集中式的组件,用于审计用户的访问行为和管理组件间的安全交互行为。

最新版本的Apache Ranger已经支持Elasticsearch等组件。

2. Apache Ranger访问条件

Apache Ranger访问策略模型由两个主要组件组成:对策略所应用的资源的规范,例如HDFS文件和目录,Hive数据库、表、列,HBase表、列族和列等;以及特定用户和组的访问条件规范。

3. 允许、拒绝和排除条件

Apache Ranger支持以下访问条件:

1、允许

2、从允许中排除

3、拒绝

4、从拒绝中排除

这些访问条件使您可以设置细粒度的访问控制策略。

例如,您可以允许“财务”组中的所有用户访问“财务”数据库,但是拒绝对“实习生”组中的所有用户进行访问。假设“实习生”组的成员之一“斯科特”需要处理需要访问“财务”数据库的任务。在这种情况下,您可以添加“拒绝拒绝”条件,该条件将允许用户“ scott”访问“财务”数据库。下图显示了如何在Apache Ranger中设置此策略:

4. 为策略启用拒绝条件

默认情况下,策略中的拒绝条件是禁用的,必须启用后才能使用。

  1. 在Ambari> Ranger> CONFIGS> ADVANCED> Custom ranger-admin-site中,添加:
ranger.servicedef.enableDenyAndExceptionsInPolicies=true
  1. 重新启动Ranger。

5. 访问条件的策略评估

将按特定顺序评估Apache Ranger策略,以确保可预测的结果(如果没有允许访问的访问策略,则通常会拒绝授权请求)。下图显示了策略评估工作流程:

6. 使用Ranger控制台、打开和关闭Ranger控制台

要打开Ranger控制台,请登录到Ranger门户网站http://your_ranger_server_address >:6080(例如,http://dw-weekfield.hortonworks.com:6080)。要登录,请输入您的用户名和密码,然后单击“登录”。

管理员控制台主页

管理员登录控制台
登录后,您的用户名将显示在游侠控制台的右上角

要退出游骑兵控制台,请单击您的用户名,然后选择退出。

7. Ranger控制台导航

当您登录到Ranger控制台时,将显示基于资源的策略的服务管理器页面。您可以使用此页面为Hadoop资源(HDFS、HBase、Hive等)创建服务,并向这些资源添加访问策略。

单击顶部菜单中的Access Manager将打开基于资源的策略页面的服务管理器,并显示一个子菜单,其中包含指向基于资源的策略、基于标记的策略和报告的链接(当您将鼠标移到Access Manager链接上时,也会显示该子菜单)

Access Manager > Resource Based Policies – 打开基于资源的策略页面的服务管理器。您可以使用此页面为资源(HDFS、HBase、Hive等)创建服务,并向这些服务添加访问策略。

Access Manager > Tag Based Policies – 打开基于标记的策略页面的服务管理器。可以使用此页面创建基于标记的服务,并向这些服务添加访问策略。使用基于标记的策略使您能够跨多个Hadoop组件控制对资源的访问,而无需在每个组件中创建单独的服务和策略。

Access Manager > Reports – 打开报告页面。您可以使用此页面为基于策略名称、资源、组和用户名的资源和基于标记的策略生成用户访问报告。

Audit – 您可以使用审计页面在资源级别监视用户活动,还可以根据用户、组或时间设置条件审计。审计页面包括访问、管理、登录会话、插件选项卡、插件状态、用户同步情况等。

Settings – 允许您管理和分配用户和组的策略权限。在设置上单击或传递鼠标会显示一个子菜单,其中有指向用户/组和权限页的链接。

0x05. HBase配置AES加密

原文链接:HBase配置AES加密_create17的博客-CSDN博客_hbase加解密

一、前言

为了避免第三方非法访问我们的重要数据,我们可以给HBase配置加密算法,目前HBase只支持使用aes加密算法,用于保护静态的HFile和WAL数据。

HBase配置的AES加密是一种端到端的加密模式,其中的加/解密过程对于客户端来说是完全透明的。数据在客户端读操作的时候被解密,当数据被客户端写的时候被加密。这个功能作用就是保证处于加密空间内的数据不被非法查询,只有经过认证的客户端才能查看解密内容。

详情可以参考HBase官方文档:

http://hbase.apache.org/book.html#hbase.encryption.server

二、AES算法简介

这里只是对AES算法的一个简单说明。

AES是一个对称加密算法,如下图所示:

下面简单介绍下各个部分的作用与意义:

密钥K

用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,实际中,一般是通过RSA加密AES的密钥,传输到接收方,接收方解密得到AES密钥,然后发送方和接收方用AES密钥来通信。

密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

AES加密函数

设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

AES解密函数

设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

三、配置步骤

接下来主要介绍需要在hbase-site.xml文件内增加哪些配置。最后通过ambari页面将自定义配置加到hbase-site.xml中。分为以下几步:

  1. 使用keytool实用程序为AES加密创建适当长度的密钥。
cd /usr/hdp/3.0.1.0-187/hbase/conf/

# 生成hbase.jks

keytool -keystore hbase.jks -storetype jceks -storepass admin123 -genseckey -keyalg AES -keysize 128 -alias hbase

  • hbase.jks:表示生成的jks文件存储路径。
  • admin123:代表存储的密码。
  • AES:表示加密的类型,目前仅支持AES。
  • 128:表示密钥的长度,AES支持128位长度。
  • hbase:为密钥文件的别名。

  1. 在密钥文件上设置适当的权限,并将其分发给所有HBase服务器。 上一个命令在/usr/hdp/3.0.1.0-187/hbase/conf/目录下创建了一个名为hbase.jks的文件。设置此文件的权限和所有权,以便只有HBase服务帐户用户可以读取该文件,并将密钥安全地分发给所有HBase服务器。

# 在每台机器上执行以下命令:

cd /usr/hdp/3.0.1.0-187/hbase/conf
chmod 600 hbase.jks
chown hbase:hadoop hbase.jks

# 通过scp命令将文件传输到各节点的指定位置

scp -r hbase.jks root@xxx:/usr/hdp/3.0.1.0-187/hbase/conf

# 拷贝完成后,也需要设置文件的相关权限,600。

  1. 配置HBase daemons

在集群的hbase-site.xml中设置以下属性,配置HBase守护程序以使用由KeyStore文件支持的密钥提供程序或检索集群主密钥。在下面的示例中,admin123为密码,可自定义。

# 自定义hbase-site:

hbase.crypto.keyprovider=org.apache.hadoop.hbase.io.crypto.KeyStoreKeyProvider

hbase.crypto.keyprovider.parameters=jceks:///usr/hdp/3.0.1.0-187/hbase/conf/hbase.jks?password=admin123

默认情况下,HBase服务帐户名称将用于解析群集主密钥。但是,您可以使用任意别名(在keytool命令中)存储它。在这种情况下,请将以下属性设置为您使用的别名。

# 自定义hbase-site:

hbase.crypto.master.key.name=hbase

您还需要确保您的HFile使用HFile v3,以便使用透明加密。这是HBase 1.0以后的默认配置。对于以前的版本,请在hbase-site.xml文件中设置以下属性。

# 自定义hbase-site:

hfile.format.version=3
  1. 配置Configure WAL encryption

通过设置以下属性,在每个RegionServer的hbase-site.xml中配置WAL加密。您也可以将这些包含在HMaster的hbase-site.xml中,但是HMaster没有WAL并且不会使用它们。

# 自定义hbase-site:

hbase.regionserver.hlog.reader.impl=org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader
hbase.regionserver.hlog.writer.impl=org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter
hbase.regionserver.wal.encryption=true

  1. 配置hbase-site.xml文件的权限。

由于密钥库密码存储在hbase-site.xml中,因此需要确保只有HBase用户可以使用文件所有权和权限读取hbase-site.xml文件。

chmod -R 600 hbase-site.xml

  1. 将上述配置添加到自定义hbase-site中,重启HBase服务。

  1. 创建加密类型为AES的表。

**格式:**create ‘<table name>’, {NAME => ‘<column family name>’, ENCRYPTION => ‘AES’}

create 'hbase_1102', {NAME=>'cf1', ENCRYPTION => 'AES'}, {NAME=>'cf2'}

put'hbase_1102', '001','cf1:name','Tom'

put'hbase_1102', '001','cf1:gender','man'

put'hbase_1102', '001','cf2:chinese','90'

put'hbase_1102', '001','cf2:math','91'

put 'hbase_1102', '001','cf2:math','91', 1557566858555

# 删除hbase的一条数据

delete 'hbase_1102', '001', 'cf2:math'

# 根据时间戳来获取数据

get 'hbase_1102','001',{COLUMN=>'cf2:math',TIMESTAMP=>1555768605232}

四、总结

HBase目前只支持AES加密,它是一种端到端的加密模式,其中的加/解密过程对于客户端来说是完全透明的。数据在客户端读操作的时候被解密,当数据被客户端写的时候被加密。这个功能作用就是保证处于加密空间内的数据不被非法查询,只有经过认证的客户端才能查看解密内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

張童學

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值