云/大数据      HBase1.0.1入门   
文章目录  [隐藏]

Hadoop环境准备参考 www.cuiweiyou.com/1399.html

apache全部下载 http://www.apache.org/dyn/closer.cgi/

奇数版本号为“开发人员预览版” (developer previews),偶数版本号为可以产品化的“稳定版”(stable)
http://www.apache.org/dyn/closer.cgi/hbase/

一。安装HBase1.0.1

1.下载解压

选择合适目录 如 /home/
配置环境变量,/etc/bashrc文件、/etc/profile文件(一般选这个)、~/.bash_profile文件、~/.bashrc文件(本例)。
export HBASE_HOME=/home/hbase-1.0.1
export PATH=$HBASE_HOME/bin:$PATH

2.编辑hbase_env.sh

文件路径 /home/hbase-1.0.1/conf/hbase-env.sh


3.修改hbase-site.xml


4.配置regionservers


5.替换jar

进入 hbase 的 lib 目录,查看 hadoop jar 包的版本
可以使用命令:find -name 'hadoop*jar'

可见当前hbase-1.0.1对应的hadoop版本为2.5.1,而当前安装的hadoop集群使用2.7.0版本。
需要用%hadoop%/share/hadoop/目录下的对应名称jar来替换。
hadoop-client-*.jar可在这里找到http://maven.outofmemory.cn/org.apache.hadoop/hadoop-client/

6.同步全部主机

如果是分布式集群,须将hbase目录拷贝到其它主机同目录下,同时修改其它主机的环境变量,使全部主机配置相同。

7.启动hbase

首先启动HDFS系统
然后启动HBase
start-hbase.sh

web管理页面地址:
HMaster地址 http://localhost:60010/master-status
HRegionServer地址 http://localhost:16301/rs-status

  
查看日志发现有3个问题
hbase-root-zookeeper-debian.log 文件头部。这个估计是因为当前集群在伪分布式中,且仅配了一个zookeeper服务器。
ERROR [main] quorum.QuorumPeerConfig: Invalid configuration, only one server specified (ignoring)
hbase-root-master-debian.log文件
WARN [debian:16020.activeMasterManager] zookeeper.ZKTableStateManager: Moving table hbase:meta state from null to ENABLED
WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181] server.NIOServerCnxn: caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x14d4631029e0003, likely client has closed socket

尚未处理。

hbase-root-master-debian.log文件:
这个错误很操蛋,在start-hbase.sh后出现,jps只能看到dfs的3个进程和HQuorumPeer进程。没有HRegionServer和HMaster。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Failed to start master
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2106)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:152)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:104)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2120)

Caused by: java.net.BindException: 无法指定被请求的地址 #毛意思?
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:444)
at sun.nio.ch.Net.bind(Net.java:436)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.hadoop.hbase.ipc.HBaseServer.bind(HBaseServer.java:256)
at org.apache.hadoop.hbase.ipc.HBaseServer$Listener.(HBaseServer.java:482)
at org.apache.hadoop.hbase.ipc.HBaseServer.(HBaseServer.java:1559)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.(WritableRpcEngine.java:255)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getServer(WritableRpcEngine.java:204)
at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getServer(WritableRpcEngine.java:56)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getServer(HBaseRPC.java:330)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getServer(HBaseRPC.java:319)
at org.apache.hadoop.hbase.master.HMaster.(HMaster.java:311)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2101)
... 5 more

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一点亮眼的提示也没有啊。拜读良久,修改 /etc/hosts 文件:
127.0.0.1 localhost debian
只保留这一句,127.0.0.1回路IP,对应localhost和主机名。

二。常用的HBase Shell

在HBASE_HOME中创建一个a.txt文件,执行shell时使用
root@debian:~# hbase shell a.txt
可以将执行的shell命令都保存起来。但本例不能保存,文件一直为空。可能是版本的问题。

这个问题是因为Hadoop目录lib中jar包slf4j-log4j和HBase目录中的重复,将HBase目录中的删除。


常用shell命令:

使用这些命令时,注意逗号、分号。

1.查看hbase状态-status


2.创建表-create


3.修改表-alter


4.打印全部表-list


5.查看表描述-describe


6.向表插入条目-put


7.更新条目-put


8.查询条目-get


9.打印表的全部条目-scan


10.删除条目-delete


11.删除行-deleteall


12.清空表/重新建表-truncate


13.统计表的条目总量-count


14.关闭并删除表-disable、drop


三。常用的HBase JavaAPI



1.建表


org.apache.hadoop.hbase.client.Admin


org.apache.hadoop.hbase.HTableDescriptor


2.插入/更新单元格


org.apache.hadoop.hbase.client.Table


org.apache.hadoop.hbase.HColumnDescriptor


org.apache.hadoop.hbase.client.Put


3.读取单元格


org.apache.hadoop.hbase.client.Get


org.apache.hadoop.hbase.client.Result


4.扫描全部单元格


org.apache.hadoop.hbase.client.ResultScanner


5.删除单元格


org.apache.hadoop.hbase.client.Delete


6.删除行


7.删除表




四。HBase表结构参考图



承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设