安装完Hadoop之后急切有种想体验一下Apache HBase的操作,于是就有了这篇文章。

Linux环境

Linux :Ubuntu server 15.04

Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Your Ubuntu release is not supported anymore.
For upgrade information,please visit:
http://www.ubuntu.com/releaseendoflife

New release '15.10' available.
Run 'do-release-upgrade' to upgrade to it.

JDK:确保已安装JDK

hduser@ubuntu:/$ java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.15.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01,mixed mode)
hduser@ubuntu:/$ 

下载HBase稳定版本1.2.x


http://ftp.wayne.edu/apache/hbase/

解压HBase文件

Last login: Tue Feb 14 20:22:43 2017 from 192.168.234.1
root@ubuntu:~# cd /usr/local
root@ubuntu:/usr/local# ls
bin  etc  games  hadoop  hbase-1.2.4-bin.tar.gz  include  lib  man  sbin  share  src  tomcat
root@ubuntu:/usr/local# tar zxf hbase-1.2.4-bin.tar.gz
root@ubuntu:/usr/local# ls
bin  etc  games  hadoop  hbase-1.2.4  hbase-1.2.4-bin.tar.gz  include  lib  man  sbin  share  src  tomcat
root@ubuntu:/usr/local# 

分配HBase用户分组及操作权限

将文件名由/usr/local/hbase-1.2.4改为/usr/local/hbase,并为/usr/local/hbase分配hadoop分组的hduser用户下:

root@ubuntu:/usr/local# mv hbase-1.2.4  hbase
root@ubuntu:/usr/local# cd /
root@ubuntu:/# chown -R hduser:hadoop /usr/local/hbase
root@ubuntu:/# chmod 777 /usr/local/hbase/bin/*.sh
root@ubuntu:/#
 
 

修改HBase相关的配置文件

(1)配置hbase-env.sh,该文件在/usr/local/hbase/conf设置以下值:

#Java install home
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64    
# HBase class path
export HBASE_CLAsspATH=/usr/local/hbase/lib
#By HBase to control Zookeeper start or stop
export HBASE_MANAGES_ZK=true
# pids path -solve exception
export HBASE_PID_DIR=/home/hduser/pids 

(2)配置hbase-site.xml,该文件位于/usr/local/hbase-1.2.4/conf

<configuration>

  <property>
      <name>hbase.master</name> 
      <value>master:6000</value>
  </property>
 
  <property>
      <name>hbase.master.maxclockskew</name>   
      <value>180000</value>
  </property>
 
  <property>
      <name>hbase.rootdir</name>
      <value>hdfs://master:9000/hbase</value>
  </property>
 
  <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
  </property>
  
  <property>
      <name>hbase.zookeeper.quorum</name>
      <value>master</value>
   </property>

 <property>
     <name>hbase.zookeeper.property.dataDir</name>
     <value>/home/${user.name}/tmp/zookeeper</value>
  </property>
  
 <property>
      <name>dfs.replication</name>
      <value>1</value>
 </property>


</configuration>
属性说明:
hbase.master是指定运行HMaster的服务器及端口号;
hbase.master.maxclockskew是用来防止HBase节点之间时间不一致造成regionserver启动失败,默认值是30000;
hbase.rootdir指定HBase的存储目录;
hbase.cluster.distributed设置集群处于分布式模式;hbase.zookeeper.quorum设置Zookeeper节点的主机名,它的值个数必须是奇数;
hbase.zookeeper.property.dataDir设置Zookeeper的目录,默认为/tmp,dfs.replication设置数据备份数,集群节点小于3时需要修改,本次试验是一个节点,所以修改为1。

注:master需要设置/etc/hosts文件:127.0.0.1 master;设置完成后可以试一下是否设置成功



(3)配置regionservers,该文件位于/usr/local/hbase/conf设置所运行HBase的机器,此文件配置和hadoop中的slaves类似,一行指定一台机器,本次试验仅用一台机器,设置master即可,默认是:localhost。

(4)设置HBase环境变量,文件位于/etc/profile
在文件末尾添加:

#HBase Environment
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
使修改生效:
source /etc/profile

第三步:运行测试

先启动Hadoop再启动HBase:


HBase Shell操作工具

进入命令窗口和帮助

HBase安装目录后执行bin/hbase shell,进入HBase shell交互模式,通过执行help命令,将输出一系列帮助信息如下:


输入help输出如下:

hbase(main):003:0> help
HBase Shell,version 1.2.4,r67592f3d062743907f8c5ae00dbbe1ae4f69e5af,Tue Oct 25 18:10:20 CDT 2016
Type 'help "COMMAND"',(e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"',(e.g. 'help "general"') for help on a command group.

COMMAND GROUPS:
  Group name: general
  Commands: status,table_help,version,whoami

  Group name: ddl
  Commands: alter,alter_async,alter_status,create,describe,disable,disable_all,drop,drop_all,enable,enable_all,exists,get_table,is_disabled,is_enabled,list,locate_region,show_filters

  Group name: namespace
  Commands: alter_namespace,create_namespace,describe_namespace,drop_namespace,list_namespace,list_namespace_tables

  Group name: dml
  Commands: append,count,delete,deleteall,get,get_counter,get_splits,incr,put,scan,truncate,truncate_preserve

  Group name: tools
  Commands: assign,balance_switch,balancer,balancer_enabled,catalogjanitor_enabled,catalogjanitor_run,catalogjanitor_switch,close_region,compact,compact_rs,flush,major_compact,merge_region,move,normalize,normalizer_enabled,normalizer_switch,split,trace,unassign,wal_roll,zk_dump

  Group name: replication
  Commands: add_peer,append_peer_tableCFs,disable_peer,disable_table_replication,enable_peer,enable_table_replication,list_peers,list_replicated_tables,remove_peer,remove_peer_tableCFs,set_peer_tableCFs,show_peer_tableCFs

  Group name: snapshots
  Commands: clone_snapshot,delete_all_snapshot,delete_snapshot,list_snapshots,restore_snapshot,snapshot

  Group name: configuration
  Commands: update_all_config,update_config

  Group name: quotas
  Commands: list_quotas,set_quota

  Group name: security
  Commands: grant,list_security_capabilities,revoke,user_permission

  Group name: procedures
  Commands: abort_procedure,list_procedures

  Group name: visibility labels
  Commands: add_labels,clear_auths,get_auths,list_labels,set_auths,set_visibility

SHELL USAGE:
Quote all names in HBase Shell such as table and column names.  Commas delimit
command parameters.  Type <RETURN> after entering a command to run it.
Dictionaries of configuration used in the creation and alteration of tables are
Ruby Hashes. They look like this:

  {'key1' => 'value1','key2' => 'value2',...}

and are opened and closed with curley-braces.  Key/values are delimited by the
'=>' character combination.  Usually keys are predefined constants such as
NAME,VERSIONS,COMPRESSION,etc.  Constants do not need to be quoted.  Type
'Object.constants' to see a (messy) list of all constants in the environment.

If you are using binary keys or values and need to enter them in the shell,use
double-quote'd hexadecimal representation. For example:

  hbase> get 't1',"key\x03\x3f\xcd"
  hbase> get 't1',"key\003\023\011"
  hbase> put 't1',"test\xef\xff",'f1:',"\x01\x33\x40"

The HBase shell is the (J)Ruby IRB with the above HBase-specific commands added.
For more on the HBase Shell,see http://hbase.apache.org/book.html
hbase(main):004:0> 

HBase Shell 操作示例

hbase shell常用的操作命令有create,status等,通过help可以看到详细的用法。

1、打开Hbase shell
hduser@ubuntu:/usr/local/hbase$ hbase shell

2、查询表List
hbase(main):001:0> list

3、建表(create)
hbase(main):008:0> create 'scores','grad','course'

4、添加数据(表scores,rowkey为zkb 列族grad,列名为”” 值为5)
hbase(main):013:0> put 'scores','zkd','grade:','5'

5、 给zkb这一行的数据的列族course添加一列<math,97> (put)
hbase(main):016:0> put 'scores','course:math','97'

6、查询某一条数据(get),根据rowkey查找
hbase(main):024:0> get 'scores','zkd'

7、查询多条数据(scan)
格式:scan命令可以指定startrow,stoprow来scan多个row,例如:scan 'user_test',{COLUMNS =>'info:username',LIMIT =>10,STARTROW => 'test',STOPROW=>'test2'},{}里边的是可选项
hbase(main):003:0> scan 'scores',{COLUMNS=>'course:art',LIMIT=>1,STARTROW=>'a',STOPROW=>'z'}

8、删除记录(只有一个column)
delete 'scores','1','course:art'

9、删除rowkey的所有column
deleteall 'scores','1'

10、删除scores表
hbase(main):004:0> disable 'scores'
hbase(main):005:0> drop 'scores'

注意:操作过程中可能会因为zookeeper报错:ERROR: Can't get master address from ZooKeeper; znode data == null。

错误原因:用户无法写入zookeeper文件,导致znode data为空。

解决方法:

(1)在hbase-site.xml指定一个运行hbase的用户有写入文件权限的目录作为zookeeper数据目录,如

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hduser/zookeeper</value>
  </property>

(2)hbase-site.xml文件中的

<property>  
   <name>hbase.rootdir</name>   
   <value>hdfs://localhost:49002/hbase</value>  
</property>

rootdir中的IP设定很重要,需要设定对应的IP与core-site.xml中fs.defaultFS中的路径不相同

<property>
      <name>fs.defaultFS</name>
      <value>hdfs://localhost:9000</value>
  </property>

异常处理

HBase stop异常

stopping hbasecat: /tmp/hbase-mango-master.pid: No such file or directory

默认情况下pid文件保存在/tmp目录下,/tmp目录下的文件很容易丢失(重启后基本就会删除),解决办法:在hbase-env.sh中修改pid文件的存放路径

解决方法:

在hbase-env.sh中修改pid文件的存放路径创建用户的pids目录:

export HBASE_PID_DIR=/home/hduser/pids

命令生成: hbase-mango-master.pid文件
touch hbase-mango-master.pid

虚拟机内存不足

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000de530000,10813440,0) Failed; error='Cannot allocate memory' (errno=12)

OpenJDK 64位服务器VM警告:无法分配内存。

关于本文配置文件的下载:HBase配置文件与HBase doc文档

Ubuntu Server安装Apache HBase的更多相关文章

  1. 解决java连接虚拟机Hbase无反应的问题

    这篇文章主要介绍了解决java连接虚拟机Hbase无反应的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. 解决Java API不能远程访问HBase的问题

    这篇文章主要介绍了解决Java API不能远程访问HBase的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. java连接HBase,连接不上报错can not resolve问题及解决

    这篇文章主要介绍了java连接HBase,连接不上报错can not resolve问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. Centos7.2安装Hbase-1.2.6的操作步骤

    解压缩hbase-1.2.6-bin.tar.gz并重命名为hbase,编辑/hbase/conf/hbase-env.sh$egrep-v'^$|^#'hbase-env.shexportJAVA_HOME=/usr/local/java/jdk1.8.0_101exportHBASE_CLAsspATH=/data/hadoop/etc/hadoopexportHBASE_OPTS="-XX:

  5. 在centos下配置hbase环境并简单使用hbase shell

    操作系统版本:centos7jdk版本:jdk-8u151-linux-x64.rpmhbase版本:hbase-1.2.6以单机模式安装运行配置centos为静态IP安装下载好的jdkrmp包安装后的java目录在jdk-8u151-linux-x64.rpm配置JAVA_HOME环境变量运行source/etc/profile使环境变量生效将下载好的hbase包复制到/data目录下,解压进入

  6. CentOS 7下安装集群HBase1.2.4

    3)在hbase-1.2.4/目录下创建以下目录二、配置HBase1)修改hbase-1.2.4/conf/hbase-env.sh文件添加如下两行:2)修改hbase-1.2.4/conf/hbase-site.xml文件注意:官网上给的是hbase.rootdir,但是在实践中,该名称会导致使用hbaseshell时报错,因此需要改为hbase.root.dir3)用hadoop-2.7.3和zookeeper-3.4.9相关jar文件替换hbase-1.2.4/lib目录下的hadooP*.jar和

  7. 基于CentOS的HBase,Hive,Kylin,ZooKeeper,Kafka分布式集群搭建过程

    二.Hive环境搭建1.安装MysqL2.为Hive建立相应的MysqL账户,并赋予足够的权限,如下所示:3.建立Hive专用元数据库,用创建的hive账号登录,如下所示:4.加载MysqL驱动包将mysql-connector-java-5.1.44-bin.jar放$HIVE_HOME$/lib目录下面。

  8. 基于CentOS的HBase,Hive,Kylin分布式集群搭建过程

    二.Hive环境搭建1.安装MysqL2.为Hive建立相应的MysqL账户,并赋予足够的权限,如下所示:3.建立Hive专用元数据库,用创建的hive账号登录,如下所示:4.加载MysqL驱动包将mysql-connector-java-5.1.44-bin.jar放$HIVE_HOME$/lib目录下面。

  9. php – 如何清除hbase中的表?

    我想在hbase中清空一个表…没有单一命令可以清除Hbase表,但您可以使用2种解决方法:禁用,删除,创建表或扫描所有记录并删除每个记录.实际上,再次禁用,删除和创建表大约需要4秒钟.如果表中没有大量数据–扫描所有行并删除每个行的速度要快得多.在这种情况下,数据不会被物理删除,实际上它被“标记为已删除”并保留在表中直到下一个主要契约.

  10. Ubuntu16.04安装HBASE集群

    http://mirrors.hust.edu.cn/apache/hbase/http://mirrors.hust.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gzroot@master:/usr/local/hbase-1.3.1#vim/etc/profile#Hbase_HomeexportHBASE_HOME=/usr/local/hba

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部