大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践
之前介绍过关于HBase 0.9.8版本的部署及使用,本篇介绍下最新版本HBase1.2.4的部署及使用,有部分区别,详见如下:
1. 环境准备:
1.需要在Hadoop[hadoop-2.7.3] 启动正常情况下安装,hadoop安装可参考LZ的文章 大数据系列之Hadoop分布式集群部署
2. 资料包 zookeeper-3.4.9.tar.gz,hbase-1.2.4-bin.tar.gz
2. 安装步骤:
1.安装zookeeper
1.解压zookeeper-3.4.9.tar.gz
cd
tar -xzvf zookeeper-3.4.9.tar.gz
ll zookeeper-3.4.9
2.新建配置conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/mfz/zookeeper-3.4.9/zookeeperData
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1
3.启动zk
jps
bin/zkServer.sh start
4. 查看zk端口2181状态
echo stat | nc master 2181
2.安装HBase-1.2.4
1.将hbase 压缩包放入用户~/resources下
2.执行命令,cp到用户根目录,解压
cp resources/hbase-1.2.4-bin.tar.gz .
tar -xzvf hbase-1.2.4-bin.tar.gz
ll hbase-1.2.4
3.配置 conf/hbase-env.sh
...# The java implementation to use. Java 1.7+ required.
# export JAVA_HOME=/usr/java/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_102/
# 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://wiki.apache.org/hadoop/PerformanceTuning
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false
...
4.配置 conf/hbase-site.xml
<configuration><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.rootdir</name><value>hdfs://master:9000/hbase</value></property><property><name>hbase.zookeeper.quorum</name><value>master</value></property>
</configuration>
5.配置 conf/regionservers ,将内容替换为slave (集群从节点主机hostname)
6.配置环境变量,可在.base_profile , 也可在root 用户下配置/etc/profile 。 注意要生效配置 source {filename}
#HBase CONFIG
export HBASE_HOME=/home/mfz/hbase-1.2.4
export PATH=$HBASE_HOME/bin:$PATH
export HADOOP_CLASSPATH=$HBASE_HOME/lib/*
7.将配置完成后的Hbase安装包传输到slave集群节点上
cd
scp -r hbase-1.2.4 slave:~/
8. 启动Hbase ,进入安装目录下:
bin/start-hbase.sh
9.验证Hbase,进入master 浏览器.此步骤与0.9.8版本不同的是端口还由60010改为16010,启动界面如下则启动成功
10.进入HBase shell执行增、删、改、查操作(与Hbase 0.9.8 Shell命令一致)不做其他说明
#shell 命令如下#开启Hbase shell
bin/hbase shell#创建表 hbasename, 有两个列族 'one'和'two'
create 'hbasename','one','two'#查看表
list#查看表结构
describe 'hbasetest'#插入数据
put 'hbasename','test1','one','helloWorld',1#查看数据
scan 'hbasename'
get 'hbasename','test1'#修改表结构(新增列族'three')
alter 'hbasename',NAME='three'#删除表disable 'hbasename'
drop 'hbasename'
更多hbase shell命令详见官网 http://hbase.apache.org/book.html#shell_exercises
3.HBase-demo
1.BaseConfig.Java
package hbase.base;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;/*** @author mengfanzhu* @Package hbase.base* @Description:* @date 17/3/16 10:59*/
public class BaseConfig {/*** 创建hbase连接* @return*/public static Connection getConnection() throws Exception{Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.property.clientPort", "2181");conf.set("hbase.zookeeper.quorum", "10.211.55.5");conf.set("hbase.master", "10.211.55.5:9000");Connection conn = ConnectionFactory.createConnection(conf);return conn;}
}
2.BaseDao.java
package hbase.base;import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.*;/*** @author mengfanzhu* @Package base* @Description:* @date 17/3/16 10:58*/
public interface BaseDao {/*** 创建表* @param tableDescriptor*/public void createTable(HTableDescriptor tableDescriptor) throws Exception;/*** 新增数据* @param putData* @param tableName*/public void putData(Put putData,String tableName) throws Exception;/*** 删除数据* @param delData* @param tableName*/public void delData(Delete delData,String tableName) throws Exception;/*** 查询数据* @param scan* @param tableName* @return*/public ResultScanner scanData(Scan scan,String tableName) throws Exception;/*** 查询数据* @param get* @param tableName* @return*/public Result getData(Get get,String tableName) throws Exception;
}
3.BaseDaoImpl.java
package hbase.base;import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** @author mengfanzhu* @Package hbase.base* @Description: base服务实现* @date 17/3/16 11:11*/
public class BaseDaoImpl implements BaseDao {static Logger logger = LoggerFactory.getLogger(BaseDaoImpl.class);/*** 创建表* @param tableDescriptor*/public void createTable(HTableDescriptor tableDescriptor) throws Exception{Admin admin = BaseConfig.getConnection().getAdmin();//判断tablename是否存在if (!admin.tableExists(tableDescriptor.getTableName())) {admin.createTable(tableDescriptor);}admin.close();}public void addTableColumn(String tableName,HColumnDescriptor columnDescriptor) throws Exception {Admin admin = BaseConfig.getConnection().getAdmin();admin.addColumn(TableName.valueOf(tableName),columnDescriptor);admin.close();}/*** 新增数据* @param putData* @param tableName*/public void putData(Put putData,String tableName) throws Exception{Table table = BaseConfig.getConnection().getTable(TableName.valueOf(tableName));table.put(putData);table.close();}/*** 删除数据* @param delData* @param tableName*/public void delData(Delete delData,String tableName) throws Exception{Table table = BaseConfig.getConnection().getTable(TableName.valueOf(tableName));table.delete(delData);table.close();}/*** 查询数据* @param scan* @param tableName* @return*/public ResultScanner scanData(Scan scan,String tableName) throws Exception{Table table = BaseConfig.getConnection().getTable(TableName.valueOf(tableName));ResultScanner rs = table.getScanner(scan);table.close();return rs;}/*** 查询数据* @param get* @param tableName* @return*/public Result getData(Get get,String tableName) throws Exception{Table table = BaseConfig.getConnection().getTable(TableName.valueOf(tableName));Result result = table.get(get);table.close();return result;}
}
4.StudentsServiceImpl.java
package hbase.students;import hbase.base.BaseDao;
import hbase.base.BaseDaoImpl;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;import java.util.HashMap;
import java.util.Map;/*** @author mengfanzhu* @Package hbase.students* @Description: students服务* @date 17/3/16 11:36*/
public class StudentsServiceImpl {private BaseDao baseDao = new BaseDaoImpl();private static final String TABLE_NAME = "t_students";private static final String STU_ROW_NAME = "stu_row1";private static final byte[] FAMILY_NAME_1 = Bytes.toBytes("name");private static final byte[] FAMILY_NAME_2 = Bytes.toBytes("age");private static final byte[] FAMILY_NAME_3 = Bytes.toBytes("scores");public void createStuTable() throws Exception{//创建tablename,列族1,2HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));HColumnDescriptor columnDescriptor_1 = new HColumnDescriptor(FAMILY_NAME_1);HColumnDescriptor columnDescriptor_2 = new HColumnDescriptor(FAMILY_NAME_2);HColumnDescriptor columnDescriptor_3 = new HColumnDescriptor(FAMILY_NAME_3);tableDescriptor.addFamily(columnDescriptor_1);tableDescriptor.addFamily(columnDescriptor_2);tableDescriptor.addFamily(columnDescriptor_3);baseDao.createTable(tableDescriptor);}/*** 插入数据<列族名称,值>* @param bytes*/public void putStuData(Map<byte[],byte[]> bytes) throws Exception{Put put = new Put(Bytes.toBytes(STU_ROW_NAME));;int i = 1;for(byte[] familyNames : bytes.keySet()){put.addColumn(familyNames, bytes.get(familyNames), Bytes.toBytes(0));i++;}baseDao.putData(put, TABLE_NAME);}public ResultScanner scanData(Map<byte[],byte[]> bytes) throws Exception{Scan scan = new Scan();for(byte[] familyNames : bytes.keySet()){scan.addColumn(familyNames, bytes.get(familyNames));}scan.setCaching(100);ResultScanner results = baseDao.scanData(scan,TABLE_NAME);return results;}public void delStuData(String rowId,byte[] familyName,byte[] qualifierName) throws Exception{Delete delete = new Delete(Bytes.toBytes(rowId));delete.addColumn(familyName, qualifierName);baseDao.delData(delete,TABLE_NAME);}public static void main(String[] args) throws Exception {StudentsServiceImpl ssi = new StudentsServiceImpl();//创建tablessi.createStuTable();//添加数据Map<byte[],byte[]> bytes = new HashMap<byte[],byte[]>();bytes.put(FAMILY_NAME_1,Bytes.toBytes("Jack"));bytes.put(FAMILY_NAME_2,Bytes.toBytes("10"));bytes.put(FAMILY_NAME_3,Bytes.toBytes("O:90,T:89,S:100"));ssi.putStuData(bytes);//查看数据Map<byte[],byte[]> byteScans = new HashMap<byte[], byte[]>();ResultScanner results = ssi.scanData(byteScans);for (Result result : results) {while (result.advance()) {System.out.println(result.current());}}}
}
5.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>mfz.hbase</groupId><artifactId>hbase-demo</artifactId><version>1.0-SNAPSHOT</version><repositories><repository><id>aliyun</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository></repositories><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency><!-- https://mvnrepository.com/artifact/com.yammer.metrics/metrics-core --><dependency><groupId>com.yammer.metrics</groupId><artifactId>metrics-core</artifactId><version>2.2.0</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>2.3</version><configuration><classifier>dist</classifier><appendAssemblyId>true</appendAssemblyId><descriptorRefs><descriptor>jar-with-dependencies</descriptor></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build></project>
6.执行结果
demo已上传至GitHub https://github.com/fzmeng/HBaseDemo
完~~
转载于:https://www.cnblogs.com/cnmenglang/p/6579066.html
大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践相关推荐
- 大数据学习之分布式数据库HBase
HBase简介 HBase就是BigTable的开源实现,是一个稀疏的多维度的排序的映射表,可以用来存储非结构化和半结构化的松散数据,通过水平扩展的方式,允许几千台服务器去存储海量文件 HBase的特 ...
- GZFramwork数据库层《四》单据主从表增删改查
同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 项目源码下载地址:https://github.com/GarsonZhang/GZFr ...
- 大数据技术下 分布式数据库何去何从?
转自:安华信达的文章 链接地址:http://www.sohu.com/a/133784835_481676 一.大数据技术的发展 大数据技术从诞生到现在,已历经了十几个年头,市场上也早已有公司或机构 ...
- 浅显易懂入门大数据系列:四、HBase(超详细)
文章目录 一.HBase的起源 二.HBase的概念 三.HBase产生的背景 四.HDFS与HBase的相关特点以及场景分析 HDFS的适用场景分析 HBase的适用场景分析 五.HBase的存储结 ...
- hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)
原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...
- [Golang数据库专题3]Golang语言操作SQLite3进行增删改查
目录 一.SQLite3安装(linux) 1.2 在线安装 开始安装 目录下创建db 执行表创建语句 二.方案选型 三.编写代码 3.1 代码运行环境准备 Go语言环境 SQLite3生成db 3. ...
- 【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
一.NoSQL数据库概述 NoSQL泛指非关系型数据库,相对于传统关系型数据库,NoSQL有着更复杂的分类,包括KV数据库,文档数据库,列式数据库以及图数据库等等,这些类型的数据库能够更好的适应复杂类 ...
- 数据库的基础概念和代码例子(增删改查和其他操作-约束)
前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 目录导航: 一概念解析 1.什么是数据库? 2.什么是数据库管理系统? 3.什么是SQL? 4.什么是关系型数据库? 5.SQL通用语句? ...
- Python大数据系列-01-关系数据库基本运算
关系数据库基本运算 关系数据库 集合运算 并 交 差 笛卡尔积 关系运算 投影 选择 连接 除 Union并和Intersection交 Union是抽取两个表格中所有行的运算 Intersectio ...
最新文章
- 深思:如何堂堂正正的做事
- UVa455 Periodic Strings(kmp)
- 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误
- ORA-28000: the account is locked-的解决办法
- 漫画算法:如何判断链表有环
- 1042. 字符统计(20)
- 01.神经网络和深度学习 W4.深层神经网络
- 计算机专业介绍范文英文,计算机专业个人简历英文范文
- html表格统计表,jQuery操作表格(table)的常用方法、技巧汇总
- Breeze:抢先体验Kubernetes 1.13.0高可用图形化部署
- 自定义alert提示框
- 【bzoj4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
- pytorch--- .zero_grad()
- 半导体界仙童“八叛逆”又一人去世,仅存一人!
- Intel Thunderbolt 3 接口介绍
- 基于微信实现H5扫一扫功能详细过程
- button按钮的tittle 折行且居中显示
- Lodash是如何实现深拷贝的
- vue 调用语音播放
- matlab insar toolbox,insarmatlab DBT 2.0 工具箱,用于雷达、阵列信号处理仿真 256万源代码下载- www.pudn.com...
热门文章
- TypeScript 官方决定全面采用 ESLint
- java怎么申请变量_java怎么声明变量
- 直方图 帕累托图_工具讲解 | 用Excel绘制帕累托图
- opencv测试代码_玩转OpenCv(二):安装vs2010和opencv3
- css修改图片形状,css定位图形改(原创)
- windows2008 服务器时间格式改不过来_我用VNPY 1天时间搭建自主量化交易(程序化交易)平台...
- hash算法_hash一致性算法
- 使用echarts(三)自定义图表仪表盘
- splunk采集linux日志,splunk日志监控利器
- 【无标题】VUE 强行加载demo元素