文章目录
Hadoop(五)之实验二HBase使用:HBase shell
Hadoop(六)之实验二HBase使用:使用Java API操作HBase上的数据
一、修改 Hbase 配置文件
1.编辑配置文件 hbase-env.sh
【c0上】
gedit /home/work/_app/hbase-1.4.10/conf/hbase-env.sh
#!/usr/bin/env bash
#
# Extra Java runtime options.
# Below are what we set by default. May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://hbase.apache.org/book.html#performance
export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"
# Where log files are stored. $HBASE_HOME/logs by default.
export HBASE_LOG_DIR=/home/work/_logs/hbase-1.4.10
# The directory where pid files are stored. /tmp by default.
# export HBASE_PID_DIR=/var/hadoop/pids
export HBASE_PID_DIR=/home/work/_data/hbase-1.4.10
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
# 使用hbase自带的zookeeper
export HBASE_MANAGES_ZK=true
2.编辑配置文件 hbase-site.xml
【c0上】
gedit /home/work/_app/hbase‐1.4.10/conf/hbase‐site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name> <!-- hbase存放数据目录 -->
<value>hdfs://mshkcluster:8020/hbase/hbase_db</value>
<description>端口要和Hadoop的fs.defaultFS端口一致</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>集群将处于的模式。可能的值是对于独立模式为false,对于分布式模式为true</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>c0,c1,c2,c3</value>
<description>逗号分隔的ZooKeeper集合中的服务器列表个</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/work/_data/hbase-1.4.10</value>
<description>zookooper配置、日志等的存储位置,必须为以存在</description>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
<description>HBase Master应绑定的端口</description>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
<description>hbase web 端口</description>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
3.配置 Slaver
(1)修改regionservers文件
c2,c3是第三、四台虚拟机的名字
【c0上】
gedit /home/work/_app/hbase-1.4.10/conf/regionservers
内容修改为:
c2
c3
(2)删除掉与 Hadoop 重复的 jar 包
【c0上】
rm ‐r -f /home/work/_app/hbase-1.4.10/lib/slf4j-log4j12-1.7.10.jar
4.将 Hbase 复制到其他机器
【c0上】
for N in $(seq 1 3); do scp ‐r /home/work/_app/hbase‐1.4.10 c$N:/home/work/_app/; done;
二、启动 Hbase
1.启动hbase
在 NameNode 的 c0和c1 上分别通过 start-hbase.sh 启动 Hbase,会看到在 Master 上有 HMaster 的守护进程,同时会自动启动其他节点的 HRegionServer 服务。
注:之前在c1上关闭 namenode的,需要在c1上先启动namenode,再启动Hbase。启动namenode命令为
hdfs --daemon start namenode
【c0和c1上分别】
start-hbase.sh
jps
关闭的命令为:stop-hbase.sh
(不执行)
2.网页UI
启动后浏览 http://c0:16010
,可以看到 c0 是 Master 而 c1 是 Backup Master
三、HBase shell
1.启动HBase shell
如果是重新开虚拟机的,那么要启动zookeeper(多打几遍,以防出现假启动后报错。客户端连接zk,不停地报Will not attempt to authenticate using SASL (unknown error)
)
for N in $(seq 0 3); do ssh c$N zkServer.sh start; done;
for N in $(seq 0 3); do ssh c$N jps; done;
启动HBase shell
$HBASE_HOME/bin/hbase shell
示例:
2.查询数据库状态
status
【问题:ERROR: Can't get master address from ZooKeeper; znode data == null
】
sudo mkdir -p /var/hadoop/pids
chmod 777 /var/hadoop/pids
export HBASE_PID_DIR=/var/hadoop/pids
3.查询数据库版本
version
4.对表的操作
(1)创建表
利用命令create
创建表tempTable,表中有f1,f2,f3三个列族
create 'tempTable','f1','f2','f3'
(2)列出HBase中所有的表信息
list
(3)为表中添加数据
一次只能为一个表的一行数据的一个列添加一个数据
参数:表
、行
、列指定的单元格
、数据
put 'tempTable','r1','f1:c1','f3'
(4)浏览表的相关信息
scan 'tempTable'
(5)获得单元格的值
表名、行、列
get 'tempTable','r1',{COLUMN=>'f1:c1'}
(6)生效/失效表
disable 'tempTable'
enable 'tempTable'
(7)删除表
drop 'tempTable'