大家好,又见面了,我是你们的朋友全栈君。
一,在ubuntu主机上安装hbase,
在上一章中我们已经在ubuntu3主机上安装了hbase,这里为了省事,直接远程复制到ubuntu主机上。
xiaoye@ubuntu3:~$ ls apache-activemq-5.15.3 hbase Public classes hive QueryResult.java derby.log metastore_db SDS.java Desktop Music sqoop Documents mysql-connector-java-5.1.32 Templates Downloads Pictures Videos examples.desktop product2.java zookeeper hadoop product.java zookeeper.out
xiaoye@ubuntu3:~$ scp -r hbase/ xiaoye@ubuntu:/home/xiaoye/
1.2修改配置文件,
第一个是:
xiaoye@ubuntu3:~/hbase/conf$ vim hbase-env.sh
这里是修改java_home地址,我们再上一章改过了也不用改了。
第二个是:xiaoye@ubuntu3:~/hbase/conf$ vim hbase-site.xml
下面的hdfs://ns/hbase对应的是:hadoop的core-site.xml中的配置,如:
<configuration> <!– 指定hbase在hdfs上的存储路径 –> <property> <name>hbase.rootdir</name> <value>hdfs://ns/hbase</value> </property> <!– 指定hbase客户端端口–> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2182</value> </property> <!– 指定hbase是分布式的–> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!–指定zk地址,多个用“,”分割–> <property> <name>hbase.zookeeper.quorum</name> <value>ubuntu3:2181</value> </property> </configuration>
第三个是:regionservers(被管理者),HBase做为管理者的是HMaster,被管理者是HRegionServer,被管理者一般有多个。这里我们为了高可靠性,把ubuntu,ubuntu2当做管理者,是为了后面测试一个管理者挂掉后,能够有备用的切换,ubuntu3作为被管理者。
xiaoye@ubuntu3:~/hbase/conf$ vim regionservers
ubuntu3 ~
~
配置完上面的内容后,这里还有个问题,那就是HBase需要依赖集群的HDFS和Zookeeper,关于Zookeeper,我们在HBase的配置文件中已经明确指定了,但是关于HDFS,我们只是配置了http://ns1,它并不知道具体的映射关系,也就是说只是告诉HBase的小弟HRegionServer应该连NameNode,但是它并不知道NameNode具体在哪几台设备上,也不知道DataNode在哪几台设备上,那么这样的话,HRegionServer进程便无法正常启动。为了解决这个问题,我们有两种方式可以解决:第一种是在hbase-site.xml中配置映射关系,第二种就是把有映射关系的文件拷贝到HBase的conf目录下,这样HBase就会自动去读取配置文件并获取映射关系,从而可以正常启动HRegionServer进程。为了简单,我们这里就采用第二种方法即向HBase的conf目录下。
xiaoye@ubuntu3:~/hbase/conf cd ..xiaoye@ubuntu3:~/hbase cd ..xiaoye@ubuntu3:~ cd hadoop/etc/hadoopxiaoye@ubuntu3:~/hadoop/etc/hadoop cp core-site.xml hdfs-site.xml ~/hbase/conf/xiaoye@ubuntu3:~/hadoop/etc/hadoop cd ..xiaoye@ubuntu3:~/hadoop/etc cd ..xiaoye@ubuntu3:~/hadoop cd ..xiaoye@ubuntu3:~ ls hbase/conf/core-site.xml hbase-env.sh hdfs-site.xmlhadoop-metrics2-hbase.properties hbase-policy.xml log4j.propertieshbase-env.cmd hbase-site.xml regionserversxiaoye@ubuntu3:~
到这步我们已经配置好了一台设备的HBase,接下来我们把这台设备上的HBase目录拷贝到其它设备上去。这里我们也是远程复制,但是hbase有点打,我们就复制我们改的文件所在的目录把,
ubuntu2还没有安装就全都复制过去:
xiaoye@ubuntu3:~$ scp -r hbase/ xiaoye@ubuntu2:/home/xiaoye/
ubuntu:
xiaoye@ubuntu:~/hbase/conf cd ..xiaoye@ubuntu:~/hbase mv conf/ conf-bakxiaoye@ubuntu:~/hbase
xiaoye@ubuntu:~/hbase$ pwd
/home/xiaoye/hbase
ubuntu3执行命令:
xiaoye@ubuntu3:~$ scp -r hbase/conf/ xiaoye@ubuntu:/home/xiaoye/hbase/ Warning: Permanently added ‘ubuntu,192.168.72.131’ (ECDSA) to the list of known hosts. hbase-env.cmd 100% 4196 4.1KB/s 00:00 regionservers 100% 8 0.0KB/s 00:00 hbase-env.sh 100% 7287 7.1KB/s 00:00 core-site.xml 100% 1332 1.3KB/s 00:00 hbase-policy.xml 100% 2257 2.2KB/s 00:00 hdfs-site.xml 100% 3742 3.7KB/s 00:00 hadoop-metrics2-hbase.properties 100% 1026 1.0KB/s 00:00 log4j.properties 100% 3554 3.5KB/s 00:00
hbase-site.xml
这样三台机子都配置好了:
因为小编这里事先已经启动好zookeeper和hdfs,所以就直接起动hbase.
在ubuntu上启动hbase:
xiaoye@ubuntu:~/hbase ./bin/start-hbase.sh ubuntu2: Warning: Permanently added ‘ubuntu2,192.168.72.132’ (ECDSA) to the list of known hosts.ubuntu: Warning: Permanently added ‘ubuntu,192.168.72.131’ (ECDSA) to the list of known hosts.ubuntu3: Warning: Permanently added ‘ubuntu3,192.168.72.133’ (ECDSA) to the list of known hosts.ubuntu: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu.outubuntu3: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu3.outubuntu2: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu2.outstarting master, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-master-ubuntu.outubuntu3: Warning: Permanently added ‘ubuntu3,192.168.72.133’ (ECDSA) to the list of known hosts.ubuntu3: starting regionserver, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-regionserver-ubuntu3.outxiaoye@ubuntu:~/hbase jps1838 NameNode1492 JournalNode2416 DataNode18813 Jps2529 NodeManager2736 DFSZKFailoverController1454 QuorumPeerMain18630 HMaster
xiaoye@ubuntu:~/hbase$
发现多了一个HMaster进程,这个进程是HBase的管理进程。
我们还需要到ubuntu3看看有没有HRegionServer备用进程:
xiaoye@ubuntu3:~$ jps 18845 Jps 18708 HRegionServer 1431 QuorumPeerMain 2279 ResourceManager 1503 JournalNode 2196 DataNode 2424 NodeManager
xiaoye@ubuntu3:~$
发现也是有的。
打开hbase的界面,端口默认是60010
这里我们再ubuntu和ubuntu2上设置为master。目前我们启动的是ubuntu上的hbase.如果再启动ubuntu2上的hbase,就会把ubuntu的hbase给冲掉。即ubuntu2替换掉ubuntu当做master.
如下:
xiaoye@ubuntu2:~$ ./hbase/bin/start-hbase.sh xiaoye@ubuntu3’s password: ubuntu: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu.out ubuntu2: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu2.out
xiaoye@ubuntu3’s password: ubuntu3: Permission denied, please try again.
xiaoye@ubuntu3’s password: ubuntu3: Permission denied, please try again.
ubuntu3: Permission denied (publickey,password). starting master, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-master-ubuntu2.out
xiaoye@ubuntu3’s password:
ubuntu3: regionserver running as process 21863. Stop it first.xiaoye@ubuntu2:~ xiaoye@ubuntu2:~ jps25022 JournalNode25205 NameNode27101 HMaster25383 NodeManager1402 QuorumPeerMain25385 DFSZKFailoverController25633 DataNode
27226 Jps
ubuntu没有反应
ubuntu2成为master
点击上图的ubuntu3可跳转到ubuntu3界面。
三,下面我们测试hbase的高可用性。
目前是:
可以看出,ubuntu处于激活状态,为master.ubuntu2处于备用状态,二者都是hbase管理者。ubuntu3是regionServer被管理者。现在我kill 掉ubuntu的hmaster。
xiaoye@ubuntu:~$ jps 20832 NodeManager 21030 DFSZKFailoverController 25696 Jps 20615 JournalNode 20693 NameNode 25569 HMaster 21172 DataNode 1454 QuorumPeerMain
xiaoye@ubuntu:~$ kill -9 25569
ubuntu的界面已经打不开了。
看看Ubuntu2的界面:
已经自动切换成active状态。
第五步:查看HBase的文件存储信息
我们在配置HBase的时候配置过<value>hdfs://ns/hbase</value>这么一条信息,这条配置意味着,HBase将在HDFS系统的根目录下创建一个hbase的目录,并将HBase产生的数据放到这个目录下面。那么我们通过查看HDFS系统来验证是否已经生成了Hbase的目录。
看到下图确实存在hbase目录
点开hbase有如下目录:
创建表并在管理界面查看我们建的表。
这里一直卡主了,先放着。不过能进行到动态切换设备也算大功告成了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106164.html原文链接:https://javaforall.cn