hadoop整合hbase

部署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,如下所示:

hadoop整合hbase_第1张图片

2. 配置环境变量

3. 设置HBase配置文件

HBase配置稍微简单一些,只需要配置3个文件

  • hbase-env.sh
  • hbase-site.xml
  • regionservers

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

hadoop整合hbase_第2张图片

这里有一个小问题,启动的时候提示slg4j有多个,那是因为hadoop安装包下和hbase安装包下都存在,网上有人说删除hbase安装包下的slf4j-log412文件,我试了下删除会包其他错误,导致hbase无法正常启动,暂时没有找到比较好的解决办法。由于不影响使用,暂时不管。

Hadoop和HBase成功启动后会有以下服务

hadoop整合hbase_第3张图片

大家在启动后可能发现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的配置就完成了。

你可能感兴趣的:(hadoop)