第五次
1. HBase 基础知识
Hbase 是一种 NoSQL 数据库,不像传统的 RDBMS 那样支持 SQL 作为查询语言。Hbase 是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多 RDBMS 系统的特性,比如列类型,辅助索引,触发器和高级查询语言等待。
在关系型数据库的多表查询中,原理是进行笛卡儿积后,再进行过滤,而这对于数据量巨大的情况下,效率是相当低下的。
2. HBase 和 zookeeper 单机安装
2.1. 下载
在 https://zookeeper.apache.org 的 Apache ZooKeeper 下载 bin.tar.gz
文件,并上传到虚拟机。
2.2. 解压
修改目录名
2.3. 添加环境变量
2.4. 配置 zookeeper
2.4.1. 修改配置文件 ZK_HOME/conf/zoo.cfg
先复制一份 zoo_example.cfg
,然后修改复制的 zoo.cfg
,将数据路径 dataDir
修改至自己的路径
2.4.2. 创建 data
文件夹
2.4.3. 尝试开启 zookeeper 服务
2.4.4. 查看 zookeeper 状态
此处显示开启了单机模式 (standalone)
2.4.5. 此时 data
目录下生成了以下内容
2.4.6. 使用 jps
命令,列出以下的进程
2.4.7. 停止服务
2.5. 配置 hbase
2.5.1. 修改环境配置文件 HBASE_HOME/conf/hbase-env.sh
由于在这里我们用的是 JDK8,因此将下面两行注释。
2.5.2. 修改 HBASE_HOME/conf/hbase-site.xml
将以下配置写入 <configuration>
标签
2.6. 启动 hbase 服务
2.6.1. 在 HBASE_HOME/bin
下启动
2.6.2. 使用 jps
命令,查看 hbase 进程 HMaster 是否运行
2.6.3. 开放端口
2.6.4. 访问测试 http://172.22.0.3:60010/
2.6.5. 停止服务
3. HBase shell 命令的使用
3.1. 开启 shell
在 $HBASE_HOME/bin
下执行命令
3.2. 通用命令
命令 | 作用 |
---|---|
help | 查看命令的帮助,如:help “create” |
status | 查看应用状态 |
table_help | 查看表信息 |
version | 查看版本 |
whoami | 查看当前用户 |
exit | 退出 Shell 命令 |
3.3. HBase 数据结构
HBase 不支持关系模型,它可以根据用户的需求提供更灵活和可扩展的表设计。
- 表(table)
- 行(row)
- 列族(Column Family)
- 列标识(Column Qualifier)
- 单元格(cell)
- 时间戳(Timestamp)
3.4. DDL 命令
命令 | 作用 |
---|---|
create 'tab1','f1','f2' | 创建表,必须有表名和至少一个列族名 |
list | 列出所有表的信息 |
describe(desc) 'tab1' | 列出表的详细信息 |
alter 'tab1', NAME => 'f1' | 修改表 |
get '表名', '行键','列名' | 查看表 |
scan '表名' | 查看全表 |
drop/dropall | 删除/批量删除(正则语法)表 |
disable /disable_all /enable /enable_all | 禁用/启用表 |
is_disabled /is_enabled | 判断表是否禁用/启用 |
exists | 判断表是否存在 |
4. 分布式模式
4.1. 在从机上同样安装 zookeeper
4.1.1. 使用 scp
拷贝
该命令会利用 ssh 进行拷贝,因此可以将文件传输到从属机上。-r
表示递归。
4.1.2. 修改 zoo.cgf
由于需要配置集群,所以向配置文件中写入各个服务器
4.1.3. 将这个配置拷贝至从属机
4.1.4. 删除数据文件 填写服务器 ID
对于从属机,执行类似的操作,其中 myid 中填入的为上面 server.
后面的数字
4.1.5. 将 .bash_profile
配置拷贝至 slave1 和 slave2
关闭防火墙,以便启动 Zookeeper 集群(对每台虚拟机都执行操作)
4.1.6. 逐一启动 zkServer 服务 zkServer.sh start
启动完成后,通过 zkServer.sh status
可以查看状态。这 3 台服务器上,有一台为 leader,而其他为 follower。
Error: contacting service. It is probably not running
可能涉及到服务器选举的问题,因此可以先启动 leader,再启动 follower。
另一种可能的解决方案,删除 $HBASE_HOME/data/
下的 version-2
目录,再重新启动 zkServer.sh
实在不行,那就重新启动虚拟机
4.2. 在 HDFS 上建立用于存储 Hbase 数据的文件夹
4.3. 配置和克隆 hbase
4.3.1. 修改环境变量文件 HBASE_HOME/conf/hbase-env.sh
该设置让 Hbase 使用一个现有的被 Hbase 托管的 Zookeeper 集群,当 Hbase 启动时,无需手动启动 Zookeeper;如果设置为 false,则启动 Hbase 前需手动开启 Zookeeper,当重启 Hbase 时,则无需重启 Zookeeper.
4.3.2. 修改配置文件 HBASE_HOME/conf/hbase-site.xml
4.2.4. 配置 regionservers
在 hbase/conf/
下创建 regionservers
文件,其中写入 hbase 部署的主机名。
4.2.5. 确认 Hadoop 的依赖 jar 文件与 Hbase 的版本相同
4.2.6. 拷贝 hbase 至从机
4.4. 启动 Hbase
4.4.1. 命令启动 Hbase
在启动 start-dfs.sh
之后,在 /home/lc/hbase/bin
下启动 hbase。其中,我们可以不用再手动逐个启动 zkServer 了,因为在之前的配置中,已经会在启动 hbase 之前先自动启动 zkServer。
启动后 master 上运行了 HMaster
从机的情况
4.4.2. 访问端口
进入 https://172.22.0.3:60010/ 中,查看启动情况。
4.4.3. 停止服务
master 停止 hbase
停止 hdfs