HBase 官方文档中文翻译.docx

上传人:b****4 文档编号:12187959 上传时间:2023-04-17 格式:DOCX 页数:90 大小:78.68KB
下载 相关 举报
HBase 官方文档中文翻译.docx_第1页
第1页 / 共90页
HBase 官方文档中文翻译.docx_第2页
第2页 / 共90页
HBase 官方文档中文翻译.docx_第3页
第3页 / 共90页
HBase 官方文档中文翻译.docx_第4页
第4页 / 共90页
HBase 官方文档中文翻译.docx_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

HBase 官方文档中文翻译.docx

《HBase 官方文档中文翻译.docx》由会员分享,可在线阅读,更多相关《HBase 官方文档中文翻译.docx(90页珍藏版)》请在冰豆网上搜索。

HBase 官方文档中文翻译.docx

HBase官方文档中文翻译

HBase 官方文档

Copyright©2010ApacheSoftwareFoundation, 盛大游戏-数据仓库团队-颜开(译)

RevisionHistory

Revision0.90.4

配置,数据模型使用入门

Abstract

这是 ApacheHBase的官方文档,Hbase是一个分布式,版本化(versioned),构建在 ApacheHadoop和 ApacheZooKeeper上的列数据库.

我(译者)熟悉Hbase的源代码,从事Hbase的开发运维工作,如果有什么地方不清楚,欢迎一起讨论。

邮箱yankaycom@

TableofContents

1.入门

1.1.介绍

1.2.快速开始

1.2.1.下载解压最新版本

1.2.2.启动HBase

1.2.3.Shell练习

1.2.4.停止HBase

1.2.5.下一步该做什么

1.3.慢速开始(相对快速开始)

1.3.1.需要的软件

1.3.2.HBase运行模式:

单机和分布式

1.3.3.配置例子

2.升级

2.1.从HBase0.20.xor0.89.x升级到HBase0.90.x

3.配置

3.1. hbase-site.xml 和 hbase-default.xml

3.1.1.HBase默认配置

3.2. hbase-env.sh

3.3. log4j.properties

3.4.重要的配置

3.5.必须的配置

3.6.推荐的配置

3.6.1. zookeeper.session.timeout

3.6.2. hbase.regionserver.handler.count

3.6.3.大内存机器的配置

3.6.4.LZO压缩

3.6.5.更大的Regions

3.6.6.管理Splitting

3.7.连接Hbase集群的客户端配置和依赖

3.7.1.Java客户端配置

4.TheHBaseShell

4.1.使用脚本

4.2.Shell技巧

4.2.1. irbrc

4.2.2.LOG时间转换

4.2.3.Debug

5.构建HBase

5.1.将一个HBaserelease加入到Apache'sMavenRepository

6.Developers

6.1.IDEs

6.1.1.Eclipse

6.2.单元测试

6.2.1.Mocito

7.HBase和MapReduce

7.1.默认HBaseMapReduce分割器(Splitter)

7.2.HBaseInputMapReduce例子

7.3.在一个MapReduceJob中访问其他的HBaseTables

7.4.预测执行

8.HBase的Schema设计

8.1.Schema创建

8.2.columnfamilies的数量

8.3.单调递增RowKeys/时序数据(log)

8.4.尽量最小化row和column的大小

8.5.版本的时间

9.Metrics

9.1.Metric安装

9.2.RegionServerMetrics

9.2.1. hbase.regionserver.blockCacheCount

9.2.2. hbase.regionserver.blockCacheFree

9.2.3. hbase.regionserver.blockCacheHitRatio

9.2.4. hbase.regionserver.blockCacheSize

9.2.5. pactionQueueSize

9.2.6. hbase.regionserver.fsReadLatency_avg_time

9.2.7. hbase.regionserver.fsReadLatency_num_ops

9.2.8. hbase.regionserver.fsSyncLatency_avg_time

9.2.9. hbase.regionserver.fsSyncLatency_num_ops

9.2.10. hbase.regionserver.fsWriteLatency_avg_time

9.2.11. hbase.regionserver.fsWriteLatency_num_ops

9.2.12. hbase.regionserver.memstoreSizeMB

9.2.13. hbase.regionserver.regions

9.2.14. hbase.regionserver.requests

9.2.15. hbase.regionserver.storeFileIndexSizeMB

9.2.16. hbase.regionserver.stores

9.2.17. hbase.regionserver.storeFiles

10.跨集群复制

11.数据模型

11.1.概念视图

11.2.物理视图

11.3.表

11.4.行

11.5.ColumnFamily

11.6.Cells

11.7.版本

11.7.1.Hbase的操作(包含版本操作)

11.7.2.现有的限制

12.架构

12.1.客户端

12.1.1.连接

12.1.2.写缓冲和批量操作

12.1.3.Filters

12.2.Daemons

12.2.1.Master

12.2.2.RegionServer

12.3.Regions

12.3.1.Region大小

12.3.2.RegionSplits

12.3.3.Region负载均衡

12.3.4.Store

12.4.WriteAheadLog(WAL)

12.4.1.目的

12.4.2.WALFlushing

12.4.3.WALSplitting

13.性能调优

13.1.Java

13.1.1.垃圾收集和HBase

13.2.配置

13.2.1.Regions的数目

13.2.2.管理压缩

13.2.3.压缩

13.2.4. hbase.regionserver.handler.count

13.2.5. hfile.block.cache.size

13.2.6. hbase.regionserver.global.memstore.upperLimit

13.2.7. hbase.regionserver.global.memstore.lowerLimit

13.2.8. hbase.hstore.blockingStoreFiles

13.2.9. hbase.hregion.memstore.block.multiplier

13.3.ColumnFamilies的数目

13.4.数据聚集

13.5.批量Loading

13.5.1.Table创建:

预创建Regions

13.6.HBase客户端

13.6.1.AutoFlush

13.6.2.ScanCaching

13.6.3.Scan属性选择

13.6.4.关闭ResultScanners

13.6.5.块缓存

13.6.6.RowKeys的负载优化

14.BloomFilters

14.1.配置

14.1.1. HColumnDescriptor 配置

14.1.2. io.hfile.bloom.enabled 全局关闭开关

14.1.3. io.hfile.bloom.error.rate

14.1.4. io.hfile.bloom.max.fold

14.2.BloomStoreFilefootprint

14.2.1. StoreFile中的BloomFilter, FileInfo数据结构

14.2.2.在 StoreFile 元数据中的BloomFilterentries

15.Hbase的故障排除和Debug

15.1.一般准则

15.2.Logs

15.2.1.Log位置

15.3.工具

15.3.1.search-

15.3.2.tail

15.3.3.top

15.3.4.jps

15.3.5.jstack

15.3.6.OpenTSDB

15.3.7.clusterssh+top

15.4.客户端

15.4.1.ScannerTimeoutException

15.5.RegionServer

15.5.1.启动错误

15.5.2.运行时错误

15.5.3.终止错误

15.6.Master

15.6.1.启动错误

15.6.2.终止错误

A.工具

A.1.HBase hbck

A.2.HFile工具

A.3.WALTools

A.3.1. HLog 工具

A.4.压缩工具

A.5.Node下线

A.5.1.依次重启

B.HBase中的压缩

B.1.测试压缩工具

B.2. hbase.regionserver.codecs

B.3.LZO

B.4.GZIP

C.FAQ

D.YCSB:

雅虎云服务测试和Hbase

Index

ListofTables

11.1. 表 webtable

11.2. ColumnFamily anchor

11.3. ColumnFamily contents

这本书是 HBase 的官方指南。

版本为 0.90.4.可以在Hbase官网上找到它。

也可以在 javadoc, JIRA 和 wiki 找到更多的资料。

此书正在编辑中。

可以向HBase官方提供补丁JIRA.

这个版本系译者水平限制,没有理解清楚或不需要翻译的地方保留英文原文。

最前面的话

若这是你第一次踏入分布式计算的精彩世界,你会感到这是一个有趣的年代。

分布式计算是很难的,做一个分布式系统需要很多软硬件和网络的技能。

你的集群可以会因为各式各样的错误发生故障。

比如Hbase本身的Bug,错误的配置(包括操作系统),硬件的故障(网卡和磁盘甚至内存)如果你一直在写单机程序的话,你需要重新开始学习。

这里就是一个好的起点:

 分布式计算的谬论.

Chapter 1. 入门

TableofContents

1.1.介绍

1.2.快速开始

1.2.1.下载解压最新版本

1.2.2.启动HBase

1.2.3.Shell练习

1.2.4.停止HBase

1.2.5.下一步该做什么

1.3.慢速开始(相对快速开始)

1.3.1.需要的软件

1.3.2.HBase运行模式:

单机和分布式

1.3.3.配置例子

1.1. 介绍

Section 1.2,“快速开始”会介绍如何运行一个单机版的Hbase.他运行在本地磁盘上。

 Section 1.3,“慢速开始(相对快速开始)” 会介绍如何运行一个分布式的Hbase。

他运行在HDFS上

1.2. 快速开始

本指南介绍了在单机安装Hbase的方法。

会引导你通过shell创建一个表,插入一行,然后删除它,最后停止Hbase。

只要10分钟就可以完成以下的操作。

1.2.1. 下载解压最新版本

选择一个 Apache下载镜像,下载 HBaseReleases.点击 stable目录,然后下载后缀为 .tar.gz 的文件;例如 hbase-0.90.4.tar.gz.

解压缩,然后进入到那个要解压的目录.

$tarxfzhbase-0.90.4.tar.gz$cdhbase-0.90.4

现在你已经可以启动Hbase了。

但是你可能需要先编辑 conf/hbase-site.xml 去配置hbase.rootdir,来选择Hbase将数据写到哪个目录.

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>hbase.rootdirfile:

///DIRECTORY/hbase

将 DIRECTORY 替换成你期望写文件的目录.默认 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,也就说你会在重启后丢失数据(重启的时候操作系统会清理/tmp目录)

1.2.2. 启动HBase

现在启动Hbase:

$./bin/start-hbase.shstartingMaster,loggingtologs/hbase-user-master-example.org.out

现在你运行的是单机模式的Hbaes。

所以的服务都运行在一个JVM上,包括Hbase和Zookeeper。

Hbase的日志放在logs目录,当你启动出问题的时候,可以检查这个日志。

是否安装了 java ?

你需要确认安装了Oracle的1.6版本的java.如果你在命令行键入java有反应说明你安装了Java。

如果没有装,你需要先安装,然后编辑conf/hbase-env.sh,将其中的JAVA_HOME指向到你Java的安装目录。

1.2.3. Shell练习

用shell连接你的Hbase

$./bin/hbaseshellHBaseShell;enter'help'forlistofsupportedcommands.Type"exit"toleavetheHBaseShellVersion:

0.90.0,r1001068,FriSep2413:

55:

42PDT2010hbase(main):

001:

0>

输入 help 然后  可以看到一列shell命令。

这里的帮助很详细,要注意的是表名,行和列需要加引号。

创建一个名为 test 的表,这个表只有一个columnfamily为 cf。

可以列出所有的表来检查创建情况,然后插入些值。

hbase(main):

003:

0>create'test','cf'0row(s)in1.2200secondshbase(main):

003:

0>list'table'test1row(s)in0.0550secondshbase(main):

004:

0>put'test','row1','cf:

a','value1'0row(s)in0.0560secondshbase(main):

005:

0>put'test','row2','cf:

b','value2'0row(s)in0.0370secondshbase(main):

006:

0>put'test','row3','cf:

c','value3'0row(s)in0.0450seconds

以上我们分别插入了3行。

第一个行key为row1,列为 cf:

a,值是 value1。

Hbase中的列是由columnfamily前缀和列的名字组成的,以冒号间隔。

例如这一行的列名就是a.

检查插入情况.

Scan这个表,操作如下

hbase(main):

007:

0>scan'test'ROWCOLUMN+CELLrow1column=cf:

a,timestamp=1288380727188,value=value1row2column=cf:

b,timestamp=1288380738440,value=value2row3column=cf:

c,timestamp=1288380747365,value=value33row(s)in0.0590seconds

Get一行,操作如下

hbase(main):

008:

0>get'test','row1'COLUMNCELLcf:

atimestamp=1288380727188,value=value11row(s)in0.0400seconds

disable再drop这张表,可以清除你刚刚的操作

hbase(main):

012:

0>disable'test'0row(s)in1.0930secondshbase(main):

013:

0>drop'test'0row(s)in0.0770seconds

关闭shell

hbase(main):

014:

0>exit

1.2.4. 停止HBase

运行停止脚本来停止HBase.

$./bin/stop-hbase.shstoppinghbase...............

1.2.5. 下一步该做什么

以上步骤仅仅适用于实验和测试。

接下来你可以看 Section 1.3,“慢速开始(相对快速开始)” ,我们会介绍不同的Hbase运行模式,运行分布式Hbase中需要的软件和如何配置。

1.3. 慢速开始(相对快速开始)

1.3.1. 需要的软件

Hbase有如下需要,请仔细阅读本章节以确保所有的需要都被满足。

如果需求没有能满足,就有可能遇到莫名其妙的错误甚至丢失数据。

1.3.1.1. java

和Hadoop一样,Hbase需要Oracle版本的Java6.除了那个有问题的u18版本其他的都可以用,最好用最新的。

1.3.1.2. hadoop

该版本的Hbase只可以运行在Hadoop0.20.x,不可以运行于hadoop0.21.x(0.22.x也不行).HBase运行在没有持久同步功能的HDFS上会丢失数据。

Hadoop0.20.2和Hadoop0.20.203.0就没有这个功能。

现在只有 branch-0.20-append 补丁有这个功能[1].现在官方的发行版都没有这个功能,所以你要自己打这个补丁。

推荐看MichaelNoll写的详细的说明, BuildinganHadoop0.20.xversionforHBase0.90.2.

你还可以用Cloudera's CDH3.CDH打了这个补丁(CDH3betas就可以满足;b2,b3,orb4).

因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在 lib 里面。

这个jar是hbase自己打了branch-0.20-append补丁的hadoop.jar.Hadoop使用的hadoop.jar和Hbase使用的 必须 一致。

所以你需要将Hbase lib 目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。

比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。

如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。

我可以用Hbase里面的支持sync的hadoop.jar替代Hadoop里面的那个吗?

你可以这么干。

详细可以参见这个邮件列表.

Hadoop安全性

HBase运行在Hadoop0.20.x上,就可以使用其中的安全特性--只要你用这两个版本0.20S和CDH3B3,然后把hadoop.jar替换掉就可以了.

1.3.1.3. ssh

必须安装ssh , sshd 也必须运行,这样Hadoop的脚本才可以远程操控其他的Hadoop和Hbase进程。

ssh之间必须都打通,不用密码都可以登录,详细方法可以Google一下("sshpasswordlesslogin").

1.3.1.4. DNS

HBase使用本地hostname才获得IP地址.正反向的DNS都是可以的.

如果你的机器有多个接口,Hbase会使用hostname指向的主接口.

如果还不够,你可以设置 hbase.regionserver.dns.interface 来指定主接口。

当然你的整个集群的配置文件都必须一致,每个主机都使用相同的网络接口

还有一种方法是设置 hbase.regionserver.dns.nameserver来指定nameserver,不使用系统带的.

1.3.1.5. NTP

集群的时钟要保证基本的一致。

稍有不一致是可以容忍的,但是很大的不一致会造成奇怪的行为。

运行 NTP 或者其他什么东西来同步你的时间.

如果你查询的时候或者是遇到奇怪的故障,可以检查一下系统时间是否正确!

1.3.1.6.  ulimit 和 nproc

HBase是数据库,会在同一时间使用很多的文件句柄。

大多数linux系统使用的默认值1024是不能满足的,会导致FAQ:

WhydoIsee"java.io.IOException...(Toomanyopenfiles)"inmylogs?

异常。

还可能会发生这样的异常

2010-04-0603:

04:

37,542INFOorg.apache.hadoop.hdfs.DFSClient:

ExceptionincreateBlockOutputStreamjava.io.EOFException2010-04-0603:

04:

37,542INFOorg.apache.hadoop.hdfs.DFSClient:

Abandoningblockblk_-6935524980745310745_1391901

所以你需要修改你的最大文件句柄限制。

可以设置到10k.你还需要修改hbase用户的 nproc,如果过低会造成 OutOfMemoryError异常。

 [2] [3].

需要澄清的,这两个设置是针对操作系统的,不是Hbase本身的。

有一个常见的错误是Hbase运行的用户,和设置最大值的用户不是一个用户。

在Hbase启动的时候,第一行日志会现在ulimit信息,所以你最好检查一下。

 [4]

1.3.1.6.1. 在Ubuntu上设置ulimit

如果你使用的是Ubuntu,你可以这样设置:

在文件 /etc/security/limits.conf 添加一行,如:

hadoop-nofile32768

可以把 hadoop 替换成你运行Hbase和Hadoop的用户。

如果你用两个用户,你就需要配两个。

还有配nprochard和softlimits.如:

hadoopsoft/hardnproc32000

.

在 /etc/pam.d/common-session 加上这一行:

sessionrequiredpam_limits.so

否则在 /etc/security/limits.conf上的配置不会生效.

还有注销再登录,这些配置才能生效!

1.3.1.7. dfs.datanode.max.xcievers

一个Ha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1