HBase安装 - 联邦机制下的hadoop集群

老师的联邦机制的hadoop集群的分布 :

master1 :	namenode	zkfc
master1ha :	namenode	zkfc	zookeeper	journalnode	
master2:	namenode	zkfc	zookeeper	journalnode	
master2ha:	namenode	zkfc	zookeeper	journalnode
h2slave1:	nodemanager	datanode	
h2slave2:	nodemanager	datanode	
h2slave3:	nodemanager	datanode	

HBase的安装文档:

1.1 上传
1.2 解压
1.3 重命名
1.4 修改环境变量(每台机器都要执行)
1.5 修改配置文件
1.6 分发
1.7 启动

先在一台机器上安装,配置好了之后,再发送到其他的从机器上。

配置文件 conf:
一般情况下,软件有这么三类配置文件:1,xxxx-site.xml : 核心配置 2,xxx-env.sh : 配置环境变量的 3. xxxs :: 没有后缀名的文件 : 用来配置从节点的。

为什么要配置环境变量?
如何没配置环境变量,jdk照样能用如果没有配置环境变量的话,那么就需要告诉软件jdk在哪,所以最好指定环境变量。

  1. hbase-env.sh
export JAVA_HOME=/usr/jdk/

export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HBASE_OPTS="-XX:+UseConcMarkSweepGC"        --  JVM参数

export HBASE_MANAGES_ZK=false   -- 如果是false,那么就需要使用自己配置的zookeeper集群,如果是true,那么就是使用HBase内置的单机版本的zoookeeper
  1. 配置从节点: regionservers
h2slave1
h2slave2
h2slave3
  1. hbase-site.xml : 核心配置
  1. Master的位置:
<property>
<name>hbase.master</name>
<value>master1:60000</value>
</property>
  1. 间隔时间 : 主和备NameNode需要检查心跳。
    运行主备的间隔时间
<property>
<name>hbase.master.maxclockskew</name> 
<value>180000</value>
</property>

如果间隔时间出现问题报错了,那么就让主备的时间同步,或者把这个间隔时间改大一点。

  1. HBase是依赖hdfs存储的,需要制定存储的位置
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-cluster1/hbase</value>
</property>
<property>

hadoop-cluster1 是逻辑名字,如果是配置ip : port的话,那么就只能指定一台机器连接hdfs,但是主跟备会切换的。所以这里指定的是主备的那套映射,这个映射是搭建hadoop联邦机制机器的时候,hadoop的配置文件里面定义好了的。所以应该把hadoop的配置文件 hdfs-site.xml 复制到这个HBase这个配置文件下。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
      <name>dfs.nameservices</name>
     <value>hadoop-cluster1,hadoop-cluster2</value>
   </property>
   <property>
      <name>dfs.ha.namenodes.hadoop-cluster1</name>
      <value>nn1,nn2</value>
   </property>
   <property>
      <name>dfs.namenode.rpc-address.hadoop-cluster1.nn1</name>
      <value>master1:9000</value>
   </property>
   <property>
      <name>dfs.namenode.rpc-address.hadoop-cluster1.nn2</name>
      <value>master1ha:9000</value>
   </property>
   <property>
      <name>dfs.namenode.http-address.hadoop-cluster1.nn1</name>
      <value>master1:50070</value>
   </property>
   <property>
      <name>dfs.namenode.http-address.hadoop-cluster1.nn2</name>
      <value>master1ha:50070</value>
   </property>
   <property>
      <name>dfs.namenode.secondary.http-address.hadoop-cluster1.nn1</name>
      <value>master1:9001</value>
   </property>
   <property>
      <name>dfs.namenode.secondary.http-address.hadoop-cluster1.nn2</name>
      <value>master1ha:9001</value>
   </property>
   <property>
      <name>dfs.client.failover.proxy.provider.hadoop-cluster1</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
   </property>
   <property>
      <name>dfs.ha.namenodes.hadoop-cluster2</name>
      <value>nn3,nn4</value>
   </property>
   <property>
      <name>dfs.namenode.rpc-address.hadoop-cluster2.nn3</name>
      <value>master2:9000</value>
   </property>
   <property>
      <name>dfs.namenode.rpc-address.hadoop-cluster2.nn4</name>
      <value>master2ha:9000</value>
   </property>
   <property>
      <name>dfs.namenode.http-address.hadoop-cluster2.nn3</name>
      <value>master2:50070</value>
   </property>
   <property>
      <name>dfs.namenode.http-address.hadoop-cluster2.nn4</name>
      <value>master2ha:50070</value>
   </property>
   <property>
      <name>dfs.namenode.secondary.http-address.hadoop-cluster2.nn3</name>
      <value>master2:9001</value>
   </property>
   <property>
      <name>dfs.namenode.secondary.http-address.hadoop-cluster2.nn4</name>
      <value>master2ha:9001</value>
   </property>
   <property>
      <name>dfs.client.failover.proxy.provider.hadoop-cluster2</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>/home/hadoop/hadoop/namedir</value>
   </property>
   <property>
      <name>dfs.namenode.shared.edits.dir.hadoop-cluster1.nn1</name>
      <value>qjournal://master1ha:8485;master2:8485;master2ha:8485/cluster1</value>
   </property>
   <property>
      <name>dfs.namenode.shared.edits.dir.hadoop-cluster1.nn2</name>
      <value>qjournal://master1ha:8485;master2:8485;master2ha:8485/cluster1</value>
   </property>
   <property>
      <name>dfs.namenode.shared.edits.dir.hadoop-cluster2.nn3</name>
      <value>qjournal://master1ha:8485;master2:8485;master2ha:8485/cluster2</value>
   </property>
   <property>
      <name>dfs.namenode.shared.edits.dir.hadoop-cluster2.nn4</name>
      <value>qjournal://master1ha:8485;master2:8485;master2ha:8485/cluster2</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>/home/hadoop/hadoop/datadir</value>
   </property>
   <property>
     <name>ha.zookeeper.quorum</name>
     <value>master2ha:2181,master1ha:2181,master2:2181</value>
   </property>
   <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
   </property>
   <property>
     <name>ha.zookeeper.session-timeout.ms</name>
     <value>5000</value>
   </property>
   <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
   </property>
   <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hadoop/hadoop/jndir</value>
   </property>
   <property>
      <name>dfs.replication</name>
      <value>3</value>
   </property>
   <property>
      <name>dfs.permission</name>
      <value>false</value>
   </property>
   <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
   </property>
   <property>
      <name>dfs.support.append</name>
      <value>true</value>
   </property>
   <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/hadoop/tmp</value>
   </property>
   <property>
      <name>hadoop.proxyuser.hduser.hosts</name>
      <value>*</value>
   </property> 
   <property>
      <name>hadoop.proxyuser.hduser.groups</name>
      <value>*</value>
   </property>
   <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/hadoop/.ssh/id_rsa</value>
  </property>
</configuration>

HBase只认识主机名字跟ip,因此需要hdfs-site.xml,还需要hadoop联邦机制下的core-site.xml

  1. 指定是否是集群模式
<property>
<name>hbase.cluster.distributed</name> 
<value>true</value>
</property>
  1. 指定zookeeper
<property>
<name>hbase.zookeeper.quorum</name>
<value>master1ha,master2,master2ha</value>
</property>

6.指定zookeeper的工作的数据目录

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase/tmp/zookeeper</value>
</property>

其他的配置都不需要配置,使用的都是默认的。


搞完了配置文件,我们从配置文件中,可以看出来,实际上HBase的从节点和主节点没有一个太大的区别,不想zookeeper有一个myid,配置都是一样的,主知道从是哪个,从也知道主是谁。

发送:

scp -r hbase/ hadoop@h2slave1:/home/hadoop/apps
scp -r hbase/ hadoop@h2slave2:/home/hadoop/apps
scp -r hbase/ hadoop@h2slave3:/home/hadoop/apps

接下来就是启动了。
在这里插入图片描述

在这里插入图片描述

现在HBase启动了一个主了,还需要启动另外的三个从
h2slave1,h2slave2,h2slave3

在启动一个主: 适合版本一

hbase-daemon.sh	start	master

启动失败,可以使用这个命令:

local-master-backup.sh start 2

在这里插入图片描述

如果想添加HBase从节点,复制一台从节点信息到另一台,然后直接启动就行。

hbase-daemon.sh start regionserver

所以加双主和动态增删节点是很简单就可以实现的。是有zookeeper来控制的。

在这里插入图片描述

zookeeper上有三个节点信息。

还有backup-master
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/84821791