HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:宿主机可通过Asbru工具或SSH客户端进行SSH访问; 相关软件安装包在宿主机的/opt目录下,请选择对应的安装包进行安装,用不到的可忽略; 所有任务中应用命令必须采用绝对路径; 进入Master节点的方式为 docker exec -it master /bin/bash 进入Slave1节点的方式为 docker exec -it slave1 /bin/bash 进入Slave2节点的方式为 docker exec -it slave2 /bin/bash 三个容器节点的root密码均为123456
提前准备好apache-zookeeper-3.5.7-bin.tar.gz、hbase-2.2.3-bin.tar.gz放在宿主机的/opt/下(模拟的自己准备,比赛时会提供)
Hadoop 完全分布式安装配置
环境搭建请看这篇文章大数据模块A环境搭建
前提条件已经在容器里搭建完hadoop了,没搭建的请看这篇Hadoop 完全分布式安装配置
HBase分布式安装配置
本任务需要使用root用户完成相关配置,安装HBase需要配置Hadoop和ZooKeeper等前置环境。命令中要求使用绝对路径,具体要求如下:
1、 从宿主机/opt目录下将文件apache-zookeeper-3.5.7-bin.tar.gz、hbase-2.2.3-bin.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),将ZooKeeper、HBase安装包解压到/opt/module目录下,将HBase的解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
第一步:从宿主机/opt目录下将文件apache-zookeeper-3.5.7-bin.tar.gz、hbase-2.2.3-bin.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建)
ZooKeeper
[root@Bigdata ~]# docker cp /opt/apache-zookeeper-3.5.7-bin.tar.gz master:/opt/software/
HBase
[root@Bigdata ~]# docker cp /opt/hbase-2.2.3-bin.tar.gz master:/opt/software/
第二步:将ZooKeeper、HBase安装包解压到/opt/module目录下
ZooKeeper
[root@master ~]# tar zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
HBase
[root@master ~]# tar zxvf /opt/software/hbase-2.2.3-bin.tar.gz -C /opt/module/
改一下名字
[root@master ~]# mv /opt/module/apache-zookeeper-3.5.7-bin /opt/module/zookeeper
[root@master ~]# mv /opt/module/hbase-2.2.3 /opt/module/hbase
2、 完成ZooKeeper相关部署,用scp命令并使用绝对路径从容器master复制HBase解压后的包分发至slave1、slave2中,并修改相关配置,配置好环境变量,在容器Master节点中运行命令hbase version,将全部复制命令复制并将hbase version命令的结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
第一步: 完成ZooKeeper相关部署
1.修改文件名称
[root@master ~]# mv /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg
2.配置zoo.cfg
[root@master ~]# vi /opt/module/zookeeper/conf/zoo.cfg
dataDir=/opt/module/zookeeper/data
datdLogDir=/opt/module/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
代码位置如图:
3.创建目录
[root@master ~]# mkdir /opt/module/zookeeper/data
[root@master ~]# mkdir /opt/module/zookeeper/logs
4.添加myid文件到data里(里面就填一个数字,master填1,slave1填2,slave2填2)
[root@master ~]# vi /opt/module/zookeeper/data/myid
5.把配置好的zookeeper分发到子节点去
[root@master ~]# scp -r /opt/module/zookeeper slave1:/opt/module/
[root@master ~]# scp -r /opt/module/zookeeper slave2:/opt/module/
6.修改子节点的myid
vi /opt/module/zookeeper/data/myid
7.配置HBase
[root@master ~]# vi /opt/module/hbase/conf/hbase-env.sh
在文件末尾添加
export JAVA_HOME=/opt/module/java
export HADOOP_HOME=/opt/module/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HBASE_MANAGES_ZK=false
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_PID_DIR=${HBASE_HOME}/pid
8.配置 hbase-site.xml
文件
[root@master ~]# vi /opt/module/hbase/conf/hbase-site.xml
在 configuration
标签中添加如下内容:
<!--指定 hbase 根路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
<!--浏览器的访问端口-->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!--将 hbase 设置为分布式部署 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--指定hbase在本地下生成文件路径 -->
<property>
<name>hbase.tmp.dir</name>
<value>/opt/module/hbase/tmp</value>
</property>
<!--指定 zookeeper 服务器 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<!-- 避免出现启动错误。 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
9.修改 regionservers
文件
[root@master ~]# vi /opt/module/hbase/conf/regionservers
文件里面只放下面内容
master
slave1
slave2
10.删除slf4j-log4j12-1.7.25.jar 解决 log4j 兼容性问题
[root@master ~]# rm -rf /opt/module/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar
第二步:用scp命令并使用绝对路径从容器master复制HBase解压后的包分发至slave1、slave2中
[root@master ~]# scp -r /opt/module/hbase slave1:/opt/module/
[root@master ~]# scp -r /opt/module/hbase slave2:/opt/module/
第三步:配置好环境变量/etc/profile
[root@master ~]# vi /etc/profile
在文件末尾添加
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
将环境变量分发给子节点
[root@master ~]# scp /etc/profile slave1:/etc/
[root@master ~]# scp /etc/profile slave2:/etc/
使环境变量生效
[root@master ~]# source /etc/profile
第四步:在容器Master节点中运行命令hbase version
[root@master ~]# hbase version
3、 启动HBase后在三个节点分别使用jps命令查看,并将结果分别截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;正常启动后在hbase shell中查看命名空间,将查看命名空间的结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
第一步: 启动HBase后在三个节点分别使用jps命令查看
hadoop启动(一定要启动)
start-all.sh
先启动zookeeper(三个节点都要启动)
[root@master ~]# zkServer.sh start
[root@slave1 ~]# zkServer.sh start
[root@slave2 ~]# zkServer.sh start
启动HBase
[root@master ~]# start-hbase.sh
jps
master
slave1
slave2
第二步:正常启动后在hbase shell中查看命名空间
1.进入shell
[root@master ~]# hbase shell
2.查看命名空间
hbase(main):001:0> list_namespace
END
一键三连是我写文章的动力!
声明:此文章为个人学习笔记,如文章有问题欢迎留言探讨,也希望您的指正 !