《HBase权威指南》读书笔记:第二章 安装

来源:互联网 发布:今年双十一淘宝成交额 编辑:程序博客网 时间:2024/05/29 12:30

基本操作

  • 首先确保已经安装Java。通过java -version命令查看,要求版本1.7以上。
  • 下载hbase: http://www.apache.org/dyn/closer.cgi/hbase/
  • 将下载来的压缩包解压

配上数据储存目录,编辑文件conf/hbase-site.xml

<configuration>  <property>    <name>hbase.rootdir</name>    <value>file:///home/yourusername/hbase/data</value>  </property></configuration>

启动HBase。命令为:bin/start-hbase.sh。命令执行后HBase将在后台运行。

进入操作终端。bin/hbase shell,通过status命令可以查看服务状态。

创建表:create 'hello_table','hello_family',得到的结果为0 row(s) in 1.2280 seconds

添加数据:

put 'hello_table','id-1','hello_family:name','Alice'put 'hello_table','id-1','hello_family:age','23'put 'hello_table','id-2','hello_family:name','Bob'put 'hello_table','id-2','hello_family:age','24'

以上命令创建了这样的表:

id name age id-1 Alice 23 id-2 Bob 24

扫描数据:scan 'hello_table',得到的结果如下:

ROW                                           COLUMN+CELL id-1                                         column=hello_family:age, timestamp=1496115723729, value=23 id-1                                         column=hello_family:name, timestamp=1496115723692, value=Alice id-2                                         column=hello_family:age, timestamp=1496115723990, value=24 id-2                                         column=hello_family:name, timestamp=1496115723750, value=Bob2 row(s) in 0.0170 seconds

取数据:get 'hello_table','id-1',得到的结果如下:

COLUMN                                        CELL hello_family:age                             timestamp=1496115723729, value=23 hello_family:name                            timestamp=1496115723692, value=Alice2 row(s) in 0.0050 seconds

删除数据:delete 'hello_table','id-1','name',这样删掉了name这一格,age还在。通过scan查看得到结果为:

ROW                                           COLUMN+CELL id-1                                         column=hello_family:age, timestamp=1496115723729, value=23 id-2                                         column=hello_family:age, timestamp=1496115723990, value=24 id-2                                         column=hello_family:name, timestamp=1496115723750, value=Bob2 row(s) in 0.0130 seconds

删除表:

disable 'hello_table'drop 'hello_table'

退出终端:exit

停止HBase服务:bin/stop-hbase.sh

硬件配置

CPU要求多核,最好每个硬盘对应有个核。

JVM内存不宜超过16G,避免GC停顿时间过长。

master节点推荐24G、region节点推荐24G以上。

网络推荐两个千兆网卡做bond。如有万兆、或者InfiniBand更好。

服务器推荐用1U的。

网络,推荐一个机架放两个交换机,然后核心交换机将机架上的交换机连起来。

软件

操作系统需要选择,通常用Linux中的CentOS和RHEL比较好。

文件系统有以下几种选择:
- ext3,推荐禁用访问时间的记录,因为HBase不需要记录访问时间,这样节省内核的管理开销
- ext4,推荐关闭延迟分配策略,延迟分配是指将写入的数据临时存放在内存里,等到flush时再落盘。关掉之后减少数据断电导致数据丢失的概率
- XFS,优点是格盘很快,缺点是大量删除文件会涉及元数据的变更,不过HBase一般是大文件存储,不会出现这个问题。
- ZFS,内置压缩,支持ZB级别的储存空间

Java,版本至少1.7以上,比最新版稍旧一些的版本,避免重大BUG。

Hadoop版本,需要支持sync功能,避免数据丢失。HBase中使用的hadoop版本需要与底层hadoop版本一致,需要将底层运行的hadoop的jar包复制到hbase中再启动。

SSH。建议使用ssh-agent,只需输入一次密码即可批量操作。

域名服务。HBase通过本地域名汇报IP地址,因此需要DNS的正向解析和反向解析都能够正常工作。

同步时间。时间需要保证同步。相差1分钟以上就会出现奇怪的行为。比如发生ClockOutOfSyncException

文件数量限制和进程限制。文件数量限制默认1024是不够用的,至少要10000。进程数量nproc也需要设置。修改之后需要重新登录才能生效。

DataNode处理线程数。在hdfs-site.xml配置文件中需要设置dfs.datanode.max.xcievers至少设置为4096。配置完之后需要重启HDFS集群。此配置相当于最大文件句柄数。如果太小可能会出现:No live nodes contain current block. Will get new block locations from namenode and retry.

交换分区。必须关掉,否则可能卡死一个region节点。

Windows。HBase不建议在Windows环境运行。

HBase使用的文件系统

HBase常见使用HDFS文件系统。也可以支持别的文件系统,甚至自己实现一种。HBase自身没有做副本,所以底层的文件系统必须提供副本、容错、扩展的功能。事实上HBase支持所有实现了Hadoop接口的文件系统,包括HDFS、Amazon S3、Google Cloud、本地文件系统。KFS也是一种高性能文件系统。

  • HDFS的URI格式为:hdfs://<namenode>:<port>/<path>
  • S3的URL格式为:s3://<bucket-name>或者s3n://<bucket-name>
  • KFS的URI格式为:kfs:///<path>

运行模式

分为单机模式和分布式模式。一般调试用单机模式或者伪分布式模式。生产环境用分布式模式。分布式模式需要加上如下配置:

<property>  <name>hbase.rootdir</name>  <value>hdfs://localhost:9000/hbase</value></property><property>  <name>dfs.replication</name>  <value>1</value></property>

完全分布式模式需要增加如下配置:

<property>  <name>hbase.cluster.distributed</name>  <value>true</value></property>

还需要修改conf/regionservers,列出所有region-server节点IP。每个文件独立一行文件。

Zookeeper安装。HBase自带Zookeeper,因此可以跟随hbase启动,共用JVM,也可以单独启动zookeeper和hbase。(笔者:推荐hbase和zookeeper分别独立启动,避免相互影响)

配置

主要的配置有以下几个:

  • hbase-env.sh,用于设置环境变量。包括JVM堆设置,GC设置等。修改后重启生效。
  • hbase-site.xml,集群特有的配置。
  • hbase-default.xml,默认配置,此文件在hbase程序包中。如果配置项在hbase-default.xmlhbase-site.xml,会优先使用hbase-site.xml中的配置。
  • regionserver,region节点的列表
  • log4j.properties,打印日志的选项

配置完成后需要需要将conf文件夹中的文件都同步到所有节点上。如果配置不一致则会导致问题。

部署

可以通过脚本批量部署hbase,也可以通过Apache Whirr批量部署,也可以用Puppet、Chef批量部署。

操作集群

web ui,访问master节点的60010端口可以得到图形界面。(笔者:新版本端口改成16010了)

原创粉丝点击