精华内容
下载资源
问答
  • HBASE实验总结

    千次阅读 2019-05-26 18:23:13
    一、实验环境 3台CentOS release 6.4虚拟机,IP地址为 192.168.56.101 master 192.168.56.102 slave1 192.168.56.103 slave2 hadoop 2.7.2 hbase 1.2.1 hbase与hadoop的版本兼容性,参考...

    一、实验环境
    3台CentOS release 6.4虚拟机,IP地址为
    192.168.56.101 master
    192.168.56.102 slave1
    192.168.56.103 slave2

    hadoop 2.7.2
    hbase 1.2.1

    hbase与hadoop的版本兼容性,参考http://hbase.apache.org/book.html#basic.prerequisites

    二、安装hadoop集群
    hadoop 2.7.2 安装,参考
    http://blog.csdn.net/wzy0623/article/details/50681554

    三、安装配置hbase

    1. 加压缩
      tar -zxvf hbase-1.2.1-bin.tar.gz

    2. 建立软连接
      ln -s hbase-1.2.1 hbase

    3. 修改三个配置文件
      cd hbase/conf

    vi hbase-env.sh

    添加以下内容

    export JAVA_HOME=/home/grid/jdk1.7.0_75
    export HBASE_HOME=/home/grid/hbase
    export HBASE_LOG_DIR=/tmp/grid/logs
    export HBASE_MANAGES_ZK=true
    vi hbase-site.xml

    添加以下内容

    hbase.rootdir # 设置 hbase 数据库存放数据的目录 hdfs://master:9000/hbase
    <property>
        <name>hbase.cluster.distributed</name>  # 打开 hbase 分布模式
        <value>true</value>
    </property>
    
    <property>
        <name>hbase.master</name> # 指定 hbase 集群主控节点
        <value>master:60000</value>
    </property>
    
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value> # 指定 zookeeper 集群节点名 , 因为是由 zookeeper 表决算法决定的
    </property>
    
    <property>
        <name>hbase.zookeeper.property.dataDir</name> # 指 zookeeper 集群 data 目录
        <value>/home/grid/hbase/zookeeper</value>
    </property>
    
    vi regionservers # 把 localhost 改为如下 slave1 slave2 4. 将修改后的 hbase 目录同步到其它节点 scp -r hbase slave1:/home/grid/ scp -r hbase slave1:/home/grid/

    四、启动hbase

    1. 启动hadoop

    $HADOOP_HOME/sbin/start-dfs.sh
    $HADOOP_HOME/sbin/start-yarn.sh
    2. 启动hbase
    /home/grid/hbase/bin/start-hbase.sh

    1. 查看hbase启动情况
      在master上有HQuorumPeer和HMaster进程
      在slave1、slave2上有HQuorumPeer和HRegionServer进程
      master、slave1、slave2上的hbase的相关进程分别如图1、图2、图3所示
      在这里插入图片描述
      图一
      在这里插入图片描述
      图二
      在这里插入图片描述
      图三
      通过浏览器验证:
      http://192.168.17.210:16010/master-status
      如图4所示
      在这里插入图片描述

    命令行操作:
    /home/grid/hbase/bin/hbase shell
    如图5所示
    在这里插入图片描述
    图五
    参考:

    http://hbase.apache.org/book.html

    http://www.tuicool.com/articles/UBVFBvv

    Hbase的体系结构图如图6所示
    在这里插入图片描述
    图6

    展开全文
  • HBase实验报告

    千次阅读 2019-05-19 20:26:57
    HBase的学习总结一、HBase和zookeeper的安装解压安装环境变量配置修改配置信息HBase配置(伪分布式)二、Eclipse配置添加HBase依赖项目conf配置三、进入HBase数据库1、创建表2、添加数据3、查看数据4、删除数据删除...

    一、HBase和zookeeper的安装

    解压安装

    和前面一样HBase和zookeeper需要从官网下载,从Windows上传输到Linux上,官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/。
    将压缩包从Windows传输到Linux当前目录下:

    在这里插入图片描述在这里插入图片描述
    解压安装到指定目录下/opt/module

    在这里插入图片描述
    在这里插入图片描述

    环境变量配置

    在/etc/profile文件里添加HBase及zookeeper安装路径的配置信息
    在这里插入图片描述source /etc/profile配置生效 (基于上一个文档增加的内容)
    测试HBase安装成功,命令hbase version,或hbase。

    修改配置信息

    修改slaves里的内容,改成虚拟机的主机名
    在这里插入图片描述在这里插入图片描述把zoo_sample.cfd文件名称改为zoo.cfg
    在这里插入图片描述

    HBase配置(伪分布式)

    配置文件位于HBase安装路径的conf目录
    配置hbase-env.sh,设置Java,HBase,zookeeper安装路径
    在这里插入图片描述配置hbase-site.xml 注:bigdata128,localhost改成虚拟机的主机名

    hbase.rootdir hdfs://bigdata128:9000/hbase hbase.cluster.distributed true hbase.zookeeper.quorum localhost

    二、Eclipse配置

    添加HBase依赖

    在【Properties】 里的【Java Build Path】 中【Libraries】添加【hbase-1.4.9】中【lib】的除了【slf4j-log4j12-1.7.10.jar】其它所有jar文件都要添加
    在这里插入图片描述在这里插入图片描述

    项目conf配置

    添加【conf】文件夹,把【hbase-1.4.9】中【conf】的【hbase-site.xml】添加到【conf】文件夹里
    在这里插入图片描述在这里插入图片描述运行程序时,先在TRC启动hadoop、hbase、Zookeeper,并jps查看
    start-all.sh
    start-hbase.sh
    zkServer.sh start
    在这里插入图片描述

    三、进入HBase数据库

    进入HBase的shell命令行模式 HBase shell,了解命令使用方法,如创建表,输入help ‘create’。

    1、创建表

    在这里插入图片描述
    表头有stu、name、age、bigdata

    2、添加数据

    在这里插入图片描述
    前面为索引,后面为值。比如’stu’ , ‘2016001’ , ‘name’ , ‘mark’,stu为表头索引,2016001为值,name为索引,mark为值。

    3、查看数据

    在这里插入图片描述在这里插入图片描述
    get ‘stu’ , '2016001’为查看stu为2016001的所有其他信息,scan 'stu’为查看表内stu元素以及其所有的关联信息。

    4、删除数据

    删除一个单元格
    在这里插入图片描述
    删除一行
    在这里插入图片描述

    删除表

    在这里插入图片描述
    整个数据表的删除

    HBase的学习资料

    HBase架构原理
    https://www.cnblogs.com/steven-note/p/7209398.html

    Hbase Java API
    https://www.cnblogs.com/liuwei6/p/6842536.html
    https://www.cnblogs.com/tiantianbyconan/p/3557571.html
    参考资料:
    Linux下配置环境变量最常用的两种方法—— .bashrc 和 /etc/profile
    https://blog.csdn.net/sun8112133/article/details/79901527

    学习 HBase,应该选择哪个版本?
    https://blog.csdn.net/tzhuwb/article/details/81153323

    https://www.csdn.net/gather_2a/MtTaEgzsODU5Mi1ibG9n.html

    WARN [main] zookeeper.ZooKeeperNodeTracker: Can’t get or delete the master znode
    Will not attempt to authenticate using SASL (unknown error)
    建表之后查看logs报错
    ERROR [main] client.ConnectionManager H C o n n e c t i o n I m p l e m e n t a t i o n : C a n ′ t g e t c o n n e c t i o n t o Z o o K e e p e r : K e e p e r E r r o r C o d e = C o n n e c t i o n L o s s f o r / h b a s e 建 表 时 报 错 C a n ′ t g e t c o n n e c t i o n t o Z o o K e e p e r : K e e p e r E r r o r C o d e = C o n n e c t i o n L o s s f o r / h b a s e 重 新 停 止 、 启 动 H B A S E , 查 看 l o g s , 报 错 2019 − 04 − 0410 : 41 : 52 , 238 I N F O [ M : 0 ; b i g d a t a 128 : 35321 − S e n d T h r e a d ( l o c a l h o s t : 2181 ) ] z o o k e e p e r . C l i e n t C n x n : O p e n i n g s o c k e t c o n n e c t i o n t o s e r v e r l o c a l h o s t / 127.0.0.1 : 2181. W i l l n o t a t t e m p t t o a u t h e n t i c a t e u s i n g S A S L ( u n k n o w n e r r o r ) H b a s e s h e l l 运 行 s t a t u s 报 错 2019 − 04 − 0410 : 49 : 55 , 710 E R R O R [ m a i n ] c l i e n t . C o n n e c t i o n M a n a g e r HConnectionImplementation: Can&#x27;t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase 建表时报错 Can&#x27;t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase 重新停止、启动HBASE,查看logs,报错2019-04-04 10:41:52,238 INFO [M:0;bigdata128:35321-SendThread(localhost:2181)] zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) Hbase shell 运行status 报错2019-04-04 10:49:55,710 ERROR [main] client.ConnectionManager HConnectionImplementation:CantgetconnectiontoZooKeeper:KeeperErrorCode=ConnectionLossfor/hbaseCantgetconnectiontoZooKeeper:KeeperErrorCode=ConnectionLossfor/hbaseHBASElogs2019040410:41:52,238INFO[M:0;bigdata128:35321SendThread(localhost:2181)]zookeeper.ClientCnxn:Openingsocketconnectiontoserverlocalhost/127.0.0.1:2181.WillnotattempttoauthenticateusingSASL(unknownerror)Hbaseshellstatus2019040410:49:55,710ERROR[main]client.ConnectionManagerHConnectionImplementation: Can’t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase

    启动hbase,报错:
    ERROR [main] server.ZooKeeperServer: ZKShutdownHandler is not registered
    ERROR [main] master.HMasterCommandLine: Master exiting
    java.io.IOException: Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum.
    关闭防火墙service iptables stop

    展开全文
  • HBase安装配置 ①下载压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录) 官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ 选择稳定版hbase-1.4.9-bin.tar.gz,在Windows里面...

    HBase安装配置
    ①下载压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录)
    官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/
    选择稳定版hbase-1.4.9-bin.tar.gz,在Windows里面下载。

    ②将压缩包从Windows传输到Linux当前目录下
    SecureCRT 【File】→【Connect SFTP Session】开启sftp操作

    ③安装
    解压安装到指定目录下/opt/module(/opt是系统自带目录,之下的/module是自己创建的)

    ④配置环境变量
    在/etc/profile文件里添加HBase安装路径的配置信息,之后用source命令使配置生效。安装之后的目录为hbase-1.4.9,修改为hbase,所以我的HBase安装路径是/opt/module/hbase。

    测试HBase安装成功,命令hbase version,或hbase。

    HBase配置(伪分布式模式)
    配置文件位于HBase安装路径的conf目录(/opt/module/hbase/conf)下面

    ①配置hbase-env.sh
    设置Java安装路径

    设置HBase的配置文件路径(vi /opt/module/hbase-1.4.9/conf/hbase-env.sh)

    采用HBase自带Zookeeper,设置参数true

    ②配置hbase-site.xml(vi /opt/module/hbase-1.4.9/conf/hbase-site.xml)

    hbase.rootdir hdfs://bigdata128:9000/hbase hbase.cluster.distributed true hbase.zookeeper.quorum localhost

    ③启动并运行HBase(之前启动Hadoop)
    启动HBase,并jps查看

    用完停止HBase运行(之后停止Hadoop)

    进入HBase数据库
    进入HBase的shell命令行模式

    了解命令使用方法,如创建表,输入help ‘create’

    ①创建表

    在这里插入图片描述
    ②添加数据
    在这里插入图片描述

    ③查看数据
    在这里插入图片描述
    在这里插入图片描述

    ④删除数据
    删除一个单元格
    在这里插入图片描述
    删除一行
    在这里插入图片描述

    ⑤删除表
    在这里插入图片描述

    HBase架构原理
    https://www.cnblogs.com/steven-note/p/7209398.html

    Hbase Java API
    https://www.cnblogs.com/liuwei6/p/6842536.html
    https://www.cnblogs.com/tiantianbyconan/p/3557571.html
    参考资料:
    Linux下配置环境变量最常用的两种方法—— .bashrc 和 /etc/profile
    https://blog.csdn.net/sun8112133/article/details/79901527

    学习 HBase,应该选择哪个版本?
    https://blog.csdn.net/tzhuwb/article/details/81153323

    https://www.csdn.net/gather_2a/MtTaEgzsODU5Mi1ibG9n.html

    WARN [main] zookeeper.ZooKeeperNodeTracker: Can’t get or delete the master znode
    Will not attempt to authenticate using SASL (unknown error)
    建表之后查看logs报错
    ERROR [main] client.ConnectionManager H C o n n e c t i o n I m p l e m e n t a t i o n : C a n ′ t g e t c o n n e c t i o n t o Z o o K e e p e r : K e e p e r E r r o r C o d e = C o n n e c t i o n L o s s f o r / h b a s e 建 表 时 报 错 C a n ′ t g e t c o n n e c t i o n t o Z o o K e e p e r : K e e p e r E r r o r C o d e = C o n n e c t i o n L o s s f o r / h b a s e 重 新 停 止 、 启 动 H B A S E , 查 看 l o g s , 报 错 2019 − 04 − 0410 : 41 : 52 , 238 I N F O [ M : 0 ; b i g d a t a 128 : 35321 − S e n d T h r e a d ( l o c a l h o s t : 2181 ) ] z o o k e e p e r . C l i e n t C n x n : O p e n i n g s o c k e t c o n n e c t i o n t o s e r v e r l o c a l h o s t / 127.0.0.1 : 2181. W i l l n o t a t t e m p t t o a u t h e n t i c a t e u s i n g S A S L ( u n k n o w n e r r o r ) H b a s e s h e l l 运 行 s t a t u s 报 错 2019 − 04 − 0410 : 49 : 55 , 710 E R R O R [ m a i n ] c l i e n t . C o n n e c t i o n M a n a g e r HConnectionImplementation: Can&#x27;t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase 建表时报错 Can&#x27;t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase 重新停止、启动HBASE,查看logs,报错2019-04-04 10:41:52,238 INFO [M:0;bigdata128:35321-SendThread(localhost:2181)] zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) Hbase shell 运行status 报错2019-04-04 10:49:55,710 ERROR [main] client.ConnectionManager HConnectionImplementation:CantgetconnectiontoZooKeeper:KeeperErrorCode=ConnectionLossfor/hbaseCantgetconnectiontoZooKeeper:KeeperErrorCode=ConnectionLossfor/hbaseHBASElogs2019040410:41:52,238INFO[M:0;bigdata128:35321SendThread(localhost:2181)]zookeeper.ClientCnxn:Openingsocketconnectiontoserverlocalhost/127.0.0.1:2181.WillnotattempttoauthenticateusingSASL(unknownerror)Hbaseshellstatus2019040410:49:55,710ERROR[main]client.ConnectionManagerHConnectionImplementation: Can’t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase

    启动hbase,报错:
    ERROR [main] server.ZooKeeperServer: ZKShutdownHandler is not registered
    ERROR [main] master.HMasterCommandLine: Master exiting
    java.io.IOException: Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum.

    关闭防火墙service iptables stop

    展开全文
  • 【分布式系统】HBase实验

    千次阅读 2018-01-01 02:11:45
    标签(空格分隔): 分布式系统 华东师范大学 计算机科学与软件工程学院 林佳乐 10152510208 陈伟文 10152510217 徐紫琦 10152510119 一前言 二伪分布式 环境搭建 ...o Hbase Shell o 用java API访问 三

    标签(空格分隔): 分布式系统


    华东师范大学 计算机科学与软件工程学院

    image.png-4.1kB 林佳乐 10152510208

    陈伟文 10152510217

    image.png-3.7kB 徐紫琦 10152510119

    一、前言

    在实现过程中,我们实现了windows环境下的伪分布式的环境搭建以及分布在三台腾讯云服务器下的完全分布式。并使用JAVA成功连接,将Adult(大约3W条数据)成功插入了伪分布式hbase以及完全分布式的hbase。
    完全分布式结果可以在118.25.18.17:16010查看

    二、伪分布式

    1. 环境搭建

    o 下载各种文件

    下载Hadoop-2.9.0、Hadoop-common-2.2.0、Hbase-1.2.6。JDK使用电脑中本身安装的JDK-1.8.0_111。
    Hadoop下载地址
    Hadoop-common下载地址
    Hbase下载地址

    o 环境配置

    为了方便配置,又加上Hadoop无法识别带空格的路径,将下载好的 3个压缩包分别解压到OpenSource文件夹,并且将安装在D:\Program Files\Java中的JDK文件夹拷贝一份到OpenSource中用于后续配置。

    o 覆盖文件

    打开目录D:\OpenSource\hadoop-common-2.2.0-bin-master\bin复制被蓝框框出的7个文件且只复制这7个文件。
    image.png-76.8kB

    打开目录D:\OpenSource\hadoop-2.7.2\bin粘贴刚复制的7个文件
    image.png-108.1kB

    o 安装JDK并配置环境

    JAVA_HOME环境变量

    image.png-65.6kB

    CLASSPATH环境变量

    image.png-28.9kB

    Path环境变量

    image.png-132.1kB

    检测是否成功:令行输入java -version,返回如果成功,”java version “1.8.0_92”“即成功

    image.png-30.4kB

    o 配置Hadoop

    如图找到hadoop-env.cmd

    image.png-185.9kB

    在末尾添上

    image.png-40.5kB

    core-site.xml 文件末尾添上

    image.png-22.7kB

    hdfs-site.xml 文件末尾添上

    image.png-19.4kB

    新建 mapred-site.xml 文件

    image.png-137.7kB

    image.png-109.7kB

    o 启动 Hadoop

    以管理员身份运行 CMD 命令提示符
    切换到 hadoop 目录 :D:\OpenSource\hadoop-2.9.0\etc\hadoop
    运行 hadoop-env.cmd 脚本
    格式化 HDFS 文件系统 :运行%HADOOP_PREFIX%\bin\hdfs namenode -format 指令(之前已经运行过该指令,不重复格式化)

    image.png-52.3kB

    启动 HDFS :运行%HADOOP_PREFIX%\sbin\start-dfs.cmd 指令

    image.png-51.5kB

    image.png-245.8kB

    停止 Hadoop :运行%HADOOP_PREFIX%\sbin\stop-all.cmd指令

    image.png-60.7kB

    o 配置 Hbase
    编辑 hbase-site.xml

    image.png-65.8kB

    编辑 hbase-env.cmd

    image.png-67.6kB

    image.png-181kB

    o 启动 Hbase
    首先保证 hadoop 是启动的状态 以管理员方式启动 CMD 命令提示符 进入 D:\OpenSource\hbase-1.1.5\conf目录 首先执行 hbase-env.cmd

    image.png-184.1kB

    然后进入 bin 目录

    image.png-175kB

    执行 start-hbase.cmd,启动成功会开启 hbase 的窗口

    image.png-214.5kB

    2. 测试结果

    o Hbase Shell

    用 shell 连接 HBase

    image.png-12.6kB

    Scan 表

    image.png-32.2kB

    Get 一行

    image.png-32.2kB

    删除表

    image.png-22.8kB

    关闭 shell

    image.png-30.1kB

    停止 Hbase

    image.png-9.1kB

    o 用java API访问

    image.png-340.6kB

    三、完全分布式

    这里的顺序与上一章不同,先写的配好环境后的一通操作,然后才写艰难的配环境过程,真实分布式的环境花费了至少40个小时 image.png-5.4kB

    1. 一通操作

    JAVA将Adult数据插入hbase数据库中

    o 配置Configuration

    System.setProperty("hadoop.home.dir", "D:/OpenSource/hadoop-2.9.0");
    static Configuation configuration = HBaseConfiguration.create();

    o 主函数

    public static void main(String[] args) throws Exception {
        String tableName = "Iris";
        System.setProperty("hadoop.home.dir", "D:/OpenSource/hadoop-2.9.0");
    
        String columns[] ={"Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","type"};
        createTable(tableName,columns);
        ArrayList<String[]> list = ProcessIrisData();
        for(int i=0;i<list.size();i++)
        {
            insertData(tableName,columns,list.get(i));
        }
       // QueryAll(tableName);
      //  QueryByRowKey(tableName,"3");
        QueryByColumnKey(tableName,"Sepal.Length","5.7");
    }

    设置表的名字为Adult,将列属性设置完毕之后,就可以创建表
    然后从文件中将Adult的数据加载到ArrayList中,就可以进行插入操作

    o 加载数据函数

    public static ArrayList<String[]> ProcessAdultData(){
        ArrayList<String[]> resultList = new ArrayList<>();
        FileReader fr;
        BufferedReader br;
        try{
            fr = new FileReader("./src/Adult.data");
            br = new BufferedReader(fr);
            String line;
            while((line = br.readLine()) != null){
                String[] dataLine = line.split(",");
                resultList.add(dataLine);
            }
        }
        catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultList;
    }

    很简单的操作,将数据按列读入,按”,”分割,然后将String[]加入list中

    o 建表函数

    public static void createTable(String tableName,String[] columns) {
        System.out.println("start create table ......");
        try {
            HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);
            if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创建
                hBaseAdmin.disableTable(tableName);
                hBaseAdmin.deleteTable(tableName);
                System.out.println(tableName + " is exist,detele....");
            }
            HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
            for (String column:columns){
                tableDescriptor.addFamily(new HColumnDescriptor(column));
            }
            hBaseAdmin.createTable(tableDescriptor);
        } catch (MasterNotRunningException e) {
            e.printStackTrace();
        } catch (ZooKeeperConnectionException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("end create table ......");
    }

    先检测该表是否存在,如果存在的话disable之后drop,然后再重新create
    然后在数据逻辑模型HTableDescriptor中一项一项加入列属性名,就可以创建啦

    o 添加数据函数

        public static void insertData(String tableName,String[] columns,String[] values) throws  Exception{
            HTable table = new HTable(configuration,tableName);
            Put put = new Put(String.valueOf(++index).getBytes());// 一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值
            for(int i=0;i<columns.length;i++)
                put.add(columns[i].getBytes(), null, values[i].getBytes());// 本行数据的第一列
            try {
                table.put(put);
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("end insert data ......" +index);
        }

    首先得到要处理的数据库
    然后开始生成PUT
    一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkeyput构造方法中传入的值
    我的rowkey选取的是数字1 –> 数据条数
    然后将一条中的每个属性对应的value设置好就可以开始插入了

    o 结果

    result1.png-18.1kB

    hbase shell 输入 scan 'Adult'结果

    result2.png-19.9kB

    o 查询所有表内数据函数(以iris为例子)

    public static void QueryAll(String tableName) throws Exception{
        HTable table = new HTable(configuration, tableName);
        try {
            ResultScanner rs = table.getScanner(new Scan());
            for (Result r : rs) {
                System.out.println("获得到rowkey:" + new String(r.getRow()));
                for (KeyValue keyValue : r.raw()) {
                    System.out.println("列:" + new String(keyValue.getFamily())
                            + "====值:" + new String(keyValue.getValue()));
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    queryResult.png-34.4kB

    o 删除表函数

    public static void dropTable(String tableName) {
        try {
            HBaseAdmin admin = new HBaseAdmin(configuration);
            admin.disableTable(tableName);
            admin.deleteTable(tableName);
        } catch (MasterNotRunningException e) {
            e.printStackTrace();
        } catch (ZooKeeperConnectionException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    o 按照rowkey删除表中一行函数

    public static void deleteRow(String tablename, String rowkey)  {
        try {
            HTable table = new HTable(configuration, tablename);
            List list = new ArrayList();
            Delete d1 = new Delete(rowkey.getBytes());
            list.add(d1);
            table.delete(list);
            System.out.println("删除行成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    o 按照rowkey搜索

    public static void QueryByRowKey(String tableName,String rowkey) throws Exception{
        HTable table = new HTable(configuration, tableName);
        try {
            Get scan = new Get(rowkey.getBytes());// 根据rowkey查询
            Result r = table.get(scan);
            System.out.println("获得到rowkey:" + new String(r.getRow()));
            for (KeyValue keyValue : r.raw()) {
                System.out.println("列:" + new String(keyValue.getFamily())
                        + "====值:" + new String(keyValue.getValue()));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    o 按照colum的key搜索

    public static void QueryByColumnKey(String tableName,String column,String key) {
        try {
            HTable table = new HTable(configuration, tableName);
            Filter filter = new SingleColumnValueFilter(Bytes
                    .toBytes(column), null, CompareFilter.CompareOp.EQUAL, Bytes
                    .toBytes(key)); // 当列column1的值为aaa时进行查询
            Scan s = new Scan();
            s.setFilter(filter);
            ResultScanner rs = table.getScanner(s);
            for (Result r : rs) {
                System.out.println("获得到rowkey:" + new String(r.getRow()));
                for (KeyValue keyValue : r.raw()) {
                    System.out.println("列:" + new String(keyValue.getFamily())
                            + "====值:" + new String(keyValue.getValue()));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    结果

    searchResult.png-50.6kB

    2. 完全分布式的配置

    要完成完全分布式的前提是拥有多台服务器,当然我们可以在本机上搭建三个centos系统,但是这会对本地的内存和磁盘压力过大,于是我们组三人购买了三个腾讯云上的云服务器(centOs7.3)。
    master:118.25.18.17
    master.png-13.2kB
    node1: 118.25.22.142
    node1.png-11.9kB
    node2: 182.254.140.65
    node2.png-13kB

    理论上只要在三台机子上都搭建好Javahadoophbase的环境,然后由master节点发起start-all.sh(启动hadoop并拉动node一起启动),发去start-hbase.sh(启动hbase并拉动node一起启动),就能实现完全分布式的状态,并使hbase shell之后实现hbase在多台服务器的运行状况。

    然而配完全分布式环境时又遇到了很多问题。

    o 用户组问题

    当所有用户都用root时,会有安全性问题,于是我在三个云服务器上都新建了hadoop这个用户组,创建新的用户使用hadoop主要是考虑到安全因素,一般配置的时候都是在root下配置的,使用的时候创建新用户使用hadoop,当然你可以用root启动和使用hadoop,但是root权限太大,可能因为某个误操作导致灾难性的后果,所以需要创建新的用户。

    o 下载问题

    最简单的下载方法是用yum直接install需要的包,比如yum install java1.8* ,但是yum下载的包路径固定且难找,此处推荐使用ftp从本地上传。

    o 配置文件

    环境变量肯定是重中之重,需要在.bashrc中配好JAVA_HOME,HADOOP_HOME, 并把二者的bin , sbin(如果有)加入到PATH中,方便运行。
    然后还有配每台服务器的名字,以及host文件,根据一开始分配的任务分别把三台服务器设置成master, node1, node2, 设置完之后重启生效
    然后在三台服务器上都要配置好host文件,但是三者的host是不一样的(巨坑),对于本机而言,应该输入内网ip

    比如master

    host.png-8.5kB

    o ssh免密传输

    通过ssh-keygen -t rsa生成密钥并将id_rsa_pub内容写入生成authorized_keys文件,将authorized_keys传输到另两台主机下进行覆盖

    o 快速配置

    hbase和hadoop的配置和上面伪分布式类似,只是需要更多的编辑步骤,在此不提。
    在此处之前master和两个节点除了host和hostname文件以外基本一致,所以我们可以通过镜像文件的方式,现在master端搭好,分享给两个node,此处使用腾讯云的共享云镜像

    jingxiang.png-29.1kB

    o 格式化 HDFS 文件系统

    bin\hdfs namenode -format

    但是此处会有大坑:
    由于配置时有多次的误操作,我格式化了多次文件系统,而此处只格式化master节点的文件系统,对node没有影响,会导致master和node的clusterId不匹配,导致没法拉起子节点,次问题解决方案稍后提。

    o 内存问题

    由于买的时10元1GB的廉价机,在装了hbase和hadoop并运行后,内存吃紧

    neicun.png-15.4kB

    可以发现当运行hbase和hadoop之后,内存利用率飙升至80%以上

    OK配置基本完成之后我们就可以跑啦

    先执行 start-all.sh启动关于hadoopmastermanager以及namenode,同时会拉动子节点的datanode

    50070端口可以查询到相关信息
    hadoop.png-103.3kB

    datanode.png-51.6kB

    欢迎访问 118.25.18.17:50070 查看我们服务器上hadoop运行情况

    然后执行start-hbase.sh启动关于hbase的进程,hbase的运行情况可以在16010端口查看

    hbase.png-104.9kB

    欢迎访问 118.25.18.17:16010 查看我们服务器上hadoop运行情况

    hbase现在只有一个adult表,是我用java远程插入的后文再说

    此时jps之后可以发现 master和node节点如下

    jps.png-4.7kBjps2.png-4.2kB

    ok成功跑起来啦,我们可以用hbase shell拉动shell进程

    写一些简单的sql语句

    hbase0.png-21.6kB

    当然iris数据时提前注入的

    然后就是对远程java代码的修改

    由于是windows端的java控制,首先要改变windows的host文件

    windowshost.png-70.9kB

    成功的结果以在chorm内输入master:16010能弹出网站为成功标志

    然后是要将服务器上的数据库文件导入java代码中

    javaD.png-13.3kB

    我这里配置了四个xml(三个hadoop、一个hbase),然后随便扔了几个数据集,然后在代码中

    javaR.png-33.9kB

    将原来的对伪分布式处理的环境变量注释,并加载所有的xml文件

    通过这样的操作就能远程处理云服务器

    hbase1.png-27.5kB

    然后我尝试将大数据往远程服务器的分布式数据库中插

    hbase2.png-54kB

    发现可能是由于网络原因以及,master和其node不是在一个内网的原因,速度很慢,几乎是在本地运行的100倍,好在还是将3W条17个属性的数据插完了

    在apache hbase的16010端口查看时,可以看到数据库的一小部分

    adult.png-167.8kB

    ok 基本撒花

    clusterID 不一致的解决方法

    mastername/current 下的 VERSION 中的 clusterID 复制到 data/current 下的 VERSION 中,覆盖掉原来的 clusterID 重新启动即可

    没有什么问题是stopstartstopstart几次解决不了的
    如果有 就reboot, 如果还有 就拿镜像重装 image.png-5.3kB

    ——来自重装至少30次系统的人的心声

    四、总结

    我爱hbase

    Hbase是一个分布式的和可扩展的大数据仓库,能够利用HDFS的分布式处理模式,并从Hadoop的MapReduce程序模型中获益。在实验过程中,由于master和两个node不是一个内网的缘故,以及操作的windows服务端的带宽不佳,导致了数据的插入速率比伪分布式更差。但是我们没有

    如果心情好的话,我就 我就 我就继续睡觉image.png-18.9kB
    我再也不写hbase了! 再也不装系统了!
    凌晨四点 离2018还有20个小时啊 晚安image.png-14.5kB

    image.png-6.2kB -> image.png-5.6kB

    跨年回来在补两句,新年快乐,GPA++

    五、参考文献

    1. HBase官方文档中文版
    2. WIN10 hadoop hbase 安装教程
    3. Hadoop官方文档
    4. Hbase集群搭建
    5. Apache HBase 3.0.0-SNAPSHOT API
    展开全文
  • Hbase个人总结

    2018-01-27 18:03:59
    大数据 Hbase的学习个人总结文档,主要讲述了,Hbase的基础知识
  • Hbase学习总结

    2012-04-18 13:38:57
    Hbase学习总结,很不错的资源,对你绝对有帮助
  • HBase学习总结

    2018-07-06 11:08:19
    1、 HBase是什么HBase(Hadoop Database)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统...
  • HBase应用开发实验1 Using HBase for Real-time Access to your BigData Running HBase operations using the Java client API 内容 使用JAVA客户机APIHBASE操作运行 2.1 设置您的ECLIPSE环境 2.2编码HBASE的JAVA类 ...
  • Hbase 安装配置实验

    千次阅读 2016-04-25 13:38:27
    一、实验环境 3台CentOS release 6.4虚拟机,IP地址为 192.168.56.101 master 192.168.56.102 slave1 192.168.56.103 slave2 hadoop 2.7.2 hbase 1.2.1 hbase与hadoop的版本兼容性,参考...
  • Hbase优化总结

    2019-10-21 09:59:12
    hbase优化总结
  • HBase总结

    2019-02-20 12:32:00
    目录 HBase 基础 NoSQL 架构 集群搭建(略) Shell基本操作 常用操作 其他shell命令(略) 基础客户端API Table相关 C...
  • hbase安装总结

    2013-01-25 16:04:38
     E.g: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR      <name>hbase.tmp.dir   D:/hadoop/root/tmp/hbase/tmp  <description>Temporary directory on the local filesystem.   ...
  • HBase安装配置实验报告

    千次阅读 2019-05-26 13:05:34
    HBase安装配置 ①下载压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录) 官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ 选择稳定版hbase-1.4.9-bin.tar.gz,在Windows里面...
  • (HBase是一种数据库:Hadoop数据库,它是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据。在已成功安装并正常启动的前提下,本文介绍HBase的基本操作。) 一、HBase简介 什么是HBase(Hadoop Database)呢?...
  • Hbase !!Hbase各节点的时间应该统一 1.最终一致性 2.避免冗余 3.维护一致性,处理事务 1)一致性 2)可用性 3)分布式处理 跳表+布隆过滤器 四维结构rowkey,column family ,column,ts ====...
  • 一、环境说明  前提条件:hadoop环境已安装好  集群环境:masterhadoop、slave1hadoop、slave2hadoop  对应节点:HMaster、... 下载hbase-1.2.4.tar.gz,然后 解压(三个节点都需要) 三、修改配置
  • Hive操作HBase总结

    千次阅读 2018-05-17 10:42:49
    首先在Hive中创建Hbase里标。键入&gt;hive进入hive命令行,执行hive建表语句如下CREATE TABLE lwb_test1(key string,xm string,nl int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH ...
  • HBase超级详细总结

    2018-03-18 19:46:18
    1-HBase的安装HBase是什么?HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架...
  • 实验报告四 Hbase安装配置 一、下载 1、下载hbase压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录) 官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ 选择稳定版hbase-1.4.9-...
  • Hbase集群搭建总结

    2020-06-03 08:31:05
    注意:HBase集群建立在hadoop集群基础之上,所以在搭建HBase集群之前需要把Hadoop集群搭建起来, 搭建步骤 一.搭建Hadoop集群 参考:hadoop 分布式集群搭建 二.安装zookeeper 参考:zookeeper集群安装 三.部署...
  • 一、实验目的 安装Hbase并完成配置 二、实验原理 在Eclipse新建完成对Hbase的执行 三 、实验步骤 HBase安装配置 解压及安装 将压缩包从Windows传输到Linux当前目录下: 解压安装到指定目录下/opt/module 配置环境变量...
  • Hbase shell操作总结

    2016-12-13 15:29:34
    进入hbase命令行 ./hbase shell显示hbase中的表 list创建user表,包含info、data两个列族 create ‘users’, ‘info’, ‘data’ //you can also use this command: // create ‘users’, {NAME => ‘info’, ...
  • HBase安装配置 ①下载压缩包(选择与自己安装的Hadoop版本的兼容版本,见后面附录) 官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ 选择稳定版hbase-1.4.9-bin.tar.gz,在Windows里面...
  • Hbase表设计总结

    2016-11-24 14:57:27
    1. Row Key是HBase表结构设计中很重要的一环,它设计的好坏直接影响程序和HBase交互的效率和数据存储的性能。  2. Base的表结构比传统关系型数据库更灵活,你能存储任何二进制数据在表中,而且无关数据类型。  3. ...
  • HBase使用经验总结

    千次阅读 2017-03-19 21:37:22
    1.hbase表中的属性分别都是什么含义? 2.hbase中如何实现预分区? 3.hbase中本文采用了哪些优化方法? 一、hbase中的常见属性  VERSIONS:指版本数  MIN_VERSIONS=> '0':最小版本数  TTL=> '...
  • Hbase学习与总结

    千次阅读 2013-11-27 15:16:35
    一.Hbase简介:  Hbase是bigtable的开源山寨版本。它利用HadoopHDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。提供高可靠性、高性能、列存储、可伸缩、实时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,879
精华内容 1,551
关键字:

hbase实验总结