大家好,又见面了,我是你们的朋友全栈君。
一,在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/hadoop
xiaoye@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.xml
hadoop-metrics2-hbase.properties hbase-policy.xml log4j.properties
hbase-env.cmd hbase-site.xml regionservers
xiaoye@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-bak
xiaoye@ubuntu:~/hbase$ ls
bin hbase-checkstyle hbase-protocol LICENSE.txt
CHANGES.txt hbase-client hbase-rest logs
cloudera hbase-common hbase-server NOTICE.txt
conf-bak hbase-examples hbase-shell oldWALs
data hbase-hadoop2-compat hbase-testing-util pom.xml
dev-support hbase-hadoop-compat hbase-thrift README.txt
docs hbase.id hbase.version src
hbase-annotations hbase-it hbase-webapps WALs
hbase-assembly hbase-prefix-tree lib
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.out
ubuntu3: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu3.out
ubuntu2: starting zookeeper, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-zookeeper-ubuntu2.out
starting master, logging to /home/xiaoye/hbase/bin/../logs/hbase-xiaoye-master-ubuntu.out
ubuntu3: 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.out
xiaoye@ubuntu:~/hbase$ jps
1838 NameNode
1492 JournalNode
2416 DataNode
18813 Jps
2529 NodeManager
2736 DFSZKFailoverController
1454 QuorumPeerMain
18630 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:~$ jps
25022 JournalNode
25205 NameNode
27101 HMaster
25383 NodeManager
1402 QuorumPeerMain
25385 DFSZKFailoverController
25633 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有如下目录:
创建表并在管理界面查看我们建的表。
这里一直卡主了,先放着。不过能进行到动态切换设备也算大功告成了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106164.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...