HBase部署

HBase 一种是作为存储的分布式文件系统,另一种是作为数据处理模型的 MR 框架。因为日常开发人员比较熟练的是结构化的数据进行处理,但是在 HDFS 直接存储的文件往往不具有结构化,所以催生出了 HBase 在 HDFS 上的操作。如果需要查询数据,只需要通过键值便可以成功访问。

前提准备

1.Zookeeper 正常部署
2.Hadoop 正常部署

HBase部署

HBase 的解压

$ tar -zxf ~/softwares/installations/hbase-1.3.1-bin.tar.gz -C ~/modules/

HBase 的配置文件

1)hbase-env.sh 修改内容

export JAVA_HOME=/opt/module/jdk1.8.0_181
export HBASE_MANAGES_ZK=false  # 是否使用hbase自己的zookeeper

2).hbase-site.xml 修改内容:

    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>hdfs://hadoop102: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>
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/opt/module/zookeeper-3.4.10/zkData</value>
        </property>

        <property>
            <!-- 默认 -->
            <name>zookeeper.znode.parent</name>
            <value>/hbase</value> 
        </property>
    </configuration>

3).regionservers

hadoop102
hadoop103
hadoop104

补充:如果同时还部署了CDH版本,记得修改/etc/profile里的HBASE_HOME的路径,因为在hbase-env.sh是用的HBASE_HOME的路径
$ source /etc/profile
$ echo $HBASE_HOME
/opt/module/cdh/hbase-0.98.6-cdh5.3.6

HBase 需要依赖的 Jar 包

由于 HBase 需要依赖 Hadoop,所以替换 HBase 的 lib 目录下的 jar 包,以解决兼容问题:

  1. 删除原有的 jar:
    $ rm -rf /home/admin/modules/hbase-1.3.1/lib/hadoop-*
    $ rm -rf /home/admin/modules/hbase-1.3.1/lib/zookeeper-3.4.6.jar

  2. 拷贝新 jar,涉及的 jar 有:
    hadoop-annotations-2.7.2.jar
    hadoop-auth-2.7.2.jar
    hadoop-client-2.7.2.jar
    hadoop-common-2.7.2.jar
    hadoop-hdfs-2.7.2.jar
    hadoop-mapreduce-client-app-2.7.2.jar
    hadoop-mapreduce-client-common-2.7.2.jar
    hadoop-mapreduce-client-core-2.7.2.jar
    hadoop-mapreduce-client-hs-2.7.2.jar
    hadoop-mapreduce-client-hs-plugins-2.7.2.jar
    hadoop-mapreduce-client-jobclient-2.7.2.jar
    hadoop-mapreduce-client-jobclient-2.7.2-tests.jar
    hadoop-mapreduce-client-shuffle-2.7.2.jar
    hadoop-yarn-api-2.7.2.jar
    hadoop-yarn-applications-distributedshell-2.7.2.jar
    hadoop-yarn-applications-unmanaged-am-launcher-2.7.2.jar
    hadoop-yarn-client-2.7.2.jar
    hadoop-yarn-common-2.7.2.jar
    hadoop-yarn-server-applicationhistoryservice-2.7.2.jar
    hadoop-yarn-server-common-2.7.2.jar
    hadoop-yarn-server-nodemanager-2.7.2.jar
    hadoop-yarn-server-resourcemanager-2.7.2.jar
    hadoop-yarn-server-tests-2.7.2.jar
    hadoop-yarn-server-web-proxy-2.7.2.jar
    zookeeper-3.4.5.jar

提示:这些 jar 包的对应版本应替换成你目前使用的 hadoop 版本,具体情况具体分析。
查找 jar 包举例:
$ find /home/admin/modules/hadoop-2.7.2/ -name hadoop-annotations*
然后将找到的 jar 包复制到 HBase 的 lib 目录下即可。

HBase 软连接 Hadoop 配置

$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/core-site.xml
~/modules/hbase-1.3.1/conf/core-site.xml
$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/hdfs-site.xml ~/modules/hbase-1.3.1/conf/hdfs-site.xml

HBase 远程 scp 到其他集群

$ scp -r /home/admin/modules/hbase-1.3.1/ linux02:/home/admin/modules/
$ scp -r /home/admin/modules/hbase-1.3.1/ linux03:/home/admin/modules/

配置高可用 HMaster 节点,备份节点再另一台服务器(可选)

  1. 关闭 HBase 集群(如果没有开启则跳过此步)
    $ bin/stop-hbase.sh

  2. 在 conf 目录下创建 backup-masters 文件
    $ vi conf/backup-masters
    hadoop103

  3. 将整个 conf 目录 scp 到其他节点
    $ scp -r conf/ linux02:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/
    $ scp -r conf/ linux03:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/

  4. 打开页面测试查看
    0.98 版本之前:http://hadoop102:60010
    0.98 版本之后:http://hadoop102:16010

http://hadoop102:16010/master-status
http://hadoop103:16010/master-status

HBase 服务的启动

启动方式 2:
$ bin/start-hbase.sh
对应的停止服务:
$ bin/stop-hbase.sh
尖叫提示:如果使用的是 JDK8 以上版本,则应在 hbase-evn.sh 中移除 “HBASE_MASTER_OPTS”和“HBASE_REGIONSERVER_OPTS”配置。

启动方式 1:
$ bin/hbase-daemon.sh start master
$ bin/hbase-daemon.sh start regionserver

尖叫提示:如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出 ClockOutOfSyncException 异常。
修复提示:
  a、同步时间服务
  b、属性:hbase.master.maxclockskew 设置更大的值

<property>
    <name>hbase.master.maxclockskew</name>
    <value>180000</value>
    <description>Time difference of regionserver from master</description> 
</property>

访问 HBase 管理页面

查看 Hbse 页面 启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如
  http://linux01:16010

启动后问题

1)Node /hbase/namespace/default already exists and this is not a retry
  删除HDFS的数据,再重新启动

2).如果多次启动失败
  a).删除hdfs的初始目录
  b).zookeeper 删除 rmr /hbase

3).问题:Hbase上的表不存在,但还会提示“表已经存在”
在虚拟机上玩Hbase,过了一段时间之后,创建’testtable’ 时总报异常 table already exists,不管是用代码还是在Hbase Shell里都一样。
解决办法:转自 http://www.aboutyun.com/thread-9507-1-1.html
  1、执行 zkCli.sh 进入zookeeper,
  2、在zk client模式下输入ls /hbase/table命令看到zombie table,
  3、使用rmr /hbase/table/TABLE_NAME命令删除zombie table,
  4、 重启hbase即可

sudo su - root -c “xsync /etc/pro”

‘ns_hadoopadmin:fsimage_hdfs_dir’, {NAME => ‘cf’, DATA_BLOCK_ENCODING => ‘NONE’, BLOOMFILTER => ‘ROW’, REPLICATION_SCOPE => ‘0’, VERSIONS => ‘1’, COMPRESSION => ‘LZO’, MIN_VERSIONS => ‘0’, TTL => ‘FOREVER’, KEEP_DELETED_CELLS => ‘FALSE’, BLOCKSIZE => ‘65536’, IN_MEMORY => ‘false’, BLOCKCACHE => ‘true’}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值