博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《HBase权威指南》读书笔记:第二章 安装
阅读量:2190 次
发布时间:2019-05-02

本文共 4160 字,大约阅读时间需要 13 分钟。

基本操作

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

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

hbase.rootdir
file:///home/yourusername/hbase/data

启动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>

运行模式

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

hbase.rootdir
hdfs://localhost:9000/hbase
dfs.replication
1

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

hbase.cluster.distributed
true

还需要修改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了)

转载地址:http://svyub.baihongyu.com/

你可能感兴趣的文章
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
查看>>
搞懂分布式技术20:消息队列因何而生
查看>>
搞懂分布式技术21:浅谈分布式消息技术 Kafka
查看>>
后端技术杂谈1:搜索引擎基础倒排索引
查看>>
后端技术杂谈2:搜索引擎工作原理
查看>>
后端技术杂谈3:Lucene基础原理与实践
查看>>
后端技术杂谈4:Elasticsearch与solr入门实践
查看>>
后端技术杂谈5:云计算的前世今生
查看>>
后端技术杂谈6:白话虚拟化技术
查看>>
后端技术杂谈7:OpenStack的基石KVM
查看>>
后端技术杂谈8:OpenStack架构设计
查看>>
后端技术杂谈9:先搞懂Docker核心概念吧
查看>>
后端技术杂谈10:Docker 核心技术与实现原理
查看>>
夯实Java基础系列2:Java自动拆装箱里隐藏的秘密
查看>>
夯实Java基础系列1:Java面向对象三大特性(基础篇)
查看>>
夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
查看>>
夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
查看>>
Java 未来行情到底如何,来看看各界人士是怎么说的
查看>>
IntelliJ 平台 2020 年路线图
查看>>
走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
查看>>