博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据系列(hadoop) Hadoop+Zookeeper 3节点高可用集群搭建
阅读量:4342 次
发布时间:2019-06-07

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

---恢复内容开始---

一、集群规划

主机名 ip NameNode DataNode  Yarn ZooKeeper JournalNode
node01 192.168.1.201
node02 192.168.1.202
node03 192.168.1.203

 

 

 

 

注:所有操作都是在root用户下操作,如需其他用户,请自行创建。注意文件权限问题。

 

二、环境搭建

1、安装JDK

1.1  下载jdk 

这里使用的是jdk-8u144-linux-x64.tar.gz,下载地址:链接: 密码:sot0

将下载的jdk 上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/[root@node01 opt]# lltotal 727676-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz-rw-r--r--  1 root root  35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr 目录下

[root@node01 ~]# cd /usr/

新建app目录,用以安装所需软件

[root@node01 usr]# mkdir -p /usr/app

进入app目录

[root@node01 opt]# cd /usr/app/

解压jdk到当前路径下

[root@node01 app]# tar zxvf /opt/jdk-8u144-linux-x64.tar.gz

建立jdk软连接

[root@node01 app]# ln -s jdk1.8.0_144/ java

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/javaexport CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/bin

使配置生效

[root@node01 app]# source /etc/profile

查看Java版本,显示如下则jdk安装完成

[root@node01 app]# java -versionjava version "1.8.0_144"Java(TM) SE Runtime Environment (build 1.8.0_144-b01)Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

 

根据以上流程,分别在node02、node03 节点上完成jdk 安装。

 

2、安装zookeeper

下载zookeeper 

这里使用的是zookeeper-3.4.10.tar.gz,下载地址:链接:链接: 密码:ntxo

将下载的zookeeper上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/[root@node01 opt]# lltotal 727676-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz -rw-r--r-- 1 root root 35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr/app 目录下

[root@node01 ~]# cd /usr/app/

解压zookeeper到当前路径下

[root@node01 app]# tar zxvf /opt/zookeeper-3.4.10.tar.gz

建立zookeeper软连接

[root@node01 app]# ln -s zookeeper-3.4.10/ zookeeper

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/javaexport CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/libexport ZOOKEEPER_HOME=/usr/app/zookeeper export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

使配置生效

[root@node01 app]# source /etc/profile

切换到conf目录,修改zookeepe配置文件

[root@node01 app]# cd /usr/app/zookeeper/conf/[root@node01 conf]# cp zoo_sample.cfg zoo.cfg [root@node01 conf]# vi zoo.cfg 

按照如下内容修改zoo.cfg 然后保存

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/app/zookeeper/datadataLogDir=/usr/app/zookeeper/datalog# the port at which the clients will connectclientPort=21810# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1server.1=node01:28880:38880server.2=node02:28880:38880server.3=node03:28880:38880

在zookeeper目录下创建data和datalog两个目录

[root@node01 conf]# mkdir -p /usr/app/zookeeper/data[root@node01 conf]# mkdir -p /usr/app/zookeeper/datalog

在data目录下创建myid文件并添加内容为1

[root@node01 conf]# cd /usr/app/zookeeper/data [root@node01 data]# echo 1 > myid

根据以上步骤在node02、node03节点安装好zookeeper

注:node02节点上的myid内容为2,node03节点上的myid内容为3。

三个节点的zookeeper配置完成后可以测试安装是否成功

在三个节点上分别执行如下命令启动zookeeper

[root@node01 data]# zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED

 分别查看三个节点的状态,可以看到一个leader和两个follower,说明zookeeper安装成功。

[root@node01 data]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: follower
[root@node02 data]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: leader
[root@node03 hadoop]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: follower

分别停止三个节点上的zookeeper

[root@node01 data]# zkServer.sh stop

 

3、安装hadoop

下载hadoop

这里使用的是 hadoop-2.7.4.tar.gz 下载地址:链接: 密码:sz3c

将下载的hadoop上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/[root@node01 opt]# lltotal 727676-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz-rw-r--r--  1 root root  35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr/app 目录下

[root@node01 ~]# cd /usr/app/

解压hadoop到当前路径下

[root@node01 app]# tar zxvf /opt/hadoop-2.7.4.tar.gz

建立hadoop软连接

[root@node01 app]# ln -s hadoop-2.7.4/ hadoop

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/java

export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ZOOKEEPER_HOME=/usr/app/zookeeper
export HADOOP_HOME=/usr/app/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效

[root@node01 app]# source /etc/profile

切换到hadoop目录,分别创建journal、hdfs/data、hdfs/name 路径

[root@node01 app]# cd /usr/app/hadoop[root@node01 hadoop]# mkdir journal [root@node01 hadoop]# mkdir -p hdfs/name [root@node01 hadoop]# mkdir -p hdfs/data

切换到配置文件目录

[root@node01 hadoop]# cd /usr/app/hadoop/etc/hadoop/

将如下代码写入 core-site.xml

[root@node01 hadoop]# vi core-site.xml

<configuration>

<!-- 指定hdfs的nameservice为ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/app/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:21810,node02:21810,node03:21810</value>
</property>
</configuration>

将如下代码写入到 hdfs-site.xml

[root@node01 hadoop]# vi hdfs-site.xml

dfs.nameservices
ns
dfs.ha.namenodes.ns
nn1,nn2
dfs.namenode.rpc-address.ns.nn1
node01:9000
dfs.namenode.http-address.ns.nn1
node01:50070
dfs.namenode.rpc-address.ns.nn2
node02:9000
dfs.namenode.http-address.ns.nn2
node02:50070
dfs.namenode.shared.edits.dir
qjournal://node01:8485;node02:8485;node03:8485/ns
dfs.journalnode.edits.dir
/usr/app/hadoop/journal
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.ns
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.namenode.name.dir
file:///usr/app/hadoop/hdfs/name
dfs.datanode.data.dir
file:///usr/app/hadoop/hdfs/data
dfs.replication
2
dfs.webhdfs.enabled
true

将如下代码写入到  mapred-site.xml

[root@node01 hadoop]# cp mapred-site.xml.template mapred-site.xml [root@node01 hadoop]# vi mapred-site.xml

<configuration>

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

 

将如下代码写入到 yarn-site.xml

[root@node01 hadoop]# vi yarn-site.xml

<configuration>

  <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <!-- 指定resourcemanager地址 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node03</value>
  </property>
</configuration>

修改 hadoop-env.sh

找到文件的export JAVA_HOME=${JAVA_HOME} 一行,将其修改为 export JAVA_HOME=/usr/app/java

修改 slaves 文件

node01node02node03

按照如上步骤将node02、node03节点的hadoop配置完成

至此,Hadoop HA 集群环境搭建完成,以下开始测试集群

4、集群启动

分别在node01、node02、node03 三个节点执行以下命令启动zookeeper

[root@node01 hadoop]# zkServer.sh start

验证zookeeper集群状态

[root@node01 data]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: follower
[root@node02 data]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: leader
[root@node03 hadoop]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/app/zookeeper/bin/../conf/zoo.cfgMode: follower启动 

 在node01上启动journalnode集群

[root@node01 hadoop]# hadoop-daemons.sh start journalnode

 执行jps命令,可以查看到JournalNode的java进程pid

在node01上格式化zkfc

[root@node01 hadoop]# hdfs zkfc -formatZK

在node01上格式化hdfs

[root@node01 hadoop]# hadoop namenode -format

在node01上启动namenode

[root@node01 hadoop]# hadoop-daemon.sh start namenode

在node02上启动数据同步和standby的namenode

[root@node01 hadoop]# hdfs namenode -bootstrapStandby
[root@node01 hadoop]# hadoop-daemon.sh start namenode

在node01 上启动datanode

[root@node01 hadoop]# hadoop-daemons.sh start datanode

在node03上启动yarn

[root@node03 hadoop]# start-yarn.sh

在node01上启动zkfc

[root@node01 hadoop]# hadoop-daemons.sh start zkfc

 

全部启动后分别在node01、node02、node03上执行jps 可以看到下面这些进程

[root@node01 hadoop]# jps7073 QuorumPeerMain2406 DFSZKFailoverController2150 DataNode2248 NodeManager2536 NameNode1849 JournalNode7882 Jps
[root@node02 data]# jps1654 QuorumPeerMain3430 Jps1895 DataNode1993 NodeManager1707 JournalNode1806 NameNode2126 DFSZKFailoverController
[root@node03 hadoop]# jps1604 QuorumPeerMain2518 Jps1961 NodeManager1756 DataNode1869 ResourceManager1679 JournalNode

4、测试HA高可用性

http://192.168.1.202:50070/dfshealth.html#tab-overview

 

 http://192.168.1.201:50070/dfshealth.html#tab-overview

 在node02(active)节点关闭namenode

[root@node02 hadoop]# hadoop-daemon.sh stop namenode

 

 

  在node02(active)节点开启namenode

 

[root@node02 hadoop]# hadoop-daemon.sh start namenode

  

 

 

---恢复内容结束---

转载于:https://www.cnblogs.com/YellowstonePark/p/7750213.html

你可能感兴趣的文章
行内元素 块状元素 内联块状元素
查看>>
idea clion编译器
查看>>
java mysql与.net MSSQL性能测试
查看>>
unity 场景重新载入
查看>>
自动化测试用例设计学习心得总结
查看>>
Centos7在单用户模式下重置root密码
查看>>
使用jQuery的 autocomplete 实现输入框 自动提示补全
查看>>
201521123032《Java程序设计》第5周学习总结
查看>>
CSS3_02之2D、3D动画
查看>>
一个快速搜索下载jar包的网站
查看>>
flex加载元件的几种方式
查看>>
eclipse 插件,直接打开文件路径
查看>>
开发ShellCode的艺术
查看>>
numpy创建array【老鱼学numpy】
查看>>
day49 django 练习笔记
查看>>
纯css进度条效果
查看>>
【日志】-2013.10.31
查看>>
ThreadPool
查看>>
Sencha Visual Studio(IDE插件)
查看>>
数组,列表之间的若干转换以及若干数组常用操作方法
查看>>