本节在 Windows Docker 安装配置 HBase
接 Windows Docker 安装部署 Hadoop
docker start -i master宿主机: F:-1.1.2-bin.tar.gz
Docker 容器:/home/hbase-1.1.2-bin.tar.gz
新建终端窗口
docker cp F:/Temp/hbase-1.1.2-bin.tar.gz master:/home/PS: 不管容器有没有启动,拷贝命令都会生效,若拷贝命令的内容有重复,会直接覆盖,不会询问。
master 内执行,检查是否复制成功
ls /home
image-20201227132629315
tar -zxf /home/hbase-1.1.2-bin.tar.gz -C /usr/local检查是否解压成功
ls /usr/local
image-20201227133005688
/usr/local/hbase-1.1.2/bin/hbase version
image-20201227133134620
保存为镜像
docker commit master ubuntu/hbaseinstalled
image-20201227133251574
检查镜像
docker images
image-20201227133506643
先退出 master 容器
exit确保容器已停止
docker ps
image-20201227133855775
删除 master、slave01、slave02
docker rm master
docker rm slave01
docker rm slave02
image-20201227134103004
检查容器是否已经被删除
docker ps -a
image-20201227134218707
首先创建并启动 3节点 容器
新建 3 终端窗口,分别执行
docker run -it -h master --name master -p 50070:50070 -p 18088:18088 ubuntu/hbaseinstalleddocker run -it -h slave01 --name slave01 ubuntu/hbaseinstalleddocker run -it -h slave02 --name slave02 ubuntu/hbaseinstalled
image-20201210085540012
补充:
再次启动,只需
docker start -i master
docker start -i slave01
docker start -i slave02由于使用传统ip方式建立链接需要修改hosts,而docker 每次重启容器 hosts 文件都会重置,所以这次事先准备好hosts文件, 在每次重启后,从宿主机复制到容器内,覆盖原 /etc/hosts
先查看容器ip
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
image-20201227135129458
创建文件 F:/Temp/hosts,内容如下
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 master
172.17.0.3 slave01
172.17.0.4 slave02从宿主机复制到容器中
docker cp F:/Temp/hosts master:/etc/docker cp F:/Temp/hosts slave01:/etc/docker cp F:/Temp/hosts slave02:/etc/TODO: 直接从宿主机复制文件 hosts 失败
Error response from daemon: Error processing tar file(exit status 1): unlinkat /etc/hosts: device or resource busy

image-20201227140356827
临时解决:先复制到 /home/
docker cp F:/Temp/hosts master:/home/
docker cp F:/Temp/hosts slave01:/home/
docker cp F:/Temp/hosts slave02:/home/检查,是否复制成功
cat /home/hosts
image-20201227140712189
再复制替换 /etc/hosts
master、slave01、slave02 都要执行
cp /home/hosts /etc/hosts检查是否替换成功
cat /etc/hosts
image-20201227141242809
master、slave01、slave02 都要执行
/etc/init.d/ssh start
image-20201210090723410
测试连接
在 master 上执行
ssh slave01中间若出现询问, 输入 yes 即可,如下图,成功连接 slave01, 按此方法
exit(退出slave01) 后,再连接slave02

image-20201210095343104
到此 3节点 成功建立链接
3 节点 成功启动,并能连接成功后
只需要格式化一次,以后不需要
/usr/local/hadoop-2.7.3/bin/hdfs namenode -format
或
hdfs namenode -format
image-20201210100009063

image-20201210100055325
出现上图 ·
status 0说明 成功
start-all.sh在 master的终端 执行jps命令
jps
image-20201210100701857
在 slave01的终端 执行jps命令

image-20201210100745828
在 slave02 的终端 执行jps命令

image-20201210100813559
至此,hadoop 启动完成
在 master 上执行
启动 HBase(master上执行)
/usr/local/hbase-1.1.2/bin/start-hbase.sh
image-20201229194322743
进入 HBase Shell(master上执行)
/usr/local/hbase-1.1.2/bin/hbase shell
image-20201229194429425
在shell模式下输入 help 查看 HBase 相关命令

image-20201227143025079
退出 HBase Shell
exit停止 HBase 运行
/usr/local/hbase-1.1.2/bin/stop-hbase.sh
image-20201229202054705
create 'student','Sname','Ssex','Sage','Sdept','course'
image-20201229194520759
此行命令,创建了一个 "student"表,属性有:'Sname','Ssex','Sage','Sdept','course', 因为 HBase 的表中会有
一个系统默认的属性作为主键,所以主键无需自行创建,创建完表后,可通过 describe 命令查看 表的基本信息
describe 'student'
image-20201229195036215
HBase 使用 put 添加数据,一次只能为一个表的一行数据的一个列添加
一个数据下方为student表添加一行:主键为 21830,名字为 yiyun(一个数据)
put 'student','21830','Sname:','yiyun'
image-20201229195737255
下方为student表中 主键为 21830 的一行,添加 course列族 的 math列 为 67(一个数据)
put 'student','21830','course:math','67'
image-20201229200317350
HBase 中有两个查看数据的命令:
查看主键为 21830 的一行
get 'student','21830'
image-20201229200508870
查看 'student' 表全部数据
scan 'student'
image-20201229200658721
HBase 中删除数据两方式:
一个 数据,是 put 的反向操作一行数据在删除之前,先添加一点数据
put 'student','21830','Ssex:','man'put 'student','12345','Ssex:','man'put 'student','12345','Sname:','nana'scan 'student'
image-20201229201457669
删除student表中 主键为 21830 的 行下的Ssex列的所有版本的数据
delete 'student','21830','Ssex'scan 'student'
image-20201229201724139
可以看到 21830 的 Ssex列 已被删除
删除student表中的 12345行 的全部数据
deleteall 'student','12345'scan 'student'
image-20201229201928303
可以看到 12345 行的所有数据均被删除