HBase的安装,
主机规划
机器名 域名 |
IP地址 |
作用 |
Hdp-01 |
192.168.33.31 |
Namenode(1.1)、DFSZKFailoverController(zkfc) |
Hdp-02 |
192.168.33.32 |
Namenode(1.2)、DFSZKFailoverController(zkfc) |
Hdp-03 |
192.168.33.33 |
resourceManager、Hbase(从) |
Hdp-04 |
192.168.33.34 |
resourceManager、Hbase(主) |
Hdp-05 |
192.168.33.35 |
datanode、nodeManager、zookeeper(QuorumPeerMain)、journalNode、 regionservers |
Hdp-06 |
192.168.33.36 |
datanode、nodeManager、zookeeper(QuorumPeerMain)、journalNode、 regionservers |
Hdp-07 |
192.168.33.37 |
datanode、nodeManager、zookeeper(QuorumPeerMain)、journalNode、 regionservers |
一、安装Hbase
1. 用工具将hbase安装包hbase-0.99.2-bin.tar.gz上传到/home/hadoop下,确保hbase-0.99.2-bin.tar.gz的用户是hadoop
2. 将hbase的压缩包解压到 /home/hadoop/apps下,并且改名hbase,并删掉原始的hbase的压缩包。
[hadoop@hdp-04 ~]$ tar -zxvf hbase-0.99.2-bin.tar.gz -C apps/ [hadoop@hdp-04 ~]$ cd apps/ [hadoop@hdp-04 apps]$ ll 总用量 8 drwxrwxr-x. 10 hadoop hadoop 4096 1月 23 04:06 hadoop-2.6.4 drwxrwxr-x. 7 hadoop hadoop 4096 1月 24 05:44 hbase-0.99.2 [hadoop@hdp-04 apps]$ mv hbase-0.99.2/ hbase [hadoop@hdp-04 apps]$ ll 总用量 8 drwxrwxr-x. 10 hadoop hadoop 4096 1月 23 04:06 hadoop-2.6.4 drwxrwxr-x. 7 hadoop hadoop 4096 1月 24 05:44 hbase |
[hadoop@hdp-04 apps]$ cd [hadoop@hdp-04 ~]$ ll 总用量 88948 drwxrwxr-x. 4 hadoop hadoop 4096 1月 24 05:45 apps -rw-rw-r--. 1 hadoop hadoop 91074070 9月 22 13:30 hbase-0.99.2-bin.tar.gz [hadoop@hdp-04 ~]$ rm -rf hbase-0.99.2-bin.tar.gz |
3. 进入到hbase的安装目录下,删掉一些不必要的文件
[hadoop@hdp-04 ~]$ cd apps/hbase/ [hadoop@hdp-04 hbase]$ ll 总用量 152 drwxr-xr-x. 4 hadoop hadoop 4096 12月 3 2014 bin -rw-r--r--. 1 hadoop hadoop 113061 12月 3 2014 CHANGES.txt drwxr-xr-x. 2 hadoop hadoop 4096 12月 3 2014 conf drwxr-xr-x. 9 hadoop hadoop 4096 12月 3 2014 docs drwxr-xr-x. 6 hadoop hadoop 4096 12月 3 2014 hbase-webapps drwxrwxr-x. 3 hadoop hadoop 4096 1月 24 05:44 lib -rw-r--r--. 1 hadoop hadoop 11358 5月 23 2014 LICENSE.txt -rw-r--r--. 1 hadoop hadoop 897 12月 3 2014 NOTICE.txt -rw-r--r--. 1 hadoop hadoop 1477 12月 3 2014 README.txt |
[hadoop@hdp-04 hbase]$ rm -rf *.txt docs/ [hadoop@hdp-04 hbase]$ ll 总用量 16 drwxr-xr-x. 4 hadoop hadoop 4096 12月 3 2014 bin drwxr-xr-x. 2 hadoop hadoop 4096 12月 3 2014 conf drwxr-xr-x. 6 hadoop hadoop 4096 12月 3 2014 hbase-webapps drwxrwxr-x. 3 hadoop hadoop 4096 1月 24 05:44 lib |
4. 进入到hbase的conf的配置文件目录,修改配置文件
[hadoop@hdp-04 hbase]$ cd conf/ [hadoop@hdp-04 conf]$ ll 总用量 36 -rw-r--r--. 1 hadoop hadoop 1026 5月 23 2014 hadoop-metrics2-hbase.properties -rw-r--r--. 1 hadoop hadoop 4196 12月 3 2014 hbase-env.cmd -rw-r--r--. 1 hadoop hadoop 7271 12月 3 2014 hbase-env.sh -rw-r--r--. 1 hadoop hadoop 2257 5月 23 2014 hbase-policy.xml -rw-r--r--. 1 hadoop hadoop 934 9月 16 2014 hbase-site.xml -rw-r--r--. 1 hadoop hadoop 3454 12月 3 2014 log4j.properties -rw-r--r--. 1 hadoop hadoop 10 9月 30 2014 regionservers |
5. 编辑hbase-env.sh
[hadoop@hdp-04 conf]$ echo $JAVA_HOME /usr/local/jdk1.7.0_45 [hadoop@hdp-04 conf]$ vi hbase-env.sh #指明jdk的路径 export JAVA_HOME=/usr/local/jdk1.7.0_45 export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # Tell HBase whether it should manage it's own instance of Zookeeper or not. export HBASE_MANAGES_ZK=false |
6. 编辑regionservers 文件,指明regionserver是哪几台主机
[hadoop@hdp-04 conf]$ vi regionservers hdp-05 hdp-06 hdp-07 |
7. 编辑hbase-site.xml
<configuration> <!-- hbasemaster的主机和端口 --> <property> <name>hbase.master</name> <value>hdp-04:60000</value> </property>
<!-- 时间同步允许的时间差 --> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property>
<!-- hbase共享目录,持久化hbase数据 --> <!-- hdfs://n1是一个主备的namenode而不是某一台namenode的地址,n1的解释在 hadoop的配置文件中有,所以需要将hadoop的core-site.xml和hdfs-site.xml拷贝过来 --> <property> <name>hbase.rootdir</name> <value>hdfs://n1/hbase</value> </property>
<!-- 是否分布式运行,false即为单机 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property>
<!-- zookeeper地址 --> <property> <name>hbase.zookeeper.quorum</name> <value>hdp-05,hdp-06,hdp-07</value> </property>
<!-- zookeeper配置信息快照的位置 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/apps/hbase_zookeeper_data</value> </property> </configuration> |
8. 将hadoop中的core-site.xml和hdfs-site.xml拷贝到hbase/conf下
[hadoop@hdp-04 conf]$ cp /home/hadoop/apps/hadoop-2.6.4/etc/hadoop/core-site.xml /home/hadoop/apps/hbase/conf/ [hadoop@hdp-04 conf]$ cp /home/hadoop/apps/hadoop-2.6.4/etc/hadoop/hdfs-site.xml /home/hadoop/apps/hbase/conf/ [hadoop@hdp-04 conf]$ ll 总用量 44 -rw-r--r--. 1 hadoop hadoop 1198 1月 24 06:14 core-site.xml -rw-r--r--. 1 hadoop hadoop 1026 5月 23 2014 hadoop-metrics2-hbase.properties -rw-r--r--. 1 hadoop hadoop 4196 12月 3 2014 hbase-env.cmd -rw-r--r--. 1 hadoop hadoop 7346 1月 24 06:06 hbase-env.sh -rw-r--r--. 1 hadoop hadoop 2257 5月 23 2014 hbase-policy.xml -rw-r--r--. 1 hadoop hadoop 934 9月 16 2014 hbase-site.xml -rw-r--r--. 1 hadoop hadoop 2996 1月 24 06:14 hdfs-site.xml -rw-r--r--. 1 hadoop hadoop 3454 12月 3 2014 log4j.properties -rw-r--r--. 1 hadoop hadoop 21 1月 24 06:07 regionservers |
9. 配置hdp-04到hdp-05、hdp-07、hdp-07的免密登录
在hdp-04上生产钥匙
ssh-keygen -t rsa |
将公钥拷贝到其他节点(包括自己)
ssh-copy-id hdp-04 ssh-copy-id hdp-05 ssh-copy-id hdp-06 ssh-copy-id hdp-07 |
10. 将hdp-04上的hbase的安装目录拷贝到hdp-05、hdp-06、hdp-07上
[hadoop@hdp-04 apps]$ scp -r hbase hdp-06:/home/hadoop/apps |
11. 在hbase的hmaster机器hdp-04和regionserver:hdp-05、hdp-06、hdp-07上修改环境变量,增加下面的内容
[hadoop@hdp-04 apps]$ sudo vi /etc/profile export JAVA_HOME=/usr/local/jdk1.7.0_45 export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HBASE_HOME=/home/hadoop/apps/hbase export PATH=$PATH:$HBASE_HOME/bin |
然后在source /etc/profile
二、启动hbase
1. 在hmaster上(hdp-04)上启动hbase集群
[hadoop@hdp-04 apps]$ start-hbase.sh starting master, logging to /home/hadoop/apps/hbase/logs/hbase-hadoop-master-hdp-04.out hdp-05: starting regionserver, logging to /home/hadoop/apps/hbase/bin/../logs/hbase-hadoop-regionserver-hdp-05.out hdp-06: starting regionserver, logging to /home/hadoop/apps/hbase/bin/../logs/hbase-hadoop-regionserver-hdp-06.out hdp-07: starting regionserver, logging to /home/hadoop/apps/hbase/bin/../logs/hbase-hadoop-regionserver-hdp-07.out [hadoop@hdp-04 apps]$ jps 1441 ResourceManager 1921 Jps 1809 HMaster |
hdp-05、hdp-06、hdp-07上查看进程
[hadoop@hdp-05 ~]$ jps 1729 JournalNode 1427 QuorumPeerMain 1956 HRegionServer 1643 DataNode 1484 NodeManager 2109 Jps |
2. 在hdfs上查看目录,多出了一个曾经在hdfs-site.xml中配置的节点
[hadoop@hdp-01 ~]$ hadoop fs -ls / Found 2 items drwxr-xr-x - hadoop supergroup 0 2018-01-24 07:18 /hbase |
<property> <name>hbase.rootdir</name> <value>hdfs://n1/hbase</value> </property> |
3. 在hmaster的hdp-04上web服务界面:http://hdp-04:16030/
三、主从备份节点、hregionserver节点的动态扩容
将在hdp-03上再复制一个hdp-04的环境
1. 将hdp-04上的hbase的安装目录拷贝到hdp-03上
可以先配置hdo-04到hdp-03的免密登录
刚才已经在hdp-04上生成了自己的密钥,在hdp-04上操作
ssh-copy-id hdp-03 |
[hadoop@hdp-04 apps]$ scp -r hbase hdp-03:/home/hadoop/apps |
2. 修改hdp-03的环境变量,编辑/etc/profile增加下面的内容
[hadoop@hdp-04 apps]$ sudo vi /etc/profile export JAVA_HOME=/usr/local/jdk1.7.0_45 export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HBASE_HOME=/home/hadoop/apps/hbase export PATH=$PATH:$HBASE_HOME/bin |
然后在source /etc/profile
hdp-03的机器准备好了
3. 在hdp-03上启动一个hmaster与hdp-04构成主备hmaster
[hadoop@hdp-03 ~]$ local-master-backup.sh start 2 starting master, logging to /home/hadoop/apps/hbase/logs/hbase-hadoop-2-master-hdp-03.out |
Hdp-03实际上向zookeeper上注册了一个backup-masters节点信息,打开zookeeper客户端,浏览
/hbase/backup-masters
[zk: localhost:2181(CONNECTED) 16] ls /hbase [meta-region-server, backup-masters, table, draining, region-in-transition, table-lock, running, master, namespace, hbaseid, online-snapshot, replication, splitWAL, recovering-regions, rs, flush-table-proc] |
在zookeeper上 /hbase节点下的子节点
master:主hmaster的注册信息
backup-masters:从master的注册信息
rs: hregionservers的注册信息
查看backup-masters:
[zk: localhost:2181(CONNECTED) 15] ls /hbase/backup-masters [hdp-03,16022,1516752105548] |
查看master的内容
[zk: localhost:2181(CONNECTED) 18] get /hbase/master �master:16020L+ܭJY�6PBUF
hdp-04�}��ª�, cZxid = 0x500000020 ctime = Wed Jan 24 07:18:54 CST 2018 mZxid = 0x500000020 mtime = Wed Jan 24 07:18:54 CST 2018 pZxid = 0x500000020 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x36124d22e090002 dataLength = 53 numChildren = 0 |
可以在hdp-03上关闭备份的hmaster,命令是
[hadoop@hdp-03 ~]$ local-master-backup.sh stop 2 |
这是通过zookeeper控制的
4. 将hdp-03加入到集群中(hdp-03的hbase的配置与集群中的每台节点配置一样)
[hadoop@hdp-03 ~]$ hbase-daemon.sh start regionserver starting regionserver, logging to /home/hadoop/apps/hbase/logs/hbase-hadoop-regionserver-hdp-03.out [hadoop@hdp-03 ~]$ jps 2085 HRegionServer 1472 ResourceManager 2241 Jps |
查看zookeeper的注册信息(在hdp-05上开启一个zookeeper的客户端)
添加hdp-03之前,浏览/hbase/rs的目录
[zk: localhost:2181(CONNECTED) 8] ls /hbase/rs [hdp-07,16020,1516749526009, hdp-05,16020,1516749521763, hdp-06,16020,1516749531275] |
添加hdp-03到集群之后,浏览/hbase/rs的目录
[zk: localhost:2181(CONNECTED) 9] ls /hbase/rs [hdp-03,16020,1516751491409, hdp-07,16020,1516749526009, hdp-05,16020,1516749521763, hdp-06,16020,1516749531275] |
还可以通过hdp-04的web管理界面查看
关闭hdp-03上的hregionserver
[hadoop@hdp-03 ~]$ hbase-daemon.sh stop regionserver stopping regionserver........ [hadoop@hdp-03 ~]$ jps 2300 Jps 1472 ResourceManager |
再查看zookepper上的节点信息,少了hdp-03
[zk: localhost:2181(CONNECTED) 10] ls /hbase/rs [hdp-07,16020,1516749526009, hdp-05,16020,1516749521763, hdp-06,16020,1516749531275] |
总结:动态添加hregionserver,实际上是向zookeeper注册服务器信息,如果指明要添加的主机是集群的hmaster就是用命令:local-master-backup.sh start 2 如果要添加的主机是集群的hregionserver就使用命令:hbase-daemon.sh start regionserver