赞
踩
[HBase 下载链接]: https://hbase.apache.org/downloads.html
在同时部署Hadoop和Zookeeper的基础上,进行以下操作。
总览,集群信息:
节点角色 | Master | Slave1 | Slave2 |
---|---|---|---|
IP | 192.168.137.128 | 192.168.137.129 | 192.168.137.130 |
HostName | BlogMaster | BlogSlave1 | BlogSlave2 |
Hadoop | BolgMaster-YES | BlogSlave1-YES | BlogSlave2-YES |
Zookeeper | BolgMaster-YES | BlogSlave1-YES | BlogSlave2-YES |
HBase | BolgMaster-YES-HMaster(可以包含HRegionServer) | BlogSlave1-HRegionServer-YES | BlogSlave2-HRegionServer-Yes |
Step 1: 解压HBase压缩包至指定目录(/opt/cluster/下)
采用如下命令,将hbase压缩包解压到指定的目录。
[root@BlogMaster ~]# tar -zxvf hbase-2.2.2-bin.tar.gz -C /opt/cluster/
Step 2: 修改HBase的hbase-env.sh配置文件(位于:/opt/cluster/hbase-2.2.2/conf)
进入该文件后,分别修改HAVA_HOME和HBASE_MANAGES_ZK。
对于JAVA_HOME
# The java implementation to use. Java 1.8+ required.
export JAVA_HOME=/opt/cluster/jdk1.8.0_181
对于HBASE_MANAGES_ZK
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
export HBASE_MANAGES_ZK=false
Step 3: 修改Hbase的hbase-site.xml配置文件(位于:/opt/cluster/hbase-2.2.2/conf)
进入该文件后,新添如下内容:
<configuration> <!-- 设置namenode所在位置 通过rootdir设置 也就是设置hdfs中存放的路径 --> <property> <name>hbase.rootdir</name> <value>hdfs://BlogMaster:9000/hbase</value> </property> <!-- 是否开启集群 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 --> <property> <name>hbase.master.port</name> <value>16000</value> </property> <!-- zookeeper集群的位置 --> <property> <name>hbase.zookeeper.quorum</name> <value>BlogMaster:2181,BlogSlave1:2181,BlogSlave2:2181</value> </property> <!-- hbase的元数据信息存储在zookeeper的位置 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/cluster/zookeeper-3.4.10/zkData</value> </property> </configuration>
Step 4: 修改HBase的regionserver文件(位于:/opt/cluster/hbase-2.2.2/conf)
进入该文件后,添加如下内容:
BlogMaster
BlogSlave1
BlogSlave2
Step 5: 以Hadoop集群最新文件替换HBase自带的旧Hadoop文件(位于:/opt/cluster/hbase-2.2.2/lib)
进入该目录后,判断其依赖的hadoop的lib版本号是否与此前安装的hadoop集群版本号相同,若相同,则运气倍儿棒;若不相同,则逐一将HBase依赖的lib替换为hadoop集群各文件夹下分散的lib文件。
首先,进入该目录后,观察依赖的hadoop lib包:
不幸的是,里面依赖包的版本号为2.8.5,而此前安装的hadoop集群版本号为2.8.4,故需要逐一替换(尽量全部替换,若没有可能升级后jar包互相合并了,如hadoop-client-2.84.jar合并到hadoop-hdfs-client-2.8.4.jar中)。
第一步: 删除当前hbase依赖的自带hadoop lib包
[root@BlogMaster lib]# rm -f hadoop-*
第二步: 进入hadoop安装目录下的/share/hadoop目录下的common子目录,将如下两包ll拷贝至hbase安装目录的lib子目录,执行如下命令:
[root@BlogMaster common]# cp hadoop-common-2.8.4* /opt/cluster/hbase-2.2.2/lib/
第三步: 进入hadoop安装目录下的/share/hadoop目录下的hdfs子目录,将如下两包拷贝至hbase安装目录的lib子目录,执行如下命令:
[root@BlogMaster hdfs]# cp hadoop-hdfs-2.8.4* /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster hdfs]# cp hadoop-hdfs-client-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
第三步: 进入hadoop安装目录下的/share/hadoop目录下的mapreduce子目录,将如下两包拷贝至hbase安装目录的lib子目录,执行如下命令:
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-app-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-common-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-core-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-hs-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-jobclient-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster mapreduce]# cp hadoop-mapreduce-client-shuffle-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
第四步: 进入hadoop安装目录下的/share/hadoop目录下的yarn子目录,将如下两包拷贝至hbase安装目录的lib子目录,执行如下命令:
[root@BlogMaster yarn]# cp hadoop-yarn-api-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-client-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-common-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-applicationhistoryservice-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-common-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-nodemanager-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-resourcemanager-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-web-proxy-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster yarn]# cp hadoop-yarn-server-tests-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
第五步: 进入hadoop安装目录下的/share/hadoop目录下的/tools/lib子目录(即/opt/cluster/hadoop-2.8.4/share/hadoop/tools/lib
),将如下两包拷贝至hbase安装目录的lib子目录,执行如下命令:
[root@BlogMaster lib]# cp hadoop-auth-2.8.4.jar /opt/cluster/hbase-2.2.2/lib/
[root@BlogMaster lib]# cp hadoop-distcp-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
[root@BlogMaster lib]# cp hadoop-annotations-2.8.4.jar /opt/cluster/hbase-2.2.2/lib
Step 6: 创建两个软连接
在hbase安装目录下conf文件夹下,创建core-site.xml和hdfs-site.xml软连接。
创建命令为:
[root@BlogMaster conf]# ln -s /opt/cluster/hadoop-2.8.4/etc/hadoop/core-site.xml
[root@BlogMaster conf]# ln -s /opt/cluster/hadoop-2.8.4/etc/hadoop/hdfs-site.xml
创建后结果为:
[root@BlogMaster conf]# ll
total 44
lrwxrwxrwx. 1 root root 50 Nov 13 10:19 core-site.xml -> /opt/cluster/hadoop-2.8.4/etc/hadoop/core-site.xml
-rw-r--r--. 1 hadoop hadoop 1811 Oct 19 17:53 hadoop-metrics2-hbase.properties
-rw-r--r--. 1 hadoop hadoop 4284 Oct 19 17:53 hbase-env.cmd
-rw-r--r--. 1 hadoop hadoop 7540 Nov 13 09:01 hbase-env.sh
-rw-r--r--. 1 hadoop hadoop 2257 Oct 19 17:53 hbase-policy.xml
-rw-r--r--. 1 hadoop hadoop 1772 Nov 13 09:05 hbase-site.xml
lrwxrwxrwx. 1 root root 50 Nov 13 10:19 hdfs-site.xml -> /opt/cluster/hadoop-2.8.4/etc/hadoop/hdfs-site.xml
-rw-r--r--. 1 hadoop hadoop 1168 Oct 19 17:53 log4j-hbtop.properties
-rw-r--r--. 1 hadoop hadoop 4977 Oct 19 17:53 log4j.properties
-rw-r--r--. 1 hadoop hadoop 33 Nov 13 09:09 regionservers
Step 7: 分发BlogMaster节点下hbase-2.2.2整个文件至两台Slave节点
执行如下命令:
[root@BlogMaster cluster]# scp -r hbase-2.2.2/ BlogSlave1:$PWD
[root@BlogMaster cluster]# scp -r hbase-2.2.2/ BlogSlave2:$PWD
注意此部分时间稍长,因为Hbase包将近230M~~,要不听一首Camera Obscura的Break it to you Gently。
Step 1: 启动HBase服务
在启动HBase前,确保先启动Hadoop集群和Zookeeper,因为HBase依赖这两者。进一步,需要启动Master和RegionServer服务。因此,在确保这两者服务均启动的情况下,执行如下命令。
[root@BlogMaster hbase-2.2.2]# bin/start-hbase.sh
附:
启动Hadoop集群和Zookeeper的命令:
启动Hadoop集群
[root@BlogMaster hbase-2.2.2]# start-dfs.sh
启动Zookeeper
可参照此前博客Zookeeper。
Step 2: JPS和HBase Web页面查看运行状态
这里考虑到主节点同时充当Master和RegionServer服务,因此注意观察是否HMaster和HRegionServer服务已启动。
[root@BlogMaster hbase-2.2.2]# jps
2945 QuorumPeerMain
2390 NameNode
2682 ResourceManager
3882 Jps
3835 HRegionServer
3709 HMaster
对于BlogSlave1和BlogSlave2节点,两者均充当RegionServer服务,因此需要观察HRegionServer进程启动。
对于BlogSlave1
[root@BlogSlave1 ~]# jps
3505 Jps
2628 QuorumPeerMain
2342 SecondaryNameNode
3384 HRegionServer
2282 DataNode
2413 NodeManager
对于BlogSlave2
[root@BlogSlave2 ~]# jps
3089 Jps
2278 DataNode
2551 QuorumPeerMain
2345 NodeManager
3035 HRegionServer
Step 3: HBase Shell简单操作
其一,进入HBase Shell,逐一执行如下命令,创建employer表格和插入数据。
Code 1 - 创建表格:
hbase(main):003:0> create 'employer','info'
Created table employer
Took 1.3684 seconds
=> Hbase::Table - employer
Code 2 - 插入数据:
hbase(main):006:0> put 'employer','1001','info:sex','male'
Took 0.5977 seconds
hbase(main):007:0> put 'employer','1001','info:age','22'
Took 0.0578 seconds
hbase(main):008:0> put 'employer','1002','info:age','23'
Took 0.0112 seconds
hbase(main):009:0> put 'employer','1002','info:name','Janna'
Took 0.0076 seconds
hbase(main):010:0> put 'employer','1002','info:sex','female'
Took 0.0068 seconds
Code 3 - 更新数据:
hbase(main):019:0> put 'employer','1001','info:age','100'
Took 0.0077 seconds
Code 4 - 查看数据:
hbase(main):021:0> scan 'employer'
ROW COLUMN+CELL
1001 column=info:age, timestamp=1573615776681, value=100
1001 column=info:sex, timestamp=1573615579624, value=male
1002 column=info:age, timestamp=1573615596987, value=23
1002 column=info:name, timestamp=1573615608456, value=Janna
1002 column=info:sex, timestamp=1573615622557, value=female
2 row(s)
Took 0.0240 seconds
其二,HBase页面查看数据。
登录网址:http://192.168.137.128:16010/master-status
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。