搭建HDFS的HA环境(HBase安装及配置,启动)

举报
菜鸟级攻城狮 发表于 2021/02/28 08:32:34 2021/02/28
【摘要】 1、在软件包所在目录解压Hbase压缩包[root@win1 soft]# tar -zxvf hbase-1.3.2-bin.tar.gz[root@win1 soft]# lshadoop-2.7.7       hbase-1.3.2          jdk1.8.0_161            zookeeper-3.4.12hadoop-2.7.7.tar.gz  hbase-...

1在软件包所在目录解压Hbase压缩包

[root@win1 soft]# tar -zxvf hbase-1.3.2-bin.tar.gz

[root@win1 soft]# ls

hadoop-2.7.7       hbase-1.3.2          jdk1.8.0_161            zookeeper-3.4.12

hadoop-2.7.7.tar.gz  hbase-1.3.2-bin.tar.gz  jdk-8u161-linux-x64.tar.gz  zookeeper-3.4.12.tar.gz

  • 把解压后的hbase-1.3.2传到23

[root@win1 conf]# scp -pr /hadoop/soft/hbase-1.3.2 win2:/hadoop/soft

[root@win1 conf]# scp -pr /hadoop/soft/hbase-1.3.2 win3:/hadoop/soft

  • 编辑环境变量/root/.bash_profile

[root@win1 conf]# vi /root/.bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

JAVA_HOME=/hadoop/soft/jdk1.8.0_161

ZK_HOME=/hadoop/soft/zookeeper-3.4.12

HADOOP_HOME=/hadoop/soft/hadoop-2.7.7

HBASE_HOME=/hadoop/soft/hbase-1.3.2

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin

CLASSPATH=$JAVA_HOME/lib:$HADOOP_HOME/lib:$HBASE_HOME/lib

export PATH CLASSPATH

编辑完成后记得使用source /root/.bash_profile把环境变量加载到内存!

命令行输入start-h能够TABstart-hbase.sh 即为编辑成功,如下↓

[root@win1 conf]# start-hbase.sh

把配置好的环境变量传到23

注意:Hbase安装需要修改hbase-env.shhbase-site.xmlregionservers 配置文件,(默认没有backup_masters,需要自己创建

具体如下

3、修改hbase-env.sh配置文件

A[root@win1 conf]# vi hbase-env.sh 编辑修改hbase-env.sh配置文件

(修改jdk的位置,由于使用的jdk1.8,需要注释PerSize,由于Hbase默认使用自带的zookeeper,在这里我们需要启用外部zookeeper,需要将HBASE_MANAGES_ZK设置为false

  export JAVA_HOME=/hadoop/soft/jdk1.8.0_161 如下图

B、注释PerSize 如下图↓

# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"

# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"

  • 修改export HBASE_PID_DIR路径,且需要在hbase-1.3.2下创建pids文件夹

export HBASE_PID_DIR=/hadoop/soft/hbase-1.3.2/pids

HBASE_MANAGES_ZK设置为false 具体如下图↓

  export HBASE_MANAGES_ZK=false

 

4、编辑hbase-site.sh配置文件,最少配置以下内容↓

[root@win1 conf]# vi hbase-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!--

/**

 *

 * Licensed to the Apache Software Foundation (ASF) under one

 * or more contributor license agreements.  See the NOTICE file

 * distributed with this work for additional information

 * regarding copyright ownership.  The ASF licenses this file

 * to you under the Apache License, Version 2.0 (the

 * "License"); you may not use this file except in compliance

 * with the License.  You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-->

<configuration>

<!--设置HRegionServers共享目录,请加上端口号 ↓-->

 <property>

  <name>hbase.rootdir</name>

  <value>hdfs://hahadoop/hbase</value>

 </property>

 

<!--启用分布式模式 ↓-->

 <property>

  <name>hbase.cluster.distributed</name>

  <value>true</value>

 </property>

 

<!--指定zookeeper集群位置 ↓-->

 <property>

  <name>hbase.zookeeper.quorum</name>

  <value>win1:2181,win2:2181,win3:2181</value>

 </property>

 

<!--指定独立zookeeper安装路径 ↓-->

 <property>

  <name>hbase.zookeeper.property.dataDir</name>

  <value>/hadoop/soft/zookeeper-3.4.12</value>

 </property>

 

<!--指定zookeeper集群端口 ↓-->

 <property>

  <name>hbase.zookeeper.property.clientPort</name>

  <value>2181</value>

 </property>

</configuration>

  • 编辑regionservers配置文件

列出你希望运行的全部HRegionServer,一行写一个主机名(就像Hadoop里的slaves一样)。列在这里的server会随着集群的启动而启动,集群的停止而停止。

[root@win1 conf]# vi regionservers

win1

win2

win3

6、创建并编辑backup-masters,里面指定备份的Hmaster

[root@win1 conf]# vi backup-masters

win2

  • 由于Hbase依赖于hdfs,为保证hbase的副本数和hdfs一致,需要集群运行hdfs-site.xml复制到habseconf目录下。结果如下

[root@win1 conf]# cp /hadoop/soft/hadoop-2.7.7/etc/hadoop/hdfs-site.xml (空格)/hadoop/soft/hbase-1.3.2/conf/

二、Hadoop启动

以下配置需保证前面配置无误,且需要JNZK、都已启动且环境变量正确无误,使用jps显示以下信息:↓

[root@win1 ~]# jps

1891 JournalNode

1944 Jps

1774 QuorumPeerMain

1、格式化namenode

[root@win1 ~]# hdfs namenode -format 格式化hdfs文件系统

(仅在第一次启动之前需要格式化,后面启动不需要格式化)

2、启动namenode

[root@win1 ~]# hadoop-daemon.sh start namenode 在节点1启动namenode

[root@win1 ~]# jps

2368 Jps

1891 JournalNode

2293 NameNode

1774 QuorumPeerMain

3、同步第一个namenode的生成元信息

[root@win2 ~]# hdfs namenode -bootstrapStandby 用第二个namenode同步第一个namenode的生成元信息,正确输出如下图↓。

(如果不进行这一步备namenode由于缺少元信息无法启动,在hadoop2namnode日志中会出现ERROR namenode.NameNode: Failed to start namenode.

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /hadoop/nn is in an inconsistent state: storage directory does not exist or is not accessible.

4、格式化zkfc

[root@win1 ~]# hdfs zkfc -formatZK 格式化zkfc无报错即为成功

仅在第一次启动之前需要格式化,后面启动不需要格式化)。(如果不进行这一步,会出现namenode无法向zookeeper注册,会出现两个namenode都为备的状态。

格式化如下图

没有报错即为成功,如下图:

5、使用start-all.sh同时启动hdfsyarn,如下图↓

(若没有配置ssh互信,启动时需要输入每一台机器的密码),可能节点二的resourcemanager没有启动,必须要手动启动

Win1:↓

Win2:↓手动启动resourcemanager

[root@win2 ~]# yarn-daemon.sh start resourcemanager

6、启动JobHistoryServer

[root@win1 ~]# mr-jobhistory-daemon.sh start historyserver 启动JobHistoryServer这样mapreduce运行历史任务可以查看。(可选)

启动成功可运行jps查看每个节点上运行的进程,正常情况如下

[root@win1 ~]# jps

9个进程↑

[root@win2 ~]# jps

8个进程↑

7、查看namenode状态

使用hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2查看准备namenode的状态,如下图

[root@win1 ~]# hdfs haadmin -getServiceState nn1

[root@win1 ~]# hdfs haadmin -getServiceState nn2

8、访问hdfsweb界面

访问hdfsweb界面,使用浏览器打开http://125.221.44.11:50070http://125.221.44.12结果如下图↓,能看到datanode的数据和启动datanode相同,表示启动成功

9、查看ResourceManager状态

[root@win1 ~]# yarn rmadmin -getServiceState rm1

standby 

[root@win1 ~]# yarn rmadmin -getServiceState rm2

active 

10、访问yarnweb界面

访问yarnweb界面,使用浏览器打开http://125.221.44.11:8088,结果如下图↓,表示yarn正常启动。(如果resourcemanager是主备部署,登录备resourcemanager时候会自动跳转到主。

三、HBASE的启动

注意:hbase依赖于zookeeper以及hdfs,需要保证hdfszookeeper已经正常运行,才可以开始启动hbase

1使用start-hbase.sh启动hbaseHMasterRegionServer

[root@win1 ~]# start-hbase.sh 如下图↓

2使用jps确保每个节点上对应的进程已成功启动。

Win1如下图↓

Win2如下图↓

Win3如下图↓

3使用Web输入http://192.168.10.30:16010,登录hbaseweb界面。如下图

四、HDFS HA测试

本实验为搭建HDFSHA环境,现测试HDFSHA

最小化系统需要安装组件,命令如→: yum -y install psmisc

下载完成后,必须重启集群→(关闭集群stop-all.sh 启动集群start-all.sh

  • 查看hadoop1active,杀掉hadoop1namenodehadoop2namenode自动升级为active,如下图

[root@win1 ~]# hdfs haadmin -getServiceState nn1

active

[root@win1 ~]# hdfs haadmin -getServiceState nn2

standby

五、YARN HA测试

1、查看Win1ResourceManageractive,杀掉Win1ResourceManagerWin2ResourceManager自动升级为active,如下图↓

  • Win1使用yarn-daemon.sh start resourcemanager启动resourcemanager

并使用yarn rmadmin -getServiceState rm1yarn rmadmin -getServiceState rm2查看yarn状态,如下图↓

[root@win1 conf]# yarn-daemon.sh start resourcemanager 开启resourcemanager,关闭用stop

[root@win1 conf]# yarn rmadmin -getServiceState rm1

[root@win1 conf]# yarn rmadmin -getServiceState rm2

六、HBase HA测试

1、打开hbaseweb界面,查看主备的hbase

http://125.221.44.11:16010

2、在win1使用jps查看HMaster的进程id,并使用kill杀掉HMaster

[root@win1 ~]# kill 19371 杀掉HMaster

  • 使用web界面查看备用HMaster的状态,如下图,备用Hmaster已经成功提升为主Hmaster

    七、HDFS测试

    1hadoop1上使用hdfs 命令上传文件到hdfs文件系统,执行hdfs dfs -put /etc/passwd  / 上传文件到hdfs的跟目录,使用hdfs dfs –ls /  查看hdfs跟下面的文件,正确结果如下图。

    [root@win1 etc]# hdfs dfs -put /etc/passwd / hdfs 命令上传文件到hdfs文件系统

    [root@win1 etc]# hdfs dfs -ls / 查看hdfs跟下面的文件

     

    passwdetc目录下已有的,若上传目录里没有的文件则不行,如下图↓)

  • 2下载文件到家目录

    [root@win2 ~]# hdfs dfs -get /passwd /root/ 下载刚刚上传的文件到家目录

     

     

    八、Hbase测试

    1使用hbase shell进入hbaseshell命令行。(上述会有一个jar冲突的警告,如果需要消除,需要移除hbase上那个jar包即可)

    [root@win1 etc]# hbase shell 进入hbaseshell命令行

  • 2查看集群状态和节点数量,使用status

    hbase(main):001:0> status

  • 3创建表,create ‘test’,‘c1’ hbase创建表create命令语法为:表名、列名1、列名2、列名3……

    hbase(main):005:0> create 'test','c1'

  • 4查看表,list

    hbase(main):006:0> list

  • 5给表写入数据

    hbase(main):003:0> put 'test','rowkey','c1','test'  

    导入数据的命令put的语法为表名、行值、列名(列名可加冒号,表示这个列簇下面还有子列)、列数据如图

  • 6全表扫描数据(scan 'test'

    hbase(main):006:0> scan 'test'

  • 7查询表的数据(get ‘test’,’rowkey’),根据条件查询,查询test表中rowrowkey的值。

    hbase(main):008:0>  get 'test','rowkey'

  • 8删除表,在删除表之前需要先让表失效才能删除。使用disable ‘test’,使表失效。drop ‘test’删除表。

    hbase(main):009:0> disable 'test'

    hbase(main):010:0> drop 'test'

    hbase(main):011:0> list

  • 九、Yarn2.0测试(wordcount任务)

    1原文件位于本机,执行如下命令:

    [root@hadoop etc]# hadoop jar /hadoop/soft/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount  file:///etc/passwd hdfs://125.221.44.11:8020/wordcount 任务完成如下图↓

  • 2、使用hdfs dfs -cat hdfs://125.221.44.11:8020/wordcount/part-r-00000,查看输出结果如下

  • 3将文件上传到hdfs,使用hdfs dfs -put /etc/passwd hdfs://192.168.10.30/ 执行命令如下

    [root@hadoop ~]# hadoop jar /hadoop/soft/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /passwd  /wordcountpasswd

  • 4使用hdfs dfs -cat hdfs://125.221.44.11:8020/wordcountpasswd/part-r-00000,查看输出结果,如下图

  • #——————————————————————————————————

    [root@hadoop ~]# hdfs dfs -cat hdfs://125.221.44.11:8020/wordcountpasswd/part-r-00000

    cat: Operation category READ is not supported in state standby

    原因:NameNode处于standby状态

    #——————————————————————————————————

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。