hbase与zookeeper完全分布式集群搭建

hbasezookeeper完全分布式集群搭建

  auth : hahally
  time : 2019.11.29
  版本  : ubuntu18 hadoop2.9.2 jdk1.8 hbase
  前提  : hadoop集群已经搭建成功

配置说明

  参考[`官网`](https://hbase.apache.org/book.html)

  zookeeper使用hbase自带的

  配置文件位于hbase安装目录下的 /conf/

1. hbase-env.sh

	1. HBase允许在conf/hbase-env.sh文件中进行设置JAVA_HOME
	   export JAVA_HOME=JDK安装路径  # whereis java命令查看java
	2. HBASE_MANAGES_ZK=true #设为true让hbase管理zookeeper

2. hbase-site.xml

	1. HBase的主要配置文件
	2. 指定HBase和ZooKeeper写入数据的目录
	3. hbase.rootdir配置为HDFS文件系统目录
	4. hbase.cluster.distributed值设为true指定为完全分布式
	5. hbase.zookeeper.quorum配置zookeeper节点主机或ip
	6. hbase.zookeeper.property.dataDir为默认值以外的值,因为默认值将ZooKeeper持久数据保留在/tmp下,该值通常在系统重新启动时清除

*hbase.rootdir*指定为/hbase 参考core-site.xml指定的fs.defaultFS
若没有hbase目录则先创建

hadoop@master: hadoop fs -mkdir /hbase  # 创建hdfs目录
hadoop@master: hadoop fs -ls /          # 查看hdfs目录

3. regionservers

	1. 删除包含的localhost
	2. 列出所有主机名或ip
	3. 当主服务器启动或停止时,此文件中列出的所有主机都将启动和停止其RegionServer进程

4. /bin/start-hbase.sh

	1. 脚本启动命令
	2. http://localhost:16010  查看 hbase web 界面
	3. Master的16010和RegionServer的16030

5. 守护进程

	1. HMaster          主备份服务器
	2. HRegionServer    region进程
	3. HQuorumPeers     一个由HBase控制和启动的ZooKeeper实例

配置示例

官网下载合适版本的hbase的tar包

1.解压缩安装

解压缩到 /usr/local/ 目录下,并修改 hbase 目录的所有者为hadoop

hadoop@master: sudo tar -zxvf hbase-1.5.11-bin.tar.gz /usr/local/
hadoop@master: sudo chown -R hadoop /usr/local/hbase-1.3.6

2. 配置环境变量

hadoop@master: sudo vi ~/.bashrc
hadoop@master: source ~/.bashrc

~/.bashrc

export JAVA_HOME=/usr/local/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/usr/local/hadoop-2.7.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/usr/local/hbase-1.3.6/bin
export HBASE_HOME=/usr/local/hbase-1.3.6
export HBASE_CLASSPATH=/usr/local/hbase-1.3.6/lib/hbase-common-1.3.6.jar:/usr/local/hbase-1.3.6/lib/hbase-server-1.3.6.jar

3. hbase zookeeper 配置

hadoop@master: sudo vi /usr/local/hbase-1.3.6/conf/hbase-site.xml
hadoop@master: sudo vi /usr/local/hbase-1.3.6/conf/regionservers
hadoop@master: sudo vi /usr/local/hbase-1.3.6/conf/hbase-env.sh
# 在hadoop 安装目录下
hadoop@master: sudo mkdir data
hadoop@master: sudo mkdir data/zookeeper

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</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/hadoop-2.9.2/data/zookeeper</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>zookeeper.session.timeout</name>
    <value>60000</value>
  </property>
  <property>
    <name>hbase.master</name>
    <value>master:60000</value>
  </property>
</configuration>

regionservers

	master
	slave1

hbase-env.sh

	···
	export JAVA_HOME=/usr/local//usr/local/jdk1.8.0_162
	···
	export HBASE_MANAGES_ZK=true
	···
	HBASE_HEAPSIZE = 1G
	···

**hdfs-site.xml**加入下面内容

	<property>
	  <name>dfs.datanode.max.transfer.threads</name>
	  <value>4096</value>
	</property>

slave1节点配置与master相同

启动集群

hadoop@master: /usr/local/hadoop-2.9.2/sbin/start-dfs.sh
hadoop@master: /usr/local/hadoop-2.9.2/sbin/start-yarn.sh
hadoop@master: /usr/local/hbase-1.3.6/bin/start-hbase.sh
hadoop@master: jps
hadoop@master: hbase shell # 进入 shell 目录

运行错误及参考方法

进入hbase shell 中,出现错误,退出后,hmaster进程死掉

		hbase(main):001:0> list
		···
		ERROR: Can't get master address from ZooKeeper; znode data == null
		···

查看日志:hbase-hadoop-master-master.log

	···
	ERROR [Thread-24] master.HMaster: Failed to become active master
	java.lang.IllegalStateException: The procedure WAL relies on the ability 
	to hsync for proper operation during component failures, but the underlying 
	filesystem does not support doing so. Please check the config value of 
	'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness 
	and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount 
	that can provide it. 
	···

解决方法参考:传送门
在hbase-site.xml中添加下面内容

	<property>
		<name>hbase.procedure.store.wal.use.hsync</name>
		<value>true</value>
	</property>
	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值