基于伪分布式(单机版)hdfs的单机hbase 1.2.0搭建

搭建单机hbase(基于hdfs)

  • 安装伪分布式hadoop 2.6.0版本
    • 由于需要snappy,不得不编译hadoop
      • 编译环境准备
      • 获得snappy native lib
      • 异常问题解决
    • 安装hadoop 2.6.0
      • 安装
      • 配置
      • 启动与测试
      • 异常问题解决
  • 安装hbase 1.2.0
    • 安装
    • 配置
    • 启动与测试
    • 异常问题解决

整个版本都比较旧,hbase1.2.0版本,对应hadoop版本是2.6.0.

安装伪分布式hadoop 2.6.0版本

由于需要snappy,不得不编译hadoop

编译环境准备

参考:https://aperise.iteye.com/blog/2246856
编译前需要安装snappy

编译语句:

	export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk
	export MAVEN_OPTS="-Xms256m -Xmx512m"
	mvn package -Pdist,native -DskipTests -Dtar  -Drequire.snappy
	###由于上述mvn package命令执行失败,只好改成
	mvn compile  -Dmaven.test.skip=true -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy

获得snappy native lib

如果mvn package成功,就可以到下面的目录中找到编译的文件,然后拷贝该文件夹下的,覆盖掉hadoop安装目录的lib/native 文件。

    cd /home/hadoop-2.6.0-src/hadoop-dist/target/hadoop-2.6.0/lib/native

异常问题解决

  1. 解决mvn package时报类似 Failed to parse plugin descriptor for org.apache.hadoop:hadoop-maven-plugins
    解决方法: 到报错指定的模块目录下 mvn clean install,然后回到src目录,继续mvn package…

  2. mvn package 依然会跑ut
    解决方法: -DskipTests 换成 -Dmaven.test.skip=true

  3. mvn package 始终编译失败?
    解决方法: 改用mvn compile,并且保障 hadoop-common编译通过即可,后续的模块成功与否不关心。
    进入到 编译hadoop-2.6.0-src/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib目录下,将下面的文件拷贝出,覆盖安装目录的hadoop-2.6.0/lib/native 下面即可(同时 hadoop 安装机器也需要安装snappy,并把 /usr/local/lib下的snappy的相关文件也拷贝至安装目录的hadoop-2.6.0/lib/native )。

安装hadoop 2.6.0

安装

本机记得同时也安装一下snappy。
解压 hadoop-2.6.0.tar.gz包
别忘了将源码编译的libxx文件都拷贝至lib/native目录下(snappy的也是)
然后执行hadoop checknative -a ,查看snappy是否为true 并显示其lib路径(在hadoop安装目录下)

配置

${hadoop_home}/etc/hadoop/hdfs-site.xml



        dfs.name.dir
        /home/hadoop-2.6.0/temp/hadoop/namenode
    
    
        dfs.data.dir
        /home/hadoop-2.6.0/temp/hadoop/datanode
    
    
        dfs.replication
        1
    

${hadoop_home}/etc/hadoop/core-site.xml


    
        fs.defaultFS
        hdfs://localhost:9000
    
   
        hadoop.tmp.dir
        file:/home/hadoop-2.6.0/tmp
        Abase for other temporary directories.
    

/etc/profile

#添加
export HADOOP_HOME=/home/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin

source /etc/profile

启动与测试

格式化hdfs

bin/hdfs namenode -format 

启动全部服务

sbin/start-all.sh

查看已启动服务

jps

异常问题解决

  1. jps 查看发现datanode 启动不起来,但namenode和其他secondary namenode等都成功。
    解决: 原因在于多次格式化。 解决方法修改datanode 数据目录 current version的clusterID与namenode一致。

安装hbase 1.2.0

参考:https://blog.csdn.net/andie_guo/article/details/44086389

安装

解压hbase安装包

配置

conf/hbase-env.sh

#add 
export JAVA_HOME=/usr/java/jdk1.7.0_79
export HBASE_MANAGES_ZK=true

conf/hbase-site.xml



    hbase.rootdir
    hdfs://localhost:9000/hbase
 
  

    hbase.region.replica.replication.enabled
    true
  

    hbase.replication
    true
  

hbase.zookeeper.quorum
localhost

   
        hbase.cluster.distributed
        true
    
  
    hbase.zookeeper.property.dataDir
    /home/hbase-1.2.0/zk_data
  

/etc/profile

export HBASE_HOME=/home/hbase-1.2.0
export PATH=$PATH:$HBASE_HOME/bin

source /etc/profile

启动与测试

bin/start-hbase.sh
bin/hbase shell
hbase>create 'hbase_test',  {NAME=>'name', COMPRESSION=>'snappy'},{NAME=>'age'}

异常问题解决

  1. hbase 执行create table命令报错:KeeperErrorCode = ConnectionLoss
    解决方法:conf/hbase-env.sh 内添加export HBASE_MANAGES_ZK=true

  2. hbase shell内执行list命令报: Can’t get master address from ZooKeeper; znode data == null
    解决方法:
    查看 hadoop的core-site.xml与 hbase的hbase-site.xml 中的hdfs地址是否匹配,
    我的出现不匹配是因为core-site里 声明的是hdfs://localhost:9000, 但是 hbase-site.xml 中写的是hdfs://hbase0:9000/hbase 其中hbase0是 机器的hostname,虽然配置了/etc/hosts,但是好像依然不行。
    参考链接及其他的解决方法:https://www.cnblogs.com/zlslch/p/6556870.html

你可能感兴趣的:(软件安装)