Hadoop2.8+HBase2.0+ZooKeeper3.4分布式集群环境搭建
发布日期:2021-10-10 12:33:28 浏览次数:2 分类:技术文章

本文共 13609 字,大约阅读时间需要 45 分钟。

Hadoop+HBase+ZooKeeper分布式集群环境搭建

概述

本次 Hadoop 集群安装实验,采用在 VMware 虚拟机下安装多个 CentOS 系统的

方式进行;3 个 CentOS 系统中,其中,1 个为 Master 机,作为 NameNode;另外 3
个为 Slave 机,作为 DataNode,均采用独立静态 IP 地址配置。

1. 安装准备

1.1 软件系统清单

序号 名称 描述
1 jdk-8u171-linux-i586.tar.gz 所有环境都需要的配置
2 VMware 虚拟机安装程序,这里采用 VMware12 模拟测试
3 CentOS-7-x86_64-DVD-1804.iso 集群操作系统
4 hadoop-2.8.3.tar.gz Hadoop 安装程序
5 hbase-2.0.0-bin.tar.gz HBase 安装程序
6 zookeeper-3.4.12.tar.gz 集群分布式应用程序协调服务

以下是hbase官网提供的Hbase和Hadoop版本兼容信息

  • “S” = supported(支持)
  • “X” = not supported(不支持)
  • “NT” = Not tested(未测试)
HBase-1.2.x HBase-1.3.x HBase-1.5.x HBase-2.0.x HBase-2.1.x
Hadoop-2.4.x S S X X X
Hadoop-2.5.x S S X X X
Hadoop-2.6.0 X X X X X
Hadoop-2.6.1+ S S X S X
Hadoop-2.7.0 X X X X X
Hadoop-2.7.1+ S S S S S
Hadoop-2.8.[0-1] X X X X X
Hadoop-2.8.2 NT NT NT NT NT
Hadoop-2.8.3+ NT NT NT S S
Hadoop-2.9.0 X X X X X
Hadoop-2.9.1+ NT NT NT NT NT
Hadoop-3.0.x X X X X X
Hadoop-3.1.0 X X X X X

1.2 IP 地址配置清单

集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下:

Hostname IP User Password
master 192.168.1.60 root root
weiqi1 192.168.1.61 root root
weiqi2 192.168.1.62 root root

三个节点均使用CentOS-7系统,为了便于维护,集群环境配置项最好使用相同用户名、用户密码、相同hadoop、hbase、zookeeper目录结构。

2. 准备工作

2.1 关闭防火墙

关闭firewalld防火墙:

$ systemctl status firewalld.service	#检查防火墙状态$ systemctl stop firewalld.service		#关闭防火墙$ systemctl disable firewalld.service	#禁止开机启动防火墙

关闭iptables防火墙:

$ systemctl status iptables			#检查防火墙状态$ systemctl stop iptables				#关闭防火墙$ systemctl disable iptables			#禁止开机启动防火墙

2.2 安装JDK

上传jdk-8u171-linux-i586.tar.gz安装包到根目录下新建的weiqi文件夹中,

进去到weiqi目录下,解压安装包:

$ tar -zxvf jdk-8u171-linux-i586.tar.gz

配置java环境变量,打开/etc/profile文件

$ nano /etc/profile

添加如下配置:

export JAVA_HOME=/weiqi/jdk1.8.0_171export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

然后重新加载配置文件使之生效:

$ source /etc/profile

检查java环境是否配置成功:

$ java -version

看到如下响应说明环境OK:

java version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)##################################################################################### 注:因为下载失误,下载了32位的jdk的同学,使用java、javac 检验java环境时提示为# [root@master weiqi]# java# -bash: /weiqi/jdk1.8.0_171/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录# 也别担心,仅需要安装64位程序编译即可:####################################################################################yum install glibc.i686

2.3 添加Hosts映射关系

分别在三个节点上修改hosts映射关系:

$ nano /etc/hosts

添加的内容如下:

192.168.1.60 master192.168.1.61 weiqi1192.168.1.62 weiqi2

2.4 集群之间SSH无密码登陆

CentOS默认安装了ssh,如果没有你需要先安装ssh 。

集群环境的使用必须通过ssh无密码登陆来执行,本机登陆本机必须无密码登陆,主机与从机之间必须可以双向无密码登陆,从机与从机之间无限制。

主要有三步:①生成公钥和私钥、②导入公钥到认证文件、③更改权限

分别在各个主机上生成密钥:

$ ssh-keygen -t rsa 								//生成秘钥

在weiqi1上:

$ cp ~/.ssh/id_rsa.pub ~/.ssh/weiqi1.id_rsa.pub		//复制备份$ scp ~/.ssh/weiqi1.id_rsa.pub master:~/.ssh		//拷贝到master准备认证

在weiqi2上:

$ cp ~/.ssh/id_rsa.pub ~/.ssh/weiqi2.id_rsa.pub		//复制备份$ scp ~/.ssh/weiqi2.id_rsa.pub master:~/.ssh		//拷贝到master准备认证

在master 上:

$ cd ~/.ssh$ cat id_rsa.pub >> authorized_keys$ cat weiqi1.id_rsa.pub >>authorized_keys			//导入到认证文件$ cat weiqi2.id_rsa.pub >>authorized_keys			//导入到认证文件$ scp authorized_keys weiqi1:~/.ssh					//更改权限 $ scp authorized_keys weiqi2:~/.ssh					//更改权限

测试:

[root@master ~]# ssh weiqi1Last login: Tue Jul 10 16:50:05 2018 from 192.168.1.97[root@weiqi1 ~]# [root@master ~]# ssh weiqi2Last login: Tue Jul 10 16:50:06 2018 from 192.168.1.97[root@weiqi2 ~]#

可通过exit退回到master上

3. Hadoop集群安装配置

3.1 安装置配置Hadoop

3.1.1 安装Hadoop

上传hadoop-2.8.3.tar.gz安装包到weiqi文件夹下

解压安装包:

$ tar -zxvf hadoop-2.8.3.tar.gz

进入到hadoop-2.8.3下:

分别创建如下相关文件:

$ mkdir hdfs$ mkdir hdfs/data		//DataNode存放文件夹$ mkdir hdfs/name		//NameNode存放文件夹$ mkdir hdfs/tmp		//数据临时存放文件夹

进入到etc/hadoop目录下,分别修改如下配置文件

3.1.2 配置core-site.xml

nano core-site.xml

fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/weiqi/hadoop-2.8.3/hdfs/tmp

3.1.3

$ nano

#添加JDK路径export JAVA_HOME=/weiqi/jdk1.8.0_171

3.1.4 配置hdfs-site.xml

$ nano hdfs-site.xml

dfs.namenode.name.dir
file:/weiqi/hadoop-2.8.3/hdfs/name
dfs.datanode.data.dir
file:/weiqi/hadoop-2.8.3/hdfs/data
dfs.replication
2

3.1.5 配置mapred-site.xml

$ nano mapred-site.xml

mapred.job.tracker
master:9001
mapreduce.framework.name
yarn

3.1.6

$ nano

#添加JDK路径export JAVA_HOME=/weiqi/jdk1.8.0_171

3.1.7 配置yarn-site.xml

$ nano yarn-site.xml

yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
master
yarn.log-aggregation-enable
true

3.1.8 配置 slaves

$ nano slaves

weiqi1weiqi2

3.2 部署他其他节点

$ scp -r /weiqi/hadoop-2.8.3 weiqi1:/weiqi/hadoop-2.8.3$ scp -r /weiqi/hadoop-2.8.3 weiqi2:/weiqi/hadoop-2.8.3

3.3 分别配置Hadoop环境变量

$ nano /etc/profile

添加:

#配置Hadoop环境变量export HADOOP_HOME=/weiqi/hadoop-2.8.3export HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

然后重新加载配置文件使之生效:

$ source /etc/profile

3.4 格式化namenode

进入master,格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

$ hdfs namenode -format

如出现包含以下结果,说明格式化成功了:

***************************************************************has been successfully formatted***************************************************/*** 注:如果没有出现successfully 等字符串,只要整个格式化过中没有抛出异常也是能正常运行的,* 我后面重新配置了一个环境,提示的是:* 19/02/23 16:02:05 INFO namenode.NameNode: SHUTDOWN_MSG: * /************************************************************* SHUTDOWN_MSG: Shutting down NameNode at hbase1/192.168.136.100* ************************************************************/* 在这段信息上面有个警告提示* 19/02/23 16:02:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable* Formatting using clusterid: CID-905d7034-eecc-4197-9ce7-7a4eebd9a263* 网上有教程说配置 hadoop-env.sh和yarn-env.sh 这两个文件中添加如下两行代码	export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native	export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"* 但是没有生效,不知道配置的版本不对还是位置不对,但无关大局,不会影响整个环境的运行,请放心使用* 当然,这个问题不修复,在启动Hadoop时也会又该警告,也是无语了* /

同时,也能在master的/weiqi/hadoop-2.8.3/hdfs/name生成了current文件夹

3.5 启动Hadoop

进入master

#若配置了环境变量$ start-all.sh-------------------------------------若没有配置环境变量进入:/weiqi/hadoop-2.8.3/$ sbin/start-all.sh

3.6 启动成功标志

在master上使用jps命令:

$ jps

[root@master ~]# jps10499 Jps1511 SecondaryNameNode1321 NameNode1659 ResourceManager

在weiqi1和weiqi2上使用jps命令

$ jps

[root@weiqi1 ~]# jps1234 DataNode1336 NodeManager6524 Jps

同时也能在浏览器上通过http://192.168.1.60:50070web端查看Hadoop信息

这里写图片描述

或者通过http://192.168.1.60:8088web端查看Hadoop信息

这里写图片描述

3.7 关闭Hadoop

关闭 master节点上的 hadoop

[root@master sbin]# stop-all.sh

4. ZooKeeper集群安装配置

4.1 安装配置 Zookeeper

上传zookeeper-3.4.12.tar.gz安装包到weiqi文件夹下

解压安装包:

$ tar -zxvf zookeeper-3.4.12.tar.gz

进入到zookeeper-3.4.12下:

分别创建如下相关文件:

$ mkdir data		//zookeeper数据存放文件夹$ mkdir logs		//zookeeper日志存放文件夹

进入到conf目录下,复制zoo_sample.cfgzoo.cfg

$ cp zoo_sample.cfg zoo.cfg

zoo.cfg文件下修改添加如下配置:

dataDir=/weiqi/zookeeper-3.4.12/dataserver.0=master:2888:3888server.1=weiqi1:2888:3888server.2=weiqi2:2888:3888

4.2 部署其他节点

分别复制zookeeper-3.4.12到其他节点下:

$ scp -r /weiqi/zookeeper-3.4.12 weiqi1:/weiqi/zookeeper-3.4.12$ scp -r /weiqi/zookeeper-3.4.12 weiqi2:/weiqi/zookeeper-3.4.12

分别配置每台主机的zookeeper环境变量:

$ nano /etc/profile

添加:

#配置zookeeper环境变量export ZOOKEEPER_HOME=/weiqi/zookeeper-3.4.12export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

然后重新加载配置文件使之生效:

$ source /etc/profile

分别在每台主机的/weiqi/zookeeper-3.4.12/data目录下创建myid文件,同时和zoo.cfg文件中的server对应,mastermyid中填0weiqi1myid1weiqi2myid2,

如下:

master下:

[root@master ~]# nano /weiqi/zookeeper-3.4.12/data/myid  GNU nano 2.3.1                        文件: /weiqi/zookeeper-3.4.12/data/myid                0

weiqi1下:

[root@weiqi1  ~]# nano /weiqi/zookeeper-3.4.12/data/myid  GNU nano 2.3.1                        文件: /weiqi/zookeeper-3.4.12/data/myid                1

weiqi2下:

[root@weiqi2 ~]# nano /weiqi/zookeeper-3.4.12/data/myid  GNU nano 2.3.1                        文件: /weiqi/zookeeper-3.4.12/data/myid                2

4.3 启动ZooKeeper集群

在ZooKeeper集群的每个节点上,执行启动ZooKeeper服务的脚本:

#若配置了环境变量$ zkServer.sh start-------------------------------------若没有配置环境变量进入:/weiqi/zookeeper-3.4.12$ /bin/zkServer.sh start

查看服务是否启动成功:

#若配置了环境变量$ zkServer.sh status-------------------------------------若没有配置环境变量进入:/weiqi/zookeeper-3.4.12$ /bin/zkServer.sh status

成功状态如下:

貌似leader节点是随机分配的:

[root@master ~]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /weiqi/zookeeper-3.4.12/bin/../conf/zoo.cfgMode: leader

follower

[root@weiqi1 ~]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /weiqi/zookeeper-3.4.12/bin/../conf/zoo.cfgMode: follower

4.4 启动成功标志

在master上使用jps命令:

$ jps

[root@master ~]# jps2063 QuorumPeerMain

在weiqi1和weiqi2上使用jps命令

$ jps

[root@weiqi1 ~]# jps1593 QuorumPeerMain

4.5 关闭Zookeeper

关闭 master节点上的 zookeeper 和 weiqi1,weiqi2节点的 zookeeper 的命令式一样的。

命令如下:

[root@master bin]# zkServer.sh stop

5. HBase集群安装配置

5.1 安装配置HBase

5.1.1 安装 HBase

上传hbase-2.0.0-bin.tar.gz安装包到weiqi文件夹下

解压安装包:

$ tar -zxvf hbase-2.0.0-bin.tar.gz

进入到hbase-2.0.0-bin下:

进入到conf目录下,分别修改如下配置文件

5.1.2

$ nano

#指定Java路径export JAVA_HOME=/weiqi/jdk1.8.0_171#配置hbase日志输出地址export HBASE_LOG_DIR=${HBASE_HOME}/logs#指定Hadoop配置export HBASE_CLASSPATH=/weiqi/hadoop-2.8.3/etc/hadoop#禁用默认的zookeeper,使用单独的zookeeperexport HBASE_MANAGES_ZK=false

5.1.3 配置hbase-site.xml

$ nano hbase-site.xml

hbase.rootdir
hdfs://master:9000/hbase
hbase.cluster.distributed
true
hbase.master.info.port
16010
hbase.regionserver.info.port
16030
hbase.zookeeper.property.clientPort
2181
hbase.zookeeper.quorum
master,weiqi1,weiqi2
zookeeper.session.timeout
60000000
dfs.support.append
true
hbase.coprocessor.user.region.classes
org.apache.hadoop.hbase.coprocessor.AggregateImplementation

5.1.4 更改 regionservers

分别把每个节点下的hostname填写到该文件中

$ nano regionservers

weiqi1weiqi2

5.2 部署他其他节点

$ scp -r /weiqi/hbase-2.0.0-bin weiqi1:/weiqi/hbase-2.0.0-bin$ scp -r /weiqi/hbase-2.0.0-bin weiqi2:/weiqi/hbase-2.0.0-bin

5.3 分别配置Hbase环境变量

$ nano /etc/profile

添加:

#配置hbase环境变量export HBASE_HOME=/weiqi/hbase-2.0.0export PATH=$PATH:$HBASE_HOME/bin

然后重新加载配置文件使之生效:

$ source /etc/profile

5.4 启动Hbase集群

进入master

#若配置了环境变量$ start-hbase.sh-------------------------------------若没有配置环境变量进入:/weiqi/hbase-2.0.0/$ bin/start-hbase.sh

5.4.1 hbase 启动命令整理

启动HBase集群:bin/start-hbase.sh#**单独启动(有时在运行时进程会关闭,需在对应的服务器上运行)**单独启动一个HMaster进程:bin/hbase-daemon.sh start master单独停止一个HMaster进程:bin/hbase-daemon.sh stop master单独启动一个HRegionServer进程:bin/hbase-daemon.sh start regionserver单独停止一个HRegionServer进程:bin/hbase-daemon.sh stop regionserver

5.5 启动成功标志

在master上使用jps命令:

$ jps

[root@master ~]# jps2880 HMaster					#hbase master进程1511 SecondaryNameNode			#hadoop进程1321 NameNode                   #hadoop master进程1659 ResourceManager			#hadoop进程16029 Jps2063 QuorumPeerMain				#zookeeper进程

在weiqi1和weiqi2上使用jps命令

$ jps

[root@weiqi1 ~]# jps9953 Jps1234 DataNode                    #hadoop slave进程1336 NodeManager                 #hadoop slave进程1593 QuorumPeerMain              #zookeeper进程1900 HRegionServer               #hbase slave进程

同时也能在浏览器上通过http://192.168.1.60:16010web端查看Hbase信息

这里写图片描述

5.6 关闭Hbase集群

关闭 master节点上的 hbase

[root@master ~]# stop-hbase.sh

5.7 进入hbase shell进行验证

[root@master ~]# hbase shellSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/weiqi/hbase-2.0.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/weiqi/hadoop-2.8.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]HBase ShellUse "help" to get list of supported commands.Use "exit" to quit this interactive shell.Version 2.0.0, r7483b111e4da77adbfc8062b3b22cbe7c2cb91c1, Sun Apr 22 20:26:55 PDT 2018Took 0.0018 seconds                                                                                                                  hbase(main):001:0> listTABLE                                                        0 row(s)Took 0.8049 seconds                                                                                                                  => []hbase(main):002:0> status1 active master, 0 backup masters, 2 servers, 0 dead, 2.0000 average loadTook 0.3276 seconds                                                                                                                  hbase(main):003:0>

转载地址:https://blog.csdn.net/qq_26848943/article/details/81011709 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:fuelux tree简单配置使用(动态数据+字体图标)
下一篇:记录一下Linux下常用的命令相关

发表评论

最新留言

不错!
[***.144.177.141]2024年04月13日 04时50分02秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章