参考另一文件即可
编译过程中出现错误. 如下所示
Caused by: org.codehaus.plexus.component.configurator.ComponentConfigurationException: Cannot assign configuration entry 'pluginArtifacts' with value '${plugin.artifacts}' of type java.util.Collections.UnmodifiableRandomAccessList to property of type java.util.ArrayList
具体解决办法是将最外层的pom文件中的findbugs的版本改掉,从3.0.0改成3.0.2。( hbase-2.1.0 版本在 2192 行 )
由于 hbase 会启动大量的进程 和 打开大量的文件,所以需要调整一下设置, 修改文件 /etc/security/limits.conf
添加如下配置, 允许Hadoop 用户打开的文件和进程个数
hadoop - nofile 32768
hadoop - nproc 32000
配置完成之后重新登录,使用命令 ulimit -n -u
确认修改是否生效
<aside>
💡 如果修改之后不生效,可以检查一下 /etc/ssh/sshd_config
下的 UseLogin 项, 将其修改为 yes
</aside>
去官网下载 Hbase 的说明和安装包, 这里直接使用2.1的 bin 包. 下载 注意在生产环境,要选择合适的hadoop 版本。从 文档 4.1 节 可以查看 hadoop 和 hbase 的兼容表
配置hbase 各个节点之间的ssh 免登录
配置环境变量
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_LOG_DIR=<hbase log 目录>
修改配置
# file: conf/hbase-env.sh
export HBASE_MANAGES_ZK=false # 不使用hbase自带的 ZooKeeper
配置 region 服务器的节点
# file: conf/regionservers
hadoop@Slave2
hadoop@Slave3
修改配置 hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://HACluster/hbase</value>
<description>
The directory shared byRegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>
The mode the clusterwill be in. Possible values are
false: standalone and pseudo-distributedsetups with managed Zookeeper
true: fully-distributed with unmanagedZookeeper Quorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>
Property fromZooKeeper's config zoo.cfg.
The port at which the clients willconnect.
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave4,slave5</value>
<description>
Comma separated listof servers in the ZooKeeper Quorum.
For example,"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
By default this is set to localhost forlocal and pseudo-distributed modes
of operation. For a fully-distributedsetup, this should be set to a full
list of ZooKeeper quorum servers. IfHBASE_MANAGES_ZK is set in hbase-env.sh
this is the list of servers which we willstart/stop ZooKeeper on.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zk-data</value>
<description>
Property fromZooKeeper's config zoo.cfg.
The directory where the snapshot isstored.
</description>
</property>
<property>
<name>hbase.master</name>
<value>16000</value>
<description>指定hbase master</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/tmp/hbase</value>
<description>指定 hbase 的tmp 目录</description>
</property>
<aside> 💡 如果是基于 hdfs HA 的hbase,还要 配置 hdfs-site.xml
</aside>
备份 $HBASE_HOME/lib
, 删除原来的hadoop-.jar包 和 zookeeper-.jar
然后将 $HADOOP_HOME/share/hadoop
下的hadoop-.jar 和 $ZOOKEEPER_HOME/lib
(如果使用其他 ZooKeeper) 下的 zookeeper-.jar包 都复制到 $HBASE_HOME/lib
下。
删除 $HBASE_HOME/lib/client-facing-thirdparty/slf4j-log4j12-*.jar
,避免与hadoop 的相冲突。
复制 $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-*.jar
到lib目录下。
cp -r $HBASE_HOME/lib $HBASE_HOME/lib.bak
rm -rf $HBASE_HOME/lib/hadoop-*.jar $HBASE_HOME/lib/zookeeper-*.jar
find $HADOOP_HOME/share/hadoop -name "hadoop-*jar" | xargs -n1 -I{} cp -f {} $HBASE_HOME/lib;
find $HBASE_HOME/lib -name "slf4j-log4j12-*jar" | xargs -n1 -I{} rm -rf {}
cp -f $ZOOKEEPER_HOME/zookeeper-*.jar $HBASE_HOME/lib;
[[ -d $HBASE_HOME/lib/client-facing-thirdparty ]] && cp -f $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-*.jar $HBASE_HOME/lib
执行 start-hbase.sh 启动hbase。
访问 web管理界面
如果要配置 ha。 则在另一个节点上 启动 zkfc 和 master. hbase-daemon.sh start master
即可
执行命令 hbase shell
输入 list 测试是否正常
执行 hbase-daemon.sh start thrift2 # 或者 thrift
启动的端口默认为 9090