当前位置: 首页 > 编程日记 > 正文

Hadoop集群的基本操作(二:HBase的基本操作)

实验

目的

要求

目的:

1、HBase的基本应用

要求:

  1. 完成HBase的高可用完全分布模式的安装;
  2. HBase的相关服务进程能够正常的启动;
  3. HBase控制台能够正常使用;
  4. 表创建、数据查询等数据库操作能够正常进行;

  1. 五台独立PC式虚拟机;
  2. 主机之间有有效的网络连接;
  3. 每台主机内存2G以上,磁盘50G。;
  4. 所有主机上安装CentOS7-64位操作系统。;
  5. 所有主机已完成网络属性配置;
  6. 所有主机已安装JDK;
  7. 已完成Zookeeper集群的安装和部署;
  8. 已完成Hadoop集群的安装配置;
  9. 已完成HBase数据库的安装;

软件版本:

选用HBase的1.2.3版本,软件包名hbase-1.2.3-bin.tar.gz

集群规划:

* HBase有主节点和Region节点2类服务节点,高可用完全分布模式中需要满足主节点有备用的基本要求,所以需要两台或以上的主机作为主节点,而完全分布模式中需要满足Region有备份和数据处理能够分布并行的基本要求,所以要求两台或以上的主机作为Region节点,具体规划如下:

主机名

IP地址

服务描述

Cluster-01

192.168.10.111

HBase主控节点

Cluster-02

192.168.10.112

HBase备用主控节点

Cluster-03

192.168.10.113

HBase Region服务

Cluster-04

192.168.10.114

HBase Region服务

Cluster-05

192.168.10.115

HBase Region服务

练习内容

步骤一:HBase集群的启动

注:1、该项的所有操作步骤使用专门用于集群的用户admin进行;

       2、启动HBase集群之前首先确保Zookeeper集群已被开启状态(五台虚拟主机)。Zookeeper的启动需要分别在每个计算  机的节点上手动启动。如果家目录下执行启动报错,则需要进入Zookeeper/bin目录执行启动命令;

        3、启动HBase集群之前首先确保Hadoop集群已被开启状态(五台虚拟主机)Hadoop和HBase只需要在主节点执行启动命令;

1、启动Zookeeper集群:

命令:

$zkServer.sh status      //查看Zookeeper状态

$zkServer.sh start       //启动Zookeeper

2、在主节点使用此命令,查看java进程信息,若有名为“NameNode”、“ResourceManager”、“DataNode”和“NodeManager”这几个进程,则表示Hadoop集群的主节点及数据节点启动成功。

命令:

$jps                      //查看进程状态

$start-all.sh             //启动Hadoop

$yarn-daemon.sh start resourcemanager //备用主节点执行

主节点及备用主节点:

通信节点:

3、确定Hadoop集群已启动状态,然后再主节点使用此命令,启动HBase集群;

命令:

$start-hbase.sh

4、如果每项启动出错,那么一次检查相应的配置文件和环境变量。

$source ~/.bash_profile

$echo $ZOOKEEPER_HOME

$echo $PATH

$echo $HADOOP_HOME

$echo $PATH

$echo $HBASE_HOME

$echo $PATH

5、使用命令“ssh 目标主机名或IP地址”远程登录到集群中所有Region节点主机,在Region节点使用命令“jps”查看java进程信息,若有名为“HRegionServer”的进程,则表示HBase集群的Region节点启动成功。

步骤二:HBase基本命令练习(DDL/DML)

示例:某位学生成绩表scores

name

grad

course

math

art

Tom

5

97

87

Jim

4

89

80

1、在Cluster-01主机上使用admin用户进入HBase命令界面;

命令:

#su -admin

$hbase shell

2、新建表空间

命令:

> create_namespace ‘testDB’

>list_namespace

>drop_namespace ‘testDB’      //表空间为空才能删除

备注:于建表,和RDBMS类似,HBase也有namespace的概念,可以指定表空间创建表,也可以直接创建表,进入default表空间。HBase系统默认定义了两个缺省的namespace:hbase:系统内建表,包括namespaceImeta表default:用户建表时未指定namespace的表都创建在此

3、建立一个表和列族(默认表空间)

命令:

>create ‘scores’,‘grade’, ‘course’

>list

>describe ‘scores’

练习:

>create ‘testDB:scores’,‘grade’,‘course’

4、按设计的表结构插入值

命令:

     >put ‘scores’,’Tom’,’grade:’,’5’>put ‘scores’,’Tom’,’course:math’,’97’>put ‘scores’,’Tom’,’course:art’,’87’>put ‘scores’,’Jim’,’grade:’,’4’>put ‘scores’,’Jim’,’course:math’,’89’>put ‘scores’,’Jim’,’course:art’,’80’>put ‘scores’,’Jim’,’course:’,’90’>put ‘scores’,’Jim’,’course:’,’91’

代码解析:

Hbase>put ‘t1’,’r1’,’c1’,’value’,’ts1’

t1指表名,r1指行键名,c1指列名,value指单元格值,ts1指时间戳,一般都省略掉了。

5、根据键值查询数据

命令:

>get ’scores’,’Jim’

>get ‘scores’,’Jim’,’grade’

HBase的shell操作,一个大概顺序就是操作关键词后跟表明,行名,列名这样的一个顺序,如果有其他条件在用花括号加上。

练习:

>get ’scores’,’Tom’

6、扫描所有数据

命令:

>scan ‘scores’

扫描指定列:

>scan ‘scores’,{COLUMNS => [‘grade’]}

练习:

>scan ‘scores’,[‘grade’]

7、统计行数

命令:

>count ‘scores’

8、删除指定数据

命令:

>get ‘scores’,’Jim’

>delete ‘scores’,’Jim’,’course:art’

>get ‘scores’.’Jim’

如果需要进行全表删除操作,就是用truncate命令,其实没有直接的全表删除命令,这命令也是disable,drop,create三个命令组合出来的。

9、删除整行

命令:

>get ‘scores’,’Jim’

>deleteall ‘scores’,’Jim’

>get ‘scores’,’Jim’

练习:

>get ‘scores’,’Tom’

>deleteall ‘scores’,’ Tom’

>get ‘scores’,’ Tom’

10、将整张表清空

命令:

>truncate ‘scores’

11、表的删除操作

a)先进行disable和enable

命令:

>disable ‘scores’

>enable ‘scores;

很多操作需要先暂停表的可用性,比如删除表操作,disable_all和enable_all能够操作更多的表

b)表的删除

命令:

>disable ‘scores’

>drop ‘scores’

>scan ‘scores’

步骤三:HBase练习作业(DDL/DML)

name

grad

Course

yingyu

shuxun

daolun

Yewei

1

99

92

98

Maxiao

1

94

97

99

Zhaoying

1

95

96

89

yuanyang

1

93

95

97

命令:

>create 'scores','grade','course'
>list
>put 'scores','yewei','grade:','1'
>put 'scores','yewei','course:yingyu','99'
>put 'scores','yewei','course:shuxue','92'
>put 'scores','yewei','course:dailong','98'
>put 'scores','maxiao','grade:','1'
>put 'scores','maxiao','course:yingyu','94'
vput 'scores','maxiao','course:shuxue','97'
>put 'scores','maxiao','course:dailong','99'
>put 'scores','zhaoying','grade:','1'
>put 'scores','zhaoying','course:yingyu','95'
>put 'scores','zhaoying','course:shuxue','96'
>put 'scores','zhaoying','course:dailong','89'
>put 'scores','yuanyang','grade:','1'
>put 'scores','yuanyang','course:yingyu','93'
>put 'scores','yuanyang','course:shuxue','95'
>put 'scores','yuanyang','course:dailong','97'

查看插入的信息:

命令:

>scan ‘scores’

出现的问题与解决方案

排错一:

出现问题:Zookeeper启动不正常;

原    因:查看Zookeeper日志,发现错误信息:

ClientCnxn$SendThread@966] - Opening socket connection to server slave1. Will not attempt to authenticate using SASL

通过百度搜索发现集群环境中环境变量为启动。

解决方案:启动每台主机的环境变量,在admin用户下使用命令

“source ~/.bash_profile”然后再查看环境变量。

$echo $ZOOKEEPER_HOME

$echo $PATH

$echo $HADOOP_HOME

$echo $PATH

$echo $HBASE_HOME

$echo $PATH

知识拓展

1、HBase是什么?

Apache HBase是运行在Hadoop集群上的数据库。为了实现更好的可扩展性(scalability),HBase放松了对ACID(数据库的原子性,一致性,隔离性和持久性)的要求。因此HBase并不是一个传统的关系型数据库。另外,与关系型数据库不同的是,存储在HBase中的数据也不需要遵守某种严格的集合格式,这使得HBase是用来存储结构不严格的数据的理想工具。

HBase在大数据应用的架构中应用非常广泛。但是基于其与关系型数据库迥异的设计模式,实现这些应用也与基于关系型数据库来实现非常不同。下文将会对比HBase和关系型数据库,并浅析HBase的特性。

2、关系型数据库与HBase的对比。

2.1、先了解一下关系型数据库的优势和缺点。

  • 关系型数据库提供了标准的数据持久性模型
  • SQL语言是事实上的数据操作标准语言
  • 关系型数据库内置了并发数据操作的管理机制
  • 关系型数据库提供全面的数据操作工具

2.2、HBase的高效,分布式,可扩展性。

由于HBase在设计上不支持关系和Join这样的概念,需要一起查询的数据就被存在一起。因此也就避免了关系型数据库的一些局限性。下图表现了HBase和关系型数据库在数据存储模型上的不同。

由于HBase将所有需要一起查询到数据存储在一起这一特性,HBase集群就自然能够根据key来组织数据。在水平分割的时候,key值的范围就可以被用来分割数据。每一个服务器存储全部数据的一个子集。同时分布式的数据还可以被同时访问。这大大增强了HBase的可扩展性。HBase实际上是Google Big Table的一个实现。Big Table是Google提出的一个用来存储大规模数据的一个分布式系统。

HBase是基于Column family data store的理念设计的:每一行根据一个row key索引。也就是我们用来查询的主键。同时每一行中有若干column family。每一个column family中有若干相关的column。如下图所示。

HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。

3、HBase的基本操作。

a)Java友好提供了全面的java客户端库;

b)HBase中所有数据都是作为原始数据,使用数组的形式存储;

c)行健是唯一标识符,类似数据库的主键;

d)表中确定一个单元的坐标是[rowkey,cloumn fanmily,column qualifier];

e)5个基本命令来访问HBase;Get(读)、Put(写)、Delete(删除)、Scan(扫描)、Increment(递增);

f)HFile是存储文件,对应列族,一个列族可以有多少HFile文件,但是一个HFile不能存多个列族的数据;

g)写的操作会写入预写式日志(WAL)和称为MemStore的内存写入缓冲区,当两者都确认写入后才认为写的动作成功完成;

h)不建议禁用WAL,禁用后RegionServer故障时会导致数据丢失;

4、使用浏览器访问https://192.168.100.111:16010查看主节点HBase

相关文章:

Abaqus用户子程序umat的学习

Abaqus用户子程序umat的学习 说明:在文件中,!后面的内容为注释内容。本文为学习心得,很多注释是自己摸索得到。如有不正确的地方,敬请指正。 ! —————————————————————————— ! 1、为何需要…

PHP:isset()-检测变量是否被设置

isset()-检测变量是否被设置 bool isset(mixed $var [, mixed $...]),检查变量是否被设置,并且不是NULL。var,要检测的变量,...其他变量,允许有多个变量。 返回值:如果var存在并且不是NULL,则返回TRUE&…

Android通过ShareSDK实现新浪微博分享

ShareSDK社会化分享的官方说明:是中国最大的APP内分享服务提供商,ShareSDK社会化分享,全面支持微信,微博,QQ空间,来往,易信,Facebook等国内外40个平台。 ShareSDK官方网站&#xff…

Hadoop集群的基本操作(三:HBase的基本操作)

实验 目的 要求 目的: MySQL数据库的基本命令;MySQL数据库中使用SQL语句;MySQL数据库中数据库,表,数据的操作;要求: 完成MySQL的集群版的安装;MySQL集群的相关服务进程能够正常启…

iOS通过Plist保存离线调试日志

最近需要测试APP在iPhone没连接USB情况下定位时间间隔的情况,固把nslog的日志信息保存成本地Plist文件,以便测试结束后查阅运行时的日志。 一、新建一个保存日志的方法,参数为每次定位成功的时间(作为key)&#xff0c…

关于变量名前面加m的问题

为什么很多人写代码会在变量名前面加一个小写的m? 上大学那会儿就对这个问题感到很好奇。于是网上到处搜,有人说是member的意思。于是后来一直就这么认为。 最近在读Android源码,发现很多系统变量命名时都加了m,而有的变量又没有加…

谷歌推出情境感知API

在 Google I/O 2016 大会上,我们宣布推出新的 Google Awareness API,让您的应用可以利用快照和围栏智能应对用户情境,并且仅需占用极少量的系统资源。 所有开发者均可以通过 Google Play 服务获取 Google Awareness API。 利用 7 种不同类型的…

Hadoop集群的基本操作(四:Hive的基本操作)

实验 目的 要求 目的: (1)掌握数据仓库工具Hive的使用; 要求: 掌握数据仓库Hive的使用;能够正常操作数据库、表、数据; 实 验 环 境 五台独立PC式虚…

【转】通过Hibernate将数据 存入oracle数据库例子

一、 Hibernate介绍 Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案。ORM方案的思想是将对象模型表示的对象映射到关系型数据库中,或者反之。Hibernate目前是ORM思想在Java中最成功、最强大的实现。…

自动布局按钮排列平均分布

需要实现如下图所示的主页面布局,需要两排按钮,每一排都自动平均分布,Android的话直接用LinearLayout水平布局,并设置layout_weight即可,对于iOS,网上有使用代码实现,感觉略麻烦,我直…

maven3 手动安装本地jar到仓库

安装命令: mvn install:install-file -Dfile{Path/to/your/ojdbc.jar} -DgroupIdcom.oracle -DartifactIdojdbc6 -Dversion11.2.0 -Dpackagingjar我自己安装oracle14.jar 时命令如下:mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc14 …

Hadoop集群的基本操作(五:Sqoop的基本操作)

实验 目的 要求 目的: 掌握ETL工具Sqoop的使用;掌握MySQL和HDFS之间的数据转换;要求: 掌握ETL工具Sqoop的使用;能够正常操作数据库、表、数据; 实 验 环 境 五台…

NEWS - InstallShield 2013 SP1发布

2013的这个国庆假期期间,InstallShield厂商Flexerasoftware(中文名:福莱睿)发布了最新版本InstallShield 2013的SP1,由于这个升级包带来一些新的技术支持和变化,所以特地给大家介绍一下: 1. 支持…

iOS 高德导航按返回后报错 解决

最近项目要添加导航功能,用了高德导航SDK,很郁闷每次从地图界面返回前一页面都报错,弄了很久,最终从高德开发者论坛找到一解决方法,可以试一下。 在导航的ViewController的viewWillDisappear中调用如下方法&#xff0…

Oracle的基本操作(一:子查询与常用函数)

1、描述TO_CHAR和TO_DATE函数的用法。 TO_CHAR(d|n[,fmt]):把日期和数字转换为指定格式(fmt)的字符串; TO_DATE(x[,fmt]):把一个字符串一fmt格式转换为一个日期类型; 举例:select to_char(sysdate,yyyy-mm-dd) "char", to_date(…

易买网的一些增删改查

正如题目所说的一样,今天就来说说易买网中的一些增删改查,主要的功能有注册、用户管理以及商品分类等&#xff01; 1.注册 1.1 注册涉及到了一个ajax远端技术,主要是用来控制注册用户在数据库中是否存在&#xff1a; <script>$(function(){//焦点移出表单时$("#user…

iOS后台持续定位并定时上传

最近做一个考勤APP&#xff0c;功能很简单&#xff0c;就是一直在后台运行&#xff0c;每隔固定时间向服务器上传一次位置信息。持续运行24小时测试&#xff0c;功能实现。 1.ViewController.h文件&#xff1a; #import <CoreLocation/CoreLocation.h>并实现CLLocationMa…

jQuery UI vs Kendo UI jQuery Mobile vs Kendo UI Mobile

jQuery UI vs Kendo UI http://jqueryuivskendoui.com/#introduction jQuery Mobile vs Kendo UI Mobile http://jqueryuivskendoui.com/#mobile-introduction Kendo UI教程 http://www.cnblogs.com/pangblog/archive/2013/09/10/3313135.html转载于:https://www.cnblogs.com/j…

Oracle的基本操作(二:存储过程)

1、编写一个存储过程&#xff0c;根据输入的工作类型&#xff0c;输入该工作的平均工资。 -- Created on 2018/9/30 by YANXUKUNcreate or replace procedure avgsal(v_job in scott.emp.job%type)isavgsal2 number;beginselect avg(sal) into avgsal2 from scott.emp where j…

web11 Struts处理表单数据

电影网站&#xff1a;www.aikan66.com 项目网站&#xff1a;www.aikan66.com 游戏网站&#xff1a;www.aikan66.com 图片网站&#xff1a;www.aikan66.com 书籍网站&#xff1a;www.aikan66.com 学习网站&#xff1a;www.aikan66.com Java网站&#xff1a;www.aikan66.co…

瀑布流开源这两天

想必第一眼看到 Masonery 效果的人们会和当初的我有同样的感觉&#xff0c;惊艳&#xff01;尤其是在你双击浏览器标题栏的空白处之后&#xff0c;所有的区块都在默默寻找自己的位置&#xff0c;无论大小&#xff0c;就像上海虹桥火车站涌入地铁的人群。和技术实现无关&#xf…

iOS网络请求总结

*说明&#xff1a;文章中HTTP为宏定义的http地址&#xff0c;事例通过app_login.action的接口&#xff0c;通过传递policyNum、plateNum、phoneNum三个参数进行登录操作 一、方法1&#xff1a; Foundation框架 NSURLConnection &#xff08;1&#xff09;同步请求&#xff1a;同…

MongoDB数据库(一:基本操作)

1、创建名称为自己姓名拼音缩写的数据库&#xff1b; 2、创建名为姓名拼音缩写col的集合&#xff0c;如dugncol&#xff1b; 3、删除2中的集合&#xff0c;重新创建格式如dugncolnew的集合&#xff1b; 4、在3创建的集合中&#xff0c;插入10条文档数据&#xff0c;要求分别插入…

NYOJ--811--变态最大值

/*Name: NYOJ--811--变态最大值Author: shen_渊 Date: 17/04/17 15:49Description: 看到博客上这道题浏览量最高&#xff0c;原来的代码就看不下去了 o(╯□╰)o */#include<cstring> #include<iostream> #include<algorithm> using namespace std; struct…

扩展的八皇后问题

百度百科&#xff1a;八皇后问题是一个古老而著名的问题&#xff0c;是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出&#xff1a;在8X8格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同…

C++ 常用函数方法

/* * 拆分字符串 * 参数&#xff1a; * strData 字符串 * split 分隔符 * 返回&#xff1a; * 返回动态数组std::vector<std::string> ,记得要delete 内存 */ std::vector<std::string>* GetStringArray(char* strData,char* split)…

MongoDB数据库(二:高级操作)

练习一、完成使用Java代码连接MOngoDB&#xff0c;创建集合&#xff0c;获取集合&#xff0c;插入文档&#xff0c;检 索所有文档&#xff0c;更新文档&#xff0c;删除第一个文档。 a&#xff09;连接MOngoDB b)创建集合 c)获取集合 d)插入文档 e)检索所有文档 f)更新文档 g)…

将XML转为HTML

文章参考&#xff1a;http://dreamweaver.abang.com/od/html/a/xml2html3.htm http://www.w3school.com.cn/xml/xml_xsl.asp ParseXML2HTML.xsl&#xff1a;代码如下 1 <?xml version"1.0" encoding"utf-8"?> 2 <xsl:styleshee…

Linux运维相关目录

Linux——相关运维配置文档目录 tcp 三次握手yum 配置你对linux了解多少&#xff0c;Linux 系统结构详解&#xff01;Linux LAMP环境搭建Centos6.7安装Apache2.4Mysql5.6Apache2.4Linux搭建DNS服务器Nginx概念及基础安装--详细讲解深入NginxNginx的继续深入&#xff08;日志轮询…

iOS8底部弹出日期选择或自定义选择器的方法

本文需要实现的日期选择器和自定义选择器效果如下&#xff1a; 在iOS8之前&#xff0c;可以通过UIActionSheet来实现&#xff0c;在iOS8之后&#xff0c;可以通过UIAlertController实现&#xff0c;UIAlertController的官方解释如下&#xff1a; A UIAlertController object d…