博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS之HBase伪分布安装
阅读量:5052 次
发布时间:2019-06-12

本文共 5201 字,大约阅读时间需要 17 分钟。

1、HBase简介

  HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据

  存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如右侧的图所示:

  HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧。

2、为什么采用HBase?

  HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方面读写你的大数据内容。

  HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。就点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,

  你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。

  简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。

  你只需要 告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功 能。

  Apache HBase 和Google Bigtable 有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,

  对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。

3、Hbase安装:

 1、下载jar,并且解药到对应的目录

tar-zxvf hbase-0.98.21-hadoop1-bin.tar.gz -C /opt/install/

 

 2、配置环境变量

sudo vim /etc/prfile
//添加HABSE_HOME export HBASE_HOME=/opt/install/hbase //修改PATHexport PATH=$JAVA_HOME/bin:$HBASE_HOME/bin:$HADOOP_HOME/bin:$PATH

 

   3、 修改$HBASE_HOME/conf/hbase-env.sh,修改内容如下:

export JAVA_HOME=/opt/install/jdk1.7.0_79//使用HBase自带的zookeeperexport HBASE_MANAGES_ZK=true

 

   4、修改$HBASE_HOME/conf/hbase-site.xml,修改内容如下:

<configuration>

<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.203.128:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.203.168</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

 

  5、 (可选)修改文件regionservers:

192.168.203.128

  6、 启动hbase,执行命令start-hbase.sh

  ******启动hbase之前,确保hadoop是运行正常的,并且可以写入文件*******

  7、 验证:

(1)执行jps,发现新增加了3个java进程,分别是HMaster、HRegionServer、HQuorumPeer (2)使用浏览器访问http://hadoop0:60010

 

4、hbase shell操作

  4.1、hbase相关shell命令

 

 4.2对表的操作:

创建表>create 'users','user_id','address','info'表users,有三个列族user_id,address,info列出全部表>list 得到表的描述>describe 'users'创建表>create 'users_tmp','user_id','address','info'删除表>disable 'users_tmp'>drop 'users_tmp'

  

 4.3、对记录的操作

//添加记录put 'users','xiaoming','info:age','24';put 'users','xiaoming','info:birthday','1987-06-17';put 'users','xiaoming','info:company','alibaba';put 'users','xiaoming','address:contry','china';put 'users','xiaoming','address:province','zhejiang';put 'users','xiaoming','address:city','hangzhou';put 'users','zhangyifei','info:birthday','1987-4-17';put 'users','zhangyifei','info:favorite','movie';put 'users','zhangyifei','info:company','alibaba';put 'users','zhangyifei','address:contry','china';put 'users','zhangyifei','address:province','guangdong';put 'users','zhangyifei','address:city','jieyang';put 'users','zhangyifei','address:town','xianqiao';//取得一个id的所有数据get 'users','xiaoming'//获取一个id,一个列族的所有数据get 'users','xiaoming','info'//获取一个id,一个列族中一个列的所有数据get 'users','xiaoming','info:age'

 

5、Java操作

package cn.edu.hadoop.hbase;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.MasterNotRunningException;import org.apache.hadoop.hbase.ZooKeeperConnectionException;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;public class LearnHbase {    public static void main(String[] args) throws Exception {        // table();        record();    }    /**     * 表相关的操作     *      * @throws IOException     * @throws ZooKeeperConnectionException     * @throws MasterNotRunningException     */    public static void table() throws Exception {        // 创建表        Configuration conf = HBaseConfiguration.create();        conf.set("hbase.rootdir", "hdfs://master:9000/hbase");        // 使用eclipse时必须添加这个,否则无法定位        conf.set("hbase.zookeeper.quorum", "master");        HBaseAdmin admin = new HBaseAdmin(conf);        boolean isexists = admin.tableExists("table");        if (!isexists) {            HTableDescriptor desc = new HTableDescriptor("table");            desc.addFamily(new HColumnDescriptor("family"));            admin.createTable(desc);        } else {            System.out.println("exists.....");        }        // 删除表        admin.disableTable("table");        admin.deleteTable("table");    }    public static void record() throws Exception {        Configuration conf = HBaseConfiguration.create();        conf.set("hbase.rootdir", "hdfs://master:9000/hbase");        // 使用eclipse时必须添加这个,否则无法定位        conf.set("hbase.zookeeper.quorum", "master");        HTable table = new HTable(conf, "users");        Put put = new Put("xiaoming".getBytes());        put.add("address".getBytes(), "age".getBytes(), "40".getBytes());        table.put(put);        Get get = new Get("xiaoming".getBytes());        Result result = table.get(get);        byte[] bytes = result.getValue("address".getBytes(), "age".getBytes());        System.out.println(new String(bytes));        table.close();    }}

 

转载于:https://www.cnblogs.com/googlemeoften/p/5795635.html

你可能感兴趣的文章
sql server升级打补丁
查看>>
ubuntu10.04安装x264库
查看>>
772002画马尾
查看>>
PHP传值和传引用、传地址的区别
查看>>
【Leetcode】Search in Rotated Sorted Array II
查看>>
蓬佐错觉:蓬佐错觉
查看>>
Redis:目录
查看>>
[usaco3.3.2]shopping
查看>>
分享一下:2011回顾:20个将JavaScript推到极致的网站(转)
查看>>
作业5.2 对5.1内容的完善体会
查看>>
使用antd UI 制作菜单
查看>>
五分钟入门 Dingo API
查看>>
带入gRPC:对 RPC 方法做自定义认证
查看>>
HP下kafka的实践
查看>>
Buffer.compare()
查看>>
buf.writeInt32BE()函数详解
查看>>
网络编程-Python的socket库
查看>>
●数组及应用举例
查看>>
Ajax表单提交插件jquery form
查看>>
个人作业2——英语学习APP案例分析
查看>>