Hbase实验报告
1.实验目的
本次是通过安装列族数据库的实例hbase,从而了解和掌握列族数据库的基本知识和使用方法。
2.实验环境
宿主机:Windows 10
虚拟环境:三台 centos 7
Jdk版本:1.8_241
Hbase版本:hadoop-3.1.3+zookeeper-3.4.14+hbase-2.2.4
3.实验步骤
3.1安装步骤
3.1.1 安装hadoop
3.1.1.1修改hosts文件
此操作在三台虚拟机上都要执行,因为三台虚拟机的文件相同,可以使用scp进行传送。
3.1.1.2 安装jdk
解压jdk安装包:tar -zxvf jdk-8u241-linux-x64.tar.gz
在环境变量文件中写入jdk的路径,soure使环境变量文件生效。
检查jdk环境:
Jdk需要在三个节点上进行配置。
3.1.1.3 设置免密登录
1.使用ssh-****** -t rsa创建rsa密码
2. cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
将公钥写入认证文件这一步是将自己的公钥写入认证文件
3. ssh [email protected] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
- 查看配置文件内容
**都已经写入认证文件
- 查看known_hosts中的主机列表
vi ~/.ssh/known_hosts
- 将认证文件复制到其他主机
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/authorized_keys
将所有的节点都尝试使用ssh登录其他节点,确认ssh免密登录已经成功。
3.1.1.4 关闭防火墙及SELINUX
systemctl stastus fiewalld.service #查看防火墙状态
systemctl stop fiewalld.service #临时关闭防火墙
systemctl disable fiewalld.service #禁止开机自启动
systemctl start fiewalld.service #打开防火墙
systemctl enable fiewalld.service #打开开机启动
关闭selinux分为临时关闭和永久关闭,永久关闭需要修改配置文件,在/etc/sysconfig/selinux中:
3.1.1.5 解压安装hadoop
解压之后将hadoop的目录写入到环境变量文件。
3.1.1.6 修改配置文件
①workers
②core-site.xml
③hdfs-site.xml
④mapred-site.xml
⑤yarn-site.xml
⑥Hadoop-env.sh
这些配置文件要求三个节点是相同的,所以可以采用当前节点执行完之后,将所有的配置文件复制到其他节点上。
3.1.1.7 格式化 namenode
使用命令:hdfs namenode -format
3.1.1.8 启动
使用start-dfs.sh和start-yarn.sh进行启动hadoop,因为hadoop3.0以上改版之后,有很多不同,可能需要在文件头部添加如下语句,在start-dfs.sh头部添加如下:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh中添加如下语句:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
使用jps查看各个节点的进程情况,一切正常。
3.1.2 安装zookeeper
3.1.2.1 解压安装zookeeper
3.1.2.2 修改配置文件
①复制文件模板
cp /usr/zookeeper-3.4.10/conf/zoo-sample.cfg /usr/zookeeper-3.4.10/conf/zoo.cfg
②修改配置文件zoo.cfg,添加如下:
③创建myid文件,touch /usr/zookeeper-3.4.10/data/myid
3.1.2.3 启动zookeeper
3.1.3 安装hbase
3.1.3.1 解压安装
3.1.3.2 修改配置文件
修改$hbase_home/conf/hbase-env.sh
修改$hbase_home/conf/regionservers
修改$hbase_home /conf/hbase-site.xml
将hbase复制到其他两个节点中。
3.1.3.3 启动
使用$hbase_home/bin/start-hbase.sh启动hbase
从进程情况表明hbase正常启动,Hmaster进程正在执行。
3.2 简单使用
3.2.1 建立表
建立一个person的表,有列族name、age、address列族。
3.2.2 加入数据
放入一个数据,其rowkey为wuhao,年龄为20。
3.2.3 查看数据
通过get可以获得特定rowkey的数据,而使用scan可以扫描整个表。
3.2.4 删除表
在删除表之前必须先使用命令disable,这样使表停止使用,处于不活跃的状态,然后在使用drop命令删除表。
- 问题
在实验中这么几次进行安装的时候,总是会遇到zookeeperu虽然是启动正常,但是查看状态却显示未在运行,经过不断排查发现,zookeeper的myid会经常的产生错误,我本来输入的是1,但是经过不断的尝试启动之后,变成了111111,这样这个节点就没法启动了。经过修改之后,所有的zookeeper均正常启动。但是有时候在使用结束之后,下次再使用的时候也可能发生错误。
- 总结
在Hbase里面有以下两个主要的概念,Row key,Column Family,Column family,Column family中文又名“列族”,Column family是在系统启动之前预先定义好的,每一个Column Family都可以根据“限定符”有多个column。
Hbase一个明显的优点是可扩展性非常强, 一个行可以有很多列,可以存储不确定的信息,而且如果是稀疏的话,对于为空(null)的列并不占用内存空间,因此,表可以设计的非常稀疏。数据类型单一:HBase中数据类型都是字符串。无模式:每一行都有一个可以排序的rowKey和任意多的列,列可以根据需要动态增加,同一张表的不同行可以有截然不同的列。
但是hbase 的rowkey也是限制了其不可能有效地支持多条件查询。