实操_HBase学习_v0.0.1_持续更新。。。

文件名称 版本号 作者 qq 备注
实操_HBase学习_持续更新。。。 v0.0.1 飞豺 8416837 hbase1.3.5| Ubuntu18

尊重版权,转载请注明出处:https://blog.csdn.net/cc007cc009/article/details/101834881

概念

结构

稀疏矩阵
词语 释义
稀疏矩阵 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵
稠密矩阵 与上述相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵
稠密度 定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度

使用python打印一个稀疏矩阵看看↓

from scipy import sparse
row = [2,2,3,2]
col = [3,4,2,3]
c = sparse.coo_matrix((data,(row,col)),shape=(5,6))
print(c.toarray()) # 打印一个稀疏矩阵

在这里插入图片描述
非0的元素好比是数据,空Cell不占空间。
这种结构方便存储互联网等数据,在统计分析时,载入数据后,可以将空值按一定规则补全。类稀疏矩阵形态的HBase表结构模拟图↓
在这里插入图片描述

Scalable-可缩放的意义
schema-less无模式

每一行中,列的组成都是灵活的,行与行之间并不需要遵循相同的列定义。如第一行有三个字段,第二行却可以有五个或两个字段。没有字段的部分就是0,因此与上文的稀疏矩阵结构相呼应了。

数据

异形数据

图数据

图数据:两个节点之间的连接称为边,节点称为顶点,顶点的边数叫度数。

多租户

多租户间的隔离

HBase集群中的RegionServers可以按逻辑划分为多个Groups,一个表可以与一个指定的Group绑定,可以将RegionServer Group理解成将一个大的集群划分成了多个逻辑子集群,借此可以实现多租户间的隔离

管理

Zk

仲裁

如ha情境下,如果存在主Master和备Master,由Zookeeper裁定主备。

安装

纯朴的安装包安装-Ubuntu18.04.2

下载和配置
  • 下载解压
sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.5/hbase-1.3.5-bin.tar.gz # 下载tar包
sudo tar xvzf hbase-1.3.5-bin.tar.gz -C /home/app/
  • 配置环境
cd /home/app/hbase-1.3.5/
sudo vim conf/hbase-env.sh # 配置java
echo ${JAVA_HOME} # 查看java_home,复制过去

在这里插入图片描述
在这里插入图片描述
将JAVA_HOME修正.

export HBASE_MANAGES_ZK=true # 自己管理ZK
  • 配置存储
# cd hbase根目录
sudo vim conf/hbase-site.xml # ubuntu环境 => sudo gedit conf/hbase-site.xml

粘贴下述文件

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <!-- hdfs实例上安装 => <value>hdfs://namenode.example.org:8020/hbase</value> -->
    <value>file:///home/testuser/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
</configuration>

以HDFS为底层存储的配置以及页面截图↓

<property>
	<name>hbase.rootdir</name>
	<!-- 下述地址即是Hadoop配置的HDFS-URI的子地址 -->
	<value>hdfs://localhost:54310/hbase</value>
</property>

在这里插入图片描述
↑/hbase即是自定义的目录

打入配置后↓
在这里插入图片描述

启动
单机模式
伪集群模式
  • 简单的启动命令,先测试,之后再配置环境变量
# cd hbase根目录 或者给命令配置环境变量
sh bin/start-hbase.sh
  • 报错↓
bin/start-hbase.sh: 51: [: false: unexpected operator
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:9NDPr4DH3jwecYKReeFtLrB6JnDVK8I8rGb6J5QOvf4.
Are you sure you want to continue connecting (yes/no)?
  • 填入yes,继续报错↓
Are you sure you want to continue connecting (yes/no)? yes
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: ssh_dispatch_run_fatal: Connection to 127.0.0.1 port 22: Broken pipe
mkdir: cannot create directory ‘/home/app/hbase-1.3.5/bin/../logs’: Permission denied
starting master, logging to /home/app/hbase-1.3.5/bin/../logs/hbase-abuntucc-master-ubuntu.out
/home/app/hbase-1.3.5/bin/hbase-daemon.sh: line 189: /home/app/hbase-1.3.5/bin/../logs/hbase-abuntucc-master-ubuntu.out: No such file or directory

↑没有权限创建日志目录。

# 解决Broken pipe ↓
ssh -o ServerAliveInterval=60 [email protected]

使用母机Windows远程连接该ubuntu服务器试试。
下载远程软件FinalShell => 点击下载
连接成功↓
在这里插入图片描述
远程后,结果一样。

  • 于是给目录授权试试=>sudo chmod 777 -R hbase-1.3.5/,启动ing↓
    在这里插入图片描述
  • 报错分析
51: [: false: unexpected operator
# 解决
sudo chown -R abuntucc hbase-1.3.5/
sudo passwd root # root密码设置

在这里插入图片描述

  • 授权数据目录
sudo chown -R abuntucc testuser/
sudo chmod 777 -R testuser/
  • 启动日志,master的报错:
Could not start ZK at requested port of 2181. ZK was started at port: 2182.  Aborting as clients (e.g. shell) will not be able to find this ZK quorum.

↑找不到ZK

  • 开启分布式,conf/hbase-site.xml 增加↓
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  • 再次启动,启动成功,显示三个进程↓
    在这里插入图片描述
    如果换了虚拟机ip,启动时,HRegionServer报错:连接之前的ip:16000这个地址失败。那就需要将ip还原。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    起始ip改为原ip即可。可能是一个缓存bug。
进程 所属节点
HMaster master
HQuorumPeer slave
HRegionServer slave

解决每次启动脚本都需要输入当前系统密码↓

sudo visudo
# 在%sudo ALL=(ALL:ALL) ALL下面添加一行
yourusername ALL=(ALL) NOPASSWD: ALL

操作

配置环境变量
sudo vim /etc/profile
# 添加↓
export HBASE_HOME=/home/app/hbase-1.3.5
export  PATH=${HBASE_HOME}/bin:${JAVA_HOME}/bin:$PATH
source /etc/profile

测试成功与否,成功↓
在这里插入图片描述

shell操作-效率不高
建表
hbase shell # 输入后,过一会儿出现光标,然后贴入建表命令
create 'student','Sname','Ssex','Sage','Sdept','course' # 建表
describe 'student' # 查看描述
create 'teacher',{NAME=>'username',VERSIONS=>5} # 创建表示指定保存的版本数
list # 列出所有表

在这里插入图片描述
列出全部表,当前只有student和teacher
在这里插入图片描述
添加数据,表名后的第一个参数是rowKey

put 'student','920003','Sname','9527';
put 'student','920003','Ssex','Male';
put 'student','920003','Sdept','IS';
put 'student','920005','Sname','祝枝山';
put 'student','920005','course:math','95';
put 'student','920005','course:agriculture','98'
# shell需逐条添加每个单元格,不便利.用分号间隔可以一次执行多条shell命令

在这里插入图片描述

查表
  • 脚本
# 脚本
操作 命令 结果
查询全表 scan '表名' 在这里插入图片描述
根据行键查询 get 'student','920003' 在这里插入图片描述
根据行键、族名查询 get 'student' ,'920005','course' 在这里插入图片描述
根据行键、族名:列名查询 get 'student' ,'920005','course:agriculture' 在这里插入图片描述
根据行键删除一行 deleteall 'student' ,'920003'
根据行键、族名删除列 delete 'student','920003','Sage'
更新数据-添加数据即可 put 'student','920005','course:agriculture','100' | 原value==98 在这里插入图片描述
删除表 disable 'student';drop 'student'
exit # 退出

hive操作hbase

待续。。。

原创文章 59 获赞 8 访问量 4万+

猜你喜欢

转载自blog.csdn.net/cc007cc009/article/details/101834881