部署hadoop请看以下文章:https://blog.csdn.net/wangchaox123/article/details/91877296
本文在上述文章的基础上部署hbase
1. 下载安装包
从官网下载HBase安装包,我安装的是HBase-2.0.5,官网下载地址:http://mirror.bit.edu.cn/apache/hbase/2.0.5/hbase-2.0.5-bin.tar.gz。下载完成后解压到指定目录,tar -zxvf hbase-2.0.5-bin.tar.gz,如下所示:
2. 配置环境变量
3. 设置HBase配置文件
HBase配置稍微简单一些,只需要配置3个文件
3.1 hbase-env.sh,主要是在这个文件中修改如下两个配置:
export JAVA_HOME=/opt/jdk1.8.0_201
export HBASE_MANAGES_ZK=true
第一行是关联JDK路径,第二个是指定使用HBase自带的ZK。
3.2 hbase-site.xml
hbase.zookeeper.quorum
EddieCentOS130
hbase.zookeeper.property.dataDir
/opt/modules/hbase-2.0.5/zkdata
hbase.tmp.dir
/opt/modules/hbase-2.0.5/tmp
hbase.rootdir
hdfs://EddieCentOS130:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum是集群的地址列表,使用逗号分割开,由于我们使用的是伪分布式,只有一台主机,设置成主机名称就可以。
hbase.zookeeper.property.dataDir是快照的存储位置
hbase.tmp.dir是本地文件系统的临时文件夹
hbase.rootdir是regionserver的共享目录,用来持久化HBase
hbase.cluster.distributed指运行模式,false表示单机模式,true标识分布式模式
3.3 regionservers
把内容修改成主机名称,如下:
这样基本配置完成,接下来启动服务
start-hbase.sh
这里有一个小问题,启动的时候提示slg4j有多个,那是因为hadoop安装包下和hbase安装包下都存在,网上有人说删除hbase安装包下的slf4j-log412文件,我试了下删除会包其他错误,导致hbase无法正常启动,暂时没有找到比较好的解决办法。由于不影响使用,暂时不管。
Hadoop和HBase成功启动后会有以下服务
大家在启动后可能发现HMaster服务或者HRegionServer服务没有。通过查看log/hbase-hadoop-master-主机名.log中的日志发下出现类似以下错误:
java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder
at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:635)
at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:619)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.hadoop.hbase.util.CommonFSUtils.getRootDir(CommonFSUtils.java:358)
at org.apache.hadoop.hbase.util.CommonFSUtils.isValidWALRootDir(CommonFSUtils.java:407)
at org.apache.hadoop.hbase.util.CommonFSUtils.getWALRootDir(CommonFSUtils.java:383)
at org.apache.hadoop.hbase.regionserver.HRegionServer.initializeFileSystem(HRegionServer.java:691)
at org.apache.hadoop.hbase.regionserver.HRegionServer.(HRegionServer.java:600)
at org.apache.hadoop.hbase.master.HMaster.(HMaster.java:484)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2965)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2983)
这时需要把HBase下的lib/client-facing-thirdparty/htrace-core-xxx.jar包拷贝到lib下
cp lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar lib/
然后再重新启动HBase就可以了,如果发现还是启动失败,可以查看日志,针对具体问题google一下。
启动成功以后可以通过HBase shell命令测试一下。
到这边为止,Hadoop和HBase的配置就完成了。