一 伪分布式安装 1. 下载解压给权限 可以从官方下载地址下载 HBase 最新版本,推荐 stable目录下的二进制版本。我下载的是 hbase-1.1.3-bin.tar.gz 。确保你下载的版本与你现存的 Hadoop 版本兼容(兼容列表)以及支持的JDK版本(从HBase 1.0.x 已经不支持 JDK 6 了)。
兼容列表:
1 2 3 4 5 tar -zxvf hbase-1.1.3-bin.tar.gz sudo mv hbase-1.1.3 /usr/local/hbasecd /usr/local/sudo chmod -R 775 hbasesudo chown -R hadoop:hadoop: hbase
2. 修改HBASE的JDK环境变量 1 2 sudo nano /usr/ local/hbase/ conf/hbase-env.sh export JAVA_HOME=/usr/ lib/jvm/
3. 修改hbase-site.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 hadoop@Master:/usr/local/hbase/conf$ sudo nano hbase-site.xml <configuration> <property> <name> hbase.rootdir</name> <value> hdfs://Master:9000/hbase</value> </property> <property> <name> hbase.cluster.distributed</name> <value> true</value> </property> </configuration>
4. 启动验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 hadoop@Master :/usr/local/hbase/bin $ ./hbase shell HBase Shell ; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase Shell Version 1.1 .3 , r72bc50f5fafeb105b2139e42bbee3d61ca724989, Sat Jan 16 18 : 29 : 00 PST 2016 hbase(main):001:0> hadoop@Master :/usr/local/hbase/bin $ jps 1601 ResourceManager 1430 SecondaryNameNode 2374 HRegionServer 1883 JobHistoryServer 3037 Jps 2253 HMaster 1246 NameNode 2190 HQuorumPeer hadoop@Master :/usr/local/hbase/bin $
5. 尝试一下Thrift通信服务 这里我们尝试使用HBase 的 Thrift API,用Python和HBase进行简单交互。首先启动HBase的Thrift服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 hadoop@Master:/usr/local /hbase/bin$ ./hbase-daemon.sh start thrift starting thrift, logging to /usr/local /hbase/bin/../logs/hbase-hadoop-thrift-Master.out 然后安装Python的happybase模块,HBase是对 HBase的Thrift接口的一个简单包装: chuguaningdeMBP:~ chuguangming$ sudo pip install happybase 然后启动ipython,如果没有ipython,请通过pip安装: Python 2.7 .6 (default , Mar 22 2014 , 22 :59 :56 ) Type "copyright", "credits" or "license" for more information.IPython 3.2 .1 ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python' s own help system .object ? -> Details about 'object' , use 'object??' for extra details.In [1 ]: import happybaseIn [2 ]: connection = happybase.Connection ('localhost' )In [3 ]: connection .tables ()Out [3 ]: []In [4 ]: families = {'basic' :dict(max_versions=3 ),'detail' :dict(max_versions=1000 ),'comment' :dict(max_versions=1000 ),'answer' :dict(max_versions=1000 ),'follower' :dict(max_versions=1000 )}In [5 ]: connection .create_table('question' ,families)In [6 ]: connection .tables ()Out [6 ]: ['question' ]In [7 ]:
二 分布式安装 1. 软件环境 OS:Linux Master 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Java:java version “1.8.0_65” Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
Hadoop:Hadoop 2.6.0
Hbase:hbase-1.1.3
2. 集群部署机器:
IP
HostName
Master
RegionServer
192.168.1.80
Master
yes
no
192.168.1.82
Slave1
no
yes
192.168.1.84
Slave2
no
yes
3. 准备: 假设你已经安装部署好了 Hadoop 集群和 Java,可以参考以前的部署 文章。
4. Master的安装: ** 1)基本安装** 1 2 3 4 5 tar -zxvf hbase-1.0.0-bin.tar.gz sudo mv hbase-1.0.0 /usr/local/hbasecd /usr/local/sudo chmod -R 775 hbasesudo chown -R hadoop:hadoop: hbase
2)修改$JAVA_HOME为jdk安装目录 1 2 usr/local/hbase/conf$ sudo nano hbase-env.sh export JAVA_HOME=/usr/lib/jvm/
3)修改hbase-site.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /usr/local/hbase/conf/hbase-site.xml <configuration > <property > <name > hbase.rootdir</name > <value > hdfs://Master:9000/hbase</value > </property > <property > <name > hbase.cluster.distributed</name > <value > true</value > </property > <property > <name > hbase.zookeeper.quorum</name > <value > Master,Slave1,Slave2</value > </property > <property > <name > hbase.zookeeper.property.dataDir</name > <value > /home/hadoop</value > </property > </configuration >
其中第一个属性指定本机的hbase的存储目录,必须与Hadoop集群的core-site.xml文件配置保持一致;第二个属性指定hbase的运行模式,true代表全分布模式;第三个属性指定 Zookeeper 管理的机器,一般为奇数个;第四个属性是数据存放的路径。这里我使用的默认的 HBase 自带的 Zookeeper。
4)配置regionservers
regionservers文件列出了所有运行hbase的机器(即HRegionServer)。此文件的配置和Hadoop中的slaves文件十分相似,每行指定一台机器的主机名。当HBase启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。
5)修改 ulimit 限制 HBase 会在同一时间打开大量的文件句柄和进程,超过 Linux 的默认限制,导致可能会出现错误。 所以编辑/etc/security/limits.conf文件,添加以下两行,提高能打开的句柄数量和进程数量。注意将hadoop改成你运行 HBase 的用户名。
1 2 3 hadoop - nofile 65535 hadoop - nproc 32000
还需要在 /etc/pam.d/common-session 加上这一行:
1 session required pam_limits.so
否则在/etc/security/limits.conf上的配置不会生效。
最后还要注销(logout或者exit)后再登录,这些配置才能生效!使用ulimit -n -u命令查看最大文件和进程数量是否改变了。记得在每台安装 HBase 的机器上运行哦。
5. Slave上面的操作 基本上把以上步骤重复一下就可以了.
在 Master 节点上执行:
1 2 3 4 cd /usr/local hadoop@hadoopmaster :/usr/local $ sudo tar cvfz ~/hbase.tar.gz ./hbase scp ~/hbase.tar.gz hadoop@hadoopslave1 :/home/hadoop/ scp ~/hbase.tar.gz hadoop@hadoopslave2 :/home/hadoop/
在Slave节点上执行:
1 2 3 4 hadoop@hadoopslave1 :/usr/local $ sudo tar xvfz ~/hbase.tar.gz -C /usr /local/ hadoop@hadoopslave1 :/usr/local $ sudo chown -R hadoop: hadoop /usr/local/hbase/ hadoop@hadoopslave1 :/usr/local $ sudo chmod -R 775 /usr/local/hbase/
6. 运行 HBase 在master上运行
1 2 3 4 start -dfs.shstart -yarn.shmr-jobhistory-daemon.sh start historyserver start -hbase.sh
7. 验证 HBase 成功安装 在 master 运行 jps 应该会有HMaster进程。在各个 slave 上运行jps 应该会有HQuorumPeer,HRegionServer两个进程。 在浏览器中输入 http://Master:16010 可以看到 HBase Web UI 。
三 安装疑难杂症 错误表现-SLF4J: Class path contains multiple SLF4J bindings. 错误表现: 1 2 3 4 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file :/usr/ hbase/lib/ slf4j-log4j12-1.6 .4 .jar!/org/ slf4j/impl/ StaticLoggerBinder.class ] SLF4J: Found binding in [jar:file :/usr/ hadoop/share/ hadoop/common/ lib/slf4j-log4j12-1.7.5.jar!/ org/slf4j/im pl/StaticLoggerBinder.class ] SLF4J: See http:
含义为:发生jar包冲突了 分别为:
1 2 file :/usr/ hbase/lib/ slf4j-log4j12-1.6 .4 .jar!/org/ slf4j/impl/ StaticLoggerBinder.class file :/usr/ hadoop/share/ hadoop/common/ lib/slf4j-log4j12-1.7.5.jar!/ org/slf4j/im pl/StaticLoggerBinder.class
移除其中一个jar包即可
解决方案: 使用下面命令
1 /usr/hbase/lib rm slf4j-log4j12-1.6.4.jar