热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《MapReduce2.0源码分析与编程实战》一2.1从头开始

本节书摘来异步社区《MapReduce2.0源码分析与编程实战》一书中的第2章,第2.1节,作者:王晓华责编:陈冀康

本节书摘来异步社区《MapReduce 2.0源码分析与编程实战》一书中的第2章,第2.1节,作者: 王晓华 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.1 从头开始

HBase实战
TwitBase存储3种简单的核心数据元素,即用户(user)、推帖(twit)和关系(relationship)。用户是TwitBase的中心。用户登录进入应用系统,维护用户信息,通过发帖与其他用户互动。推帖是TwitBase中用户公开发表的短文。推帖是用户间互动的主要模式。用户通过互相转发产生对话。所有互动的“粘合剂”就是关系。关系连接用户,使用户很容易读到其他用户的推帖。本章关注点是用户和推帖,下一章将讨论关系。

关于Java

本书绝大部分代码都是用Java编写的。有时我们使用伪代码来帮助理解概念,但是工作代码是Java。使用HBase,Java是现实的选择。整个Hadoop系列,包括HBase,都使用Java。HBase客户端函数库是Java,MapReduce函数库也是Java。HBase的部署需要优化JVM性能。但是可以使用非Java和非JVM的语言来访问HBase,第6章会讨论这些内容。

2.1.1 创建表

现在开始搭建TwitBase,为存储用户奠定一个基础。HBase是一个在表里存储数据的数据库,所以我们从创建users表开始。首先进入HBase Shell:


q8

Shell打开一个到HBase的连接,给出提示符。在Shell提示符上,创建你的第一张表:


q7


可以想到'users'是表的名字,但是'info'是什么呢?像关系型数据库里的表一样,HBase的表也是按照行(row)和列(column)来组织的。HBase中的列和关系型数据库中的有些不同。HBase中的列组成列族(column family)。info就是users表的一个列族。HBase中的表必须至少有一个列族。它们之中,列族直接影响HBase数据存储的物理特性。因此,创建表时必须至少指定一个列族。表创建后列族还可以更改,但是这么做很麻烦。后面我们会详细讨论列族,现在只需要知道users表足够简单,只有一个列族,就可以了。

2.1.2 检查表模式

如果你熟悉关系型数据库,会马上注意到,HBase创建表时没提到任何列或者数据类型。除了列族名字,HBase什么也不需要。这就是HBase经常被称作无模式数据库的原因。

你可以要求HBase列出所有已创建的表来验证users表已经创建成功:


q6


list命令可以显示存在的表,HBase也可以提供表的更多细节。使用describe命令可以看到这个表的所有的默认参数:


q5


Shell显示表有两类属性信息:表的名字和列族的列表。每个列族有许多相应的配置信息细节,这些就是我们前面提到的物理特性。现在先不管这些细节,我们随后研究它们。

HBase Shell

虽然HBase Shell主要用于管理任务,但它拥有丰富的特性。它用JRuby实现,可以使用整个Java客户端API。你可以使用help命令进一步发掘Shell的功能。

2.1.3 建立连接

尽管Shell很好用,但是谁会愿意用Shell命令实现TwitBase呢?聪明的HBase开发人员知道这一点,他们为HBase提供了一个全面的Java客户端库。也有面向其他语言的类似的API,第6章会讨论。现在我们使用Java。打开users表连接的Java代码如下所示:


q4

类似于Shell的做法,构造函数HTable读取默认配置信息来定位HBase。然后定位之前你创建的users表,返回一个句柄。

你也可以传递一个定制的配置对象给HTable对象:


q3

这等同于让HTable对象自己创建配置信息对象。你可以像下面这样设定参数来定制配置信息:


q2


HBase客户端配置信息

HBase客户端应用需要有一份HBase配置信息来访问HBase——ZooKeeper quorum地址。你可以手工设定这个配置如下:

` ``MyConf.set("hbase.zookeeper.quorum","serverip");`

ZooKeeper以及客户端与HBase集群之间的交互会在下一章深入研究分布式HBase存储时讨论到。现在你只需要知道HBase配置信息可以通过两种方式获取,一种是Java客户端从类路径里的hbase-site.xml文件里获取配置信息,另一种是通过在连接中显式设定配置信息来获取。如果你没有指定配置信息,就像示例代码里那样,客户端就会使用默认配置信息,把localhost作为ZooKeeper quorum 地址。单机模式中,指的就是你用来验证本书内容的机器,这正是你需要的配置信息。

2.1.4 连接管理

创建一张表实例是个开销很大的操作,需要占用一些网络资源。与直接创建表句柄相比,使用连接池更好一些。连接从连接池里分配,然后再返回到连接池。实践中,使用HTablePool比直接使用HTable更为常见:


q1

当你完成工作关闭表时,连接资源会返回到连接池里。

没有数据的表是没有用的,现在我们存储一些数据。



推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 与.Net大师Jeffrey Richter面对面交流——TUP对话大师系列活动回顾(多图配详细文字)...
    与.Net大师JeffreyRichter面对面交流——TUP对话大师系列活动回顾(多图配文字)上周末很有幸参加了CSDN举行的TUP活动, ... [详细]
author-avatar
安安ahui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有