准备:hbase-1.1.1-bin.tar.gz文件,hadoop-2.7.1、linux环境等
时间同步
1、 解压hbase-1.1.1-bin.tar.gz
2、 修改conf/hbase-env.sh
vi /usr/local/hbase/conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_03
3、 使用hbase自带的zookeeper
export HBASE_MANAGES_ZK=true
4、 修改hbase-site.xml
<configuration>
<property>
<!-- HRegionServer的数据库存储目录 -->
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<!--hbase为完全分布式 -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!--hmaster的地址 -->
<name>hbase.master</name>
<value>master:60000</value>
</property>
<property>
<!--ZooKeeper集群服务器的位置 注意须是奇数个 过半存活问题 -->
<name>hbase.zookeeper.quorum</name>
<value>master,slaveA,slaveB</value>
</property>
<property>
<!--zookeeper属性数据存储目录,默认是/tmp,而tmp重启电脑会清空-->
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase/zookeeper</value>
</property>
</configuration>
5、 以上文件修改后把修改好的文件夹scp方式传输到slaveA和slaveB节点,使多个节点的hbase文件夹保持一致
6、 先启动hadoop集群这里主要是保证文件系统启动了,可以不用start-all 只启动文件系统也ok (dfs-start)启动hbase集群:
cd /usr/local/hbase/bin/
./start-hbase.sh
# 通过jps查看进程 master:
27709 NameNode
28186 ResourceManager
28024 SecondaryNameNode
27845 DataNode
7471 HQuorumPeer
8047 Jps
28297 NodeManager
7538 HMaster
7674 HRegionServer
# jps slave:
17829 HQuorumPeer
3825 NodeManager
18200 Jps
3677 DataNode
17913 HRegionServer
7、 Hbase 界面端口:16010 16020 16030,如果端口被占用会自动偏移,可以通过lsof -i查看实际端口
http://master:16010/ http://master:16020/ http://master:16030/
8、 master界面查看Hbase Configuration,未配置项自动生成,可作参考调整相应配置。
Hbase常用命令:
说明: Table = n * row Row = n * column Column = n * cell
名称 | 命令表达式 |
创建表 | create '表名', '列名1','列名2','列名N' |
添加记录 | put '表名', '行名', '列名', '值' |
查看记录 | get '表名', '行名' |
查看表中的记录总数 | count '表名' |
删除记录 | deleteall ‘表名’,’行名’ |
删除一张表 | 第一步 disable '表名' |
全表扫描 | scan ‘表名’ |
更新记录 | 就是重写一遍进行覆盖 |
表信息 | list |
服务器状态 | status |
增加列 | disable '表名' |
删除列 | disable '表名' |
补充:ERROR: org.apache.hadoop.hbase.MasterNotRunningException
NameNode在启动的时候首先进入安全模式,如果datanode 丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元 数据 记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)
Theratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe modewill be turned off automatically in 18 seconds.
hadoopdfsadmin -safemode leave
有两个方法离开这种安全模式
1. 修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。
2.hadoop dfsadmin -safemode leave命令强制离开
用户可以通过dfsadmin-safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。