您的位置:首页 > 大数据

大数据生态系统基础: HBASE(一):HBASE 介绍及安装、配置

2017-08-21 19:03 501 查看
一、介绍       Apache HBase是Hadoop数据库,一个分布式的、可伸缩的大型数据存储。       当您需要随机的、实时的读/写访问您的大数据时,请使用Apache HBase。这个项目的目标是承载非常大的表——数十亿行X百万列的列——运行在在商用硬件的集群上。Apache HBase是一个开源的、分布式的、版本化的、非关系数据库,以谷歌的Bigtable为模型:一个结构化的分布式存储系统,由Chang 等l提供。就像Bigtable利用谷歌文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS上提供了类似于Bigtable的功能。     可以直接下载国内网站的 Hbase:hbase-1.3.1-src.tar.gz    特征:线性和模块化的可伸缩性。严格一致的读和写。表的自动和可配置分片区域服务器之间的自动故障转移支持。使用Apache HBase表支持Hadoop MapReduce作业的方便的基类。易于使用Java API用于客户端访问。块缓存和Bloom过滤器用于实时查询。查询谓词通过服务器端过滤器向下推节约网关和一种支持XML、原buf和二进制数据编码选项的rest式Web服务可扩展jruby-based(JIRB)壳支持通过Hadoop度量子系统向文件或Ganglia导出指标;或通过JMX    二、安装      1、解压           在 HOME 目录下:         wget http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz          tar zxvf  hbase-1.3.1-bin.tar.gz         mv hbase-1.3.1-bin hbase   2、修改环境变量          在.bash_profile 或者/etc/profile           50 ###setup HBASE           51 export HBASE_HOME=$HOME/hbase          52 export PATH=$HBASE_HOME/bin:$PATH          53 export HBASE_CLASSPATH=$HBASE_HOME/lib/*        保存后, 使用 source .bash_profile   或者 source /etc/profile 使之生效   3、修改配置         进入 HBASE_HOME 目录下:         1)修改 conf/hbase-env.sh             export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home 配置 java home             export HBASE_LOG_DIR="${HBASE_LOG_DIR:-/usr/local/var/log/hbase}" 配置 log 目录              export HBASE_MANAGES_ZK=false, 配置 HBASE 不要管理 zookeeper        2)修改 conf/hbase-site.xml        
<configuration>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://mymac:9000/hbase</value>  主目录
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>mymac,master,slave1,slave2</value> 配置 zookeeper
</property>

<property>
<name>hbase.zookeeper.sission.timeout</name>
<value>60000</value>
</property>

<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>     zookeeper 地址
</property>

<property>
<name>hbase.master</name>
<value>mymac</value>       指定主服务器
</property>

<property>
<name>hbase.regionserver.lease.period</name>
<value>60000</value>
</property>

<property>
<name>hbase.rpc.timeout</name>
<value>60000</value>
</property>

</configuration>
1,hbase.rootdir:hbase所使用的文件系统为HDFS,根目录为hdfs://192.168.1.127:9000/hbase,该目录应该由HBase自动创建,只需要指定到正确的HDFS NameNode上即可。

2,hbase.hregion.max.filesize:设置HStoreFile的大小,当 大于这个数时,就会split 成两个文件

3,hbase.hregion.memstore.flush.size:设置memstore的大小,当大于这个值时,写入磁盘

4,hbase.cluster.distributed:指定hbase为分布式模式

5,hbase.zookeeper.property.clientPort:指定zk的连接端口

6,zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.

7,hbase.zookeeper.property.tickTime:

8,hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr的master,slave1,slave2

9,hbase.tmp.dir:指定HBase将元数据存放路径
3、修改 conf/regionservers            将启动的 slave 服务器的主机名称加入其中即可。            mymac             master             slave1            slave2             四、启动             wangxinnian@mymac:~/hbase/conf$ start-hbase.shstarting master, logging to /usr/local/var/log/hbase/hbase-wangxinnian-master-mymac.outmymac: starting regionserver, logging to /usr/local/var/log/hbase/hbase-wangxinnian-regionserver-mymac.out             wangxinnian@mymac:~/hbase/conf$ jps18816 ResourceManager64624 HMaster18626 DataNode42148 RunJar63813 RunJar64728 HRegionServer18714 SecondaryNameNode18555 NameNode62635 Launcher18893 NodeManager64765 Jps        进程中有 HMaster 和 HRegionServer 即可表示启动成功。必须注意,尽管设置 Hbase 不需要 管理 zookeeper,但是hbase 还是依赖 zookeeper 的运行的。所以在此之前必须先安装 zookeeper。大家可以参考 zookeeper 的安装。export HBASE_MANAGES_ZK=true,这样启动的时候可以一起启动 zookeeper。使用 jps 可以看到 HQuorumPeer进程。        建议先启动 zookeeper,再启动 hbase五、拷贝到集群中其它的服务器上              1、拷贝.bash_profile 或者 /etc/profile 到集群其它服务器上。                  如: scp ~/.bash_profile wangxinnian@master:~               2、拷贝 hbase 目录到集群其它的服务器上。                如: scp  -r ~/hbase wangxinnian@master:~/           其它集群服务器同理启动即可。六、验证Hbase     1、web 查看      输入地址: http://mymac: 16010 。出现 web 页面表示正常。                              2、一个简单的操作 wangxinnian@mymac:~/hbase$ hbase shellSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/Users/wangxinnian/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/Users/wangxinnian/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]HBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase ShellVersion 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017//创建一个名为 small的表,这个表只有一个 column family 为 cf。可以列出所有的表来检查创建情况,然后插入些值。hbase(main):001:0> create 'small','cf'0 row(s) in 1.4160 seconds=> Hbase::Table - smallhbase(main):002:0> listTABLEsmall1 row(s) in 0.0200 seconds=> ["small"]hbase(main):003:0> put 'small','row1','cf:a','value'0 row(s) in 0.1110 secondshbase(main):004:0> put 'small', 'row2', 'cf:b', 'value2'0 row(s) in 0.0130 secondshbase(main):005:0> put 'small', 'row3', 'cf:c', 'value3'0 row(s) in 0.0130 seconds//检查插入情况.Scan这个表hbase(main):006:0> scan 'small'ROW COLUMN+CELLrow1 column=cf:a, timestamp=1503310610537, value=valuerow2 column=cf:b, timestamp=1503310632539, value=value2row3 column=cf:c, timestamp=1503310644605, value=value33 row(s) in 0.0240 seconds//Get一行,操作如下hbase(main):007:0> get 'small', 'row1'COLUMN CELLcf:a timestamp=1503310610537, value=value1 row(s) in 0.0240 seconds//disable 再 drop 这张表,可以清除你刚刚的操作hbase(main):008:0> disable 'small'0 row(s) in 2.2720 secondshbase(main):009:0> drop 'small'0 row(s) in 1.2610 secondshbase(main):010:0> quit导出与导入,注意再重复上述的步骤,但是不要 drop,否则 small 被删除不存在了。$hbaseorg.apache.hadoop.hbase.mapreduce.Driver export small small导出的表,在hadoop文件系统的当前用户目录下,small文件夹中。例如,导出后在hadoop文件系统中的目录结构:wangxinnian@mymac:~/hbase$ hadoop fs -ls /user/wangxinnian/smallFound 2 items-rw-r--r--   1 wangxinnian supergroup          0 2017-08-21 18:25 /user/wangxinnian/small/_SUCCESS-rw-r--r--   1 wangxinnian supergroup        273 2017-08-21 18:25 /user/wangxinnian/small/part-m-00000七、启动备份 Master 和 Regionserver1、启动和停止备份 MasterHMaster服务器控制HBase集群。您可以启动多达9个备份HMaster服务器,包括主服务器就有10个备份主服务器。要启动备份HMaster,请使用本地主备份。对于您想要启动的每个备份主机,添加一个代表该主机的端口偏移量的参数。每个HMaster都使用三个端口(16010、16020和16030)。端口偏移被添加到这些端口,所以使用2的偏移量,备份HMaster将使用端口16012、16022和16032。下面的命令启动了3个备份服务器,使用端口16012/16022/16032,16013/16023/16033,以及16015/16025/16035。
$ ./bin/local-master-backup.sh 2 3 5
杀掉一个备份master ,找到PID.  PID存储在 /tmp/hbase-USER-X-master.pid这样的文件中. 文件内容就只有 PID. 所以可以使用
kill -9命令杀掉
PID. 一个命令如下:
$ cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
比如:wangxinnian@mymac:/tmp$ cat hbase-wangxinnian-2-master.pid | xargs kill -9
查看 pid 的值,wangxinnian@mymac:/tmp$ cat hbase-wangxinnian-3-master.pid
68597
2、启动和停止备份 RegionServer
HRegionServer按照HMaster的指示管理其存储库中的数据。通常,一个HRegionServer在集群中的每个节点上运行。在相同的系统上运行多个HRegionServer对于在伪分布模式下进行测试是很有用的。local-regionservers.sh命令允许您运行多个HRegionServer。它以类似于local-master-backup.sh命令,您所提供的每个参数代表一个实例的端口偏移量。每个 HRegionServer都需要两个端口,默认端口是16020和16030。但是,额外的 HRegionServer的基础端口不是默认端口,因为HMaster使用默认端口,它也是自HBase 1.0.0以来的 HRegionServer。基本端口是16200和16300。您可以在服务器上运行99个额外的 HRegionServer,而不是HMaster或备份HMaster。下面的命令将启动4个附加的 HRegionServer,从1620/16302(基本端口16200/16300+2)开始运行。
$ .bin/local-regionservers.sh start 2 3 4 5
手动停止一个 RegionServer也是用 
local-regionservers.sh命令,带
 
stop参数和服务器的数值。
$ .bin/local-regionservers.sh stop 3
直接 stop-abase.sh停止集群服务。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐