Apache Hbase 快速入门
本文节选自《Netkiller Database 手札》
第 62 章 Apache Hbase
目录
- 62.1. 安装 Apache Hbase
-
- 62.1.1. 单机安装
- 62.2. Hbase Shell
- 62.3. Web UI
- 62.4. 配置 Apache Hbase
-
- 62.4.1. hbase-env.sh
- 62.5. FAQ
-
- 62.5.1. HBaseConfTool : Unsupported major.minor version 51.0
- 62.5.2. ignoring option PermSize=128m; support was removed in 8.0
62.1. 安装 Apache Hbase
注意:Apache Hbase 不能使用 OpenJDK 启动,需要去 Oracle 网站下载 Server JRE
62.1.1. 单机安装
如果你是第一次安装Hbase,建议你从单机安装开始,这样成功率比较高,不会受挫。Hbase 不比关系型数据库复杂,只是安装比较麻烦,一旦安装号使用起来还是很容易上手的,请直接粘贴复制下面的命令即可完成安装:
cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz
tar zxf hbase-1.2.6-bin.tar.gz
cp hbase-1.2.6/conf/hbase-site.xml{,.original}
mv hbase-1.2.6 /srv/apache-hbase-1.2.6
ln -s /srv/apache-hbase-1.2.6 /srv/apache-hbase
cp /srv/apache-hbase/conf/hbase-env.sh{,.original}
cat > /srv/apache-hbase/conf/hbase-env.sh <<EOF
export JAVA_HOME=/srv/java
#export HBASE_CLASSPATH=
export HBASE_MANAGES_ZK=true
EOF
cat > /srv/hbase/conf/hbase-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///tmp/hbase-${user.name}</value>
</property>
</configuration>
EOF
启动 Apache Hbase
/srv/apache-hbase/bin/start-hbase.sh
进入 Hbase shell
/srv/apache-hbase/bin/hbase shell
62.2. Hbase Shell
安装完Apache hbase启动后就可以进入 hbase shell了,hbase shell 是与Hbase交互的界面。
首先我们做几个基本操作,例如创建表,写入数据,读取数据等等,你会发现Hbase被神话了,操作其实没有那么复杂,远没有关系型数据库复杂。
[root@localhost bin]# hbase shell
2017-06-27 21:07:35,524 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
hbase(main):001:0>
创建一个名为 t1 的表,使用默认命名空间 namespace=default,这个表有一个column family 为 f1。后面会解释什么是 column family,这里你只要对着操作就可以了。
hbase(main):002:0> create 't1', 'f1'
0 row(s) in 1.2190 seconds
=> Hbase::Table - t1
向t1表插入数据字段名(key)是r1,数据值 value 是 ‘value’
hbase(main):014:0> put 't1', 'r1', 'f1', 'value'
0 row(s) in 0.0060 seconds
获取表 t1 ,字段名(key)为 r1 的数据
hbase(main):032:0> get 't1', 'r1'
COLUMN CELL
f1: timestamp=1498613275013, value=value
1 row(s) in 0.0240 seconds
扫描表相当于 select * from t1
hbase(main):034:0> scan 't1'
ROW COLUMN+CELL
r1 column=f1:, timestamp=1498613275013, value=value
1 row(s) in 0.0140 seconds
删除表,删除表之前需要先禁用该表,然后使用drop命令删除。
hbase(main):036:0> disable 't1'
0 row(s) in 2.2460 seconds
hbase(main):037:0> drop 't1'
0 row(s) in 1.2310 seconds
hbase(main):038:0>
退出 Hbase shell
hbase(main):038:0> exit
[root@localhost bin]#
62.3. Web UI
除了 Web Shell Hbase 还提供了 Web UI 地址是:
http://localhost:16010/master-status
请确保你的防火墙放行了 16010 端口
[root@localhost conf]# iptables-save | grep 16010
-A INPUT -p tcp -m state --state NEW -m tcp --dport 16010 -j ACCEPT
62.4. 配置 Apache Hbase
62.4.1. hbase-env.sh
环境变量配置文件
HBASE_MANAGES_ZK=true 仅用于单机运行,true表示不使用 Zookeeper
62.5. FAQ
62.5.1. HBaseConfTool : Unsupported major.minor version 51.0
错误提示
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/util/HBaseConfTool : Unsupported major.minor version 51.0
解决方案,Hbase 不支持 OpenJDK 更换 Oracle Server JRE 后可以解决。
62.5.2. ignoring option PermSize=128m; support was removed in 8.0
jvm 1.8 之后不再支持PermSize和MaxPermSize选项
[root@localhost hbase]# bin/start-hbase.sh
starting master, logging to /srv/hbase/bin/../logs/hbase-root-master-localhost.localdomain.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
解决方案:"-server -Xms2048m -Xmx4096m"
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(27)-权限管理系统-分配用户给角色
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-分配角色给用户
- 体验vs11 Beta
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(25)-权限管理系统-系统管理员(附生成器)
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(24)-权限管理系统-将权限授权给角色
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(23)-权限管理系统-角色组模块
- jQuery Gallery Plugin在Asp.Net中使用
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(22)-权限管理系统-模块导航制作
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(18)-权限管理系统-表数据
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(17)-LinQ动态排序
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CodeForces 23B (图论 思维)
- JDBC 进阶操作
- Leetcode 面试题 01.06. 字符串压缩 (字符串模拟)
- Centos 7 安装 Git
- 受限平均生存时间(Restricted mean survival time)简析及R语言实现
- Leetcode 695. 岛屿的最大面积 (DFS)
- mskcc的vcf2maf极简解决方案代码分享
- 乘法逆元 线性递推阶乘求逆元、费马小定理、普适线性求逆元 欧拉定理结论
- 最新最全的varscan 软件找somatic mutation
- 【每周一库】- toml 一个toml文件解析库
- Rust FFI 编程 - bindgen 使用示例
- bug 回忆录(三)
- bug 回忆录(二)
- bug 回忆录(一)
- 曾经绊倒我的 “超级丑数”