搭建HDFS的HA环境(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传到2和3
[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能够TAB出start-hbase.sh 即为编辑成功,如下↓
[root@win1 conf]# start-hbase.sh
把配置好的环境变量传到2和3
注意:Hbase安装需要修改hbase-env.sh、hbase-site.xml、regionservers 配置文件,(默认没有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复制到habse的conf目录下。结果如下↓
[root@win1 conf]# cp /hadoop/soft/hadoop-2.7.7/etc/hadoop/hdfs-site.xml (空格)/hadoop/soft/hbase-1.3.2/conf/
二、Hadoop启动
以下配置需保证前面配置无误,且需要JN、ZK、都已启动且环境变量正确无误,使用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由于缺少元信息无法启动,在hadoop2的namnode日志中会出现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同时启动hdfs及yarn,如下图↓
(若没有配置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 nn1和hdfs haadmin -getServiceState nn2查看准备namenode的状态,如下图↓
[root@win1 ~]# hdfs haadmin -getServiceState nn1
[root@win1 ~]# hdfs haadmin -getServiceState nn2
8、访问hdfs的web界面
访问hdfs的web界面,使用浏览器打开http://125.221.44.11:50070和http://125.221.44.12结果如下图↓,能看到datanode的数据和启动datanode相同,表示启动成功。
9、查看ResourceManager状态
[root@win1 ~]# yarn rmadmin -getServiceState rm1
standby
[root@win1 ~]# yarn rmadmin -getServiceState rm2
active
10、访问yarn的web界面
访问yarn的web界面,使用浏览器打开http://125.221.44.11:8088,结果如下图↓,表示yarn正常启动。(如果resourcemanager是主备部署,登录备resourcemanager时候会自动跳转到主。)
三、HBASE的启动
注意:hbase依赖于zookeeper以及hdfs,需要保证hdfs及zookeeper已经正常运行,才可以开始启动hbase
1、使用start-hbase.sh启动hbase的HMaster、RegionServer。
[root@win1 ~]# start-hbase.sh 如下图↓
2、使用jps确保每个节点上对应的进程已成功启动。
Win1如下图↓
Win2如下图↓
Win3如下图↓
3、使用Web输入http://192.168.10.30:16010,登录hbase的web界面。如下图↓
四、HDFS HA测试
本实验为搭建HDFS的HA环境,现测试HDFS的HA,
最小化系统需要安装组件,命令如→: yum -y install psmisc
下载完成后,必须重启集群→(关闭集群stop-all.sh 启动集群start-all.sh)
- 查看hadoop1为active,杀掉hadoop1的namenode,hadoop2的namenode自动升级为active,如下图↓
[root@win1 ~]# hdfs haadmin -getServiceState nn1
active
[root@win1 ~]# hdfs haadmin -getServiceState nn2
standby
五、YARN HA测试
1、查看Win1的ResourceManager为active,杀掉Win1的ResourceManager,Win2的ResourceManager自动升级为active,如下图↓
- 在Win1使用yarn-daemon.sh start resourcemanager启动resourcemanager,
并使用yarn rmadmin -getServiceState rm1和yarn 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、打开hbase的web界面,查看主备的hbase。
2、在win1使用jps查看HMaster的进程id,并使用kill杀掉HMaster。
[root@win1 ~]# kill 19371 杀掉HMaster
- 使用web界面查看备用HMaster的状态,如下图,备用Hmaster已经成功提升为主Hmaster
七、HDFS测试
1、在hadoop1上使用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跟下面的文件
(passwd是etc目录下已有的,若上传目录里没有的文件则不行,如下图↓)
-
2、下载文件到家目录
[root@win2 ~]# hdfs dfs -get /passwd /root/ 下载刚刚上传的文件到家目录
八、Hbase测试
1、使用hbase shell进入hbase的shell命令行。(上述会有一个jar冲突的警告,如果需要消除,需要移除hbase上那个jar包即可)
[root@win1 etc]# hbase shell 进入hbase的shell命令行
-
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表中row为rowkey的值。
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状态
#——————————————————————————————————
- 点赞
- 收藏
- 关注作者
评论(0)