自己做的商业网站在那里发布,国家企业信息信用信息公示网,头条网站怎么做,室内设计软件自己设计文章作者邮箱#xff1a;yugongshiyesina.cn 地址#xff1a;广东惠州 ▲ 本章节目的
⚪ 了解HIve的概念#xff1b;
⚪ 了解HIve与数据库的区别#xff1b;
⚪ 了解HIve的特点#xff1b; 一、简介
1. 概述
1. HBase原本是由Yahoo!公司开发后来贡献给了…文章作者邮箱yugongshiyesina.cn 地址广东惠州 ▲ 本章节目的
⚪ 了解HIve的概念
⚪ 了解HIve与数据库的区别
⚪ 了解HIve的特点 一、简介
1. 概述
1. HBase原本是由Yahoo!公司开发后来贡献给了Apache的一套开源的、基于Hadoop的、分布式的、可扩展的、非关系型数据库。
2. 如果需要对大量数据进行随机且实时读写那么可以考虑使用HBase。
3. HBase能够管理非常大的表billions of rows * millions of columns。
4. HBase是仿照Google的Big Table来进行实现的因此HBase和BigTable的原理几乎一致只有实现语言不同。HBase是使用Java语言实现的BigTable使用的是C语言实现的 - HBase最终将数据落地到HDFS上。
5. HBase提供了2个大版本并且2个版本都在同时更新。其中Hadoop3.1.3版本支持的是HBase2.2.X及以上版本。
6. HBase作为非关系型数据库不支持标准的SQL语法提供了一套全新的命令。
7. HBase能够存储稀疏类型的数据也因此HBase能够存储结构化(数据本身有结构经过解析之后能够用传统数据库中的一个或者几个表来存储)和半结构化数据(数据本身有结构但是解析之后无法用传统数据库中的表来存储)。
8. HBase本身作为数据库提供了完整的增删改查的功能。HBase基于HDFS来进行存储HDFS的特点是允许一次写入多次读取不允许修改而允许追加写入但是HBase提供了改功能HBase如何实现改功能的- HBase实际上并没有去修改写入的数据而是在文件末尾去追加数据。HBase会对写入的每条数据自动添加一个时间戳当用户获取数据的时候HBase自动返回最新的数据那么从用户角度来看就是发生了数据的修改。
9. 在HBase中数据的每一个时间戳称之为是一个版本。
10. 如果要锁定唯一的一条数据那么需要通过行键列族列时间戳这四个维度来锁定这种结构称之为是一个Cell(单元格)。
11. HBase中的表在创建的时候如果不指定那么只对外提供一个版本的数据。
12. 如果建好表之后再修改可以获取的版本那么已经添加的数据不起作用。
13. 即使表允许对外获取多个版本的数据在获取的时候如果不指定依然只获取一个版本的数据。
2. 基本概念
1. Rowkey行键
a. 在HBase中没有主键的概念取而代之的是行键。
b. 不同于传统的关系型数据库在HBase中定义表的时候不需要指定行键列而是在添加数据的时候来手动添加行键。
c. HBase默认会对行键来进行排序按照字典序排序。
2. Column Family列族/列簇
a. 在HBase中没有表关联的概念取而代之的是用列族来进行设计。
b. 在HBase中一个表中至少要包含1个列族可以包含多个列族理论上不限制列族的数量。
c. 在HBase中强调列族但是不强调列 - 在定义表的时候必须定义列族但是列可以动态增删一个列族中可以包含0到多个列。
3. namespace名称空间
a. 在HBase中没有database的概念取而代之的是namespace。
b. 在HBase启动的时候自带了两个空间default和hbase。hbase空间下放的是HBase的基本信息在建表的时候如果不指定则表默认是放在default空间下。
3. 基本命令 命令 解释 processlist 查看当前HBase在执行的任务 status 查看HBase的运行状态 version 查看HBase的版本 whoami 查看HBase的当前用户 create person, {NAME basic}, {NAME info}, {NAME other} 或者 create person, basic, info, other 建立一个person表包含3个列族:basicinfoother append person, p1, basic:name, Bob 在person表中添加一个行键为p1的数据向basic列族的name列中添加数据 get person, p1 获取指定行键的数据 get person, p1, {COLUMN basic} 或者 get person, p1, basic 获取指定行键指定列族的数据 get person, p1, {COLUMN [basic, info]} 或者 get person, p1, basic, info 获取指定行键多列族的数据 get person, p1, {COLUMN basic:name} 或者 get person, p1, basic:name 获取指定行键指定列的数据 scan person 扫描整表 scan person, {COLUMNS basic} 获取指定列族的数据 scan person, {COLUMNS [basic, info]} 获取多列族的数据 scan person, {COLUMNS [basic:name, other:address]} 获取多个列的数据 put person, p1, basic:age, 20 修改数据 delete person, p1, other:adderss 或者 deleteall person, pb, basic:name 删除指定行键指定列族的指定列 deleteall person, p1 删除指定行键的所有数据 create students, {NAME basic, VERSIONS 3}, {NAME info, VERSIONS 4} 指定每一个列族允许对外获取的版本数量 desc students 或者 describe students 描述表 get students, s1, {COLUMN basic:age, VERSIONS 3} 获取指定行键指定列的指定数量版本的数据 scan students, {COLUMNS basic:age, VERSIONS 3} 获取指定列的指定数量版本的数据 count person 统计person表中行键的个数 get_splits person 获取person表对应的HRegion的个数 truncate person 摧毁重建person表 list_namespace 查看所有的空间 create_namespace demo 创建demo空间 create demo:users, basic 在demo空间下创建users表 list_namespace_tables demo 获取demo空间下的所有表 describe_namespace demo 描述demo空间 drop_namespace demo 删除demo空间要求这个空间为空 disable demo:users 禁用表 drop demo:users 删除表 enable person 启用表 exists users 判断表是否存在 is_disabled person 判断person表是否被禁用 is_enabled person 判断person表是否被启用 list 查看所有空间下的所有的表 locate_region person, p1 定位p1行键所在的HRegion的位置 show_filters 展现所有的过滤器 disable_all demo:.* 禁用demo空间下的所有的表 drop_all demo.* 删除demo空间下的所有的表 enable_all demo:.* 启用demo空间下的所有的表
4. Hive和HBase的比较
1. Hive本质上是一个用于进行数据仓库管理的工具在实际过程中经常用于对数据进行分析和清洗提供了相对标准的SQL结构底层会将SQL转化为MapReduce来执行因此Hive的效率相对较低更适合于离线开发的场景。Hive一般针对历史数据进行分析一般只提供增加和查询的能力一般不会提供修改和删除的功能。
2. HBase本质上是一个非关系型数据库在实际过程中用于存储数据。因为HBase的读写效率较高吞吐量较大因此一般使用HBase来存储实时的数据最终数据会落地到HDFS上。HBase作为数据库提供了完整的增删改查的能力但是相对而言HBase的事务能力较弱。HBase不支持SQL提供了一套完整的命令。
3. 总结Hive强调的是分析能力但是HBase强调的是存储能力相同的地方在于两者都是利用HDFS来存储数据。
二、安装
1. 硬件环境至少需要3台虚拟机或者云主机Centos7.5及以上版本至少需要双核至少4G内存20G磁盘。
2. 软件环境JDK1.8Zookeeper3.5.7Hadoop3.1.3。
3. 进入/home/software目录下。
cd /home/software
4. 上传或者下载HBase的安装包云主机的下载地址。 wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/hbase-2.4.2-bin.tar.gz
5. 解压。
tar -xvf hbase-2.4.2-bin.tar.gz
6. 进入HBase的配置目录
cd hbase-2.4.2/conf
7. 编辑文件。
vim hbase-env.sh
#添加如下属性
export JAVA_HOME/home/software/jdk1.8
export HBASE_MANAGES_ZKfalse
#保存退出重新生效
source hbase-env.sh
8. 编辑文件。
vim hbase-site.xml
#添加如下内容
!--指定HBase在HDFS上的数据存储目录--
property
namehbase.rootdir/name
valuehdfs://hadoop01:9000/hbase/value
/property
!--开启HBase的分布式--
property
namehbase.cluster.distributed/name
valuetrue/value
/property
!--配置Zookeeper的连接地址--
property
namehbase.zookeeper.quorum/name
valuehadoop01:2181,hadoop02:2181,hadoop03:2181/value
/property
property
namehbase.unsafe.stream.capability.enforce/name
valuefalse/value
/property
property
namehbase.wal.provider/name
valuefilesystem/value
/property
9. 编辑文件。
vim regionservers
#添加当前的三台主机的主机名
10. 需要将Hadoop的核心配置文件拷贝到当前的HBase的配置目录下。
cp /home/software/hadoop-3.1.3/etc/hadoop/core-site.xml ./
11. 回到software目录下远程拷贝给另外两台云主机。
cd /home/software/
scp -r hbase-2.4.2 roothadoop02:$PWD
scp -r hbase-2.4.2 roothadoop03:$PWD
12. 配置三台主机的环境变量。
vim /etc/profile
#在文件末尾添加
export HBASE_HOME/home/software/hbase-2.4.2
export PATH$PATH:$HBASE_HOME/bin
#保存退出重新生效
source /etc/profile
13. 启动Zookeeper。
cd /home/software/apache-zookeeper-3.5.7-bin/bin
sh zkServer.sh start
sh zkServer.sh status
14. 在第一台主机上启动Hadoop的HDFS。
start-dfs.sh
15. 在第一台主机上启动HBase。
start-hbase.sh
16. 可以通过IP:16010来访问HBase的界面。