Hadoop-3.1.3高可用集群部署

Posted 兴趣e族

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop-3.1.3高可用集群部署相关的知识,希望对你有一定的参考价值。

1. 部署前提

操作用户:hadoop

操作目录:/home/hadoop/apps

操作机器(3台):hadoop1,hadoop2,hadoop3

3台机器都是Centos7,安装了JDK1.8和一个已启动的Zookeeper-3.5.7集群。

以下是添加用户、配置免密登录,关闭防火墙等操作:

# 3台机器都需进行如下配置
# 新增hadoop用户
useradd hadoop
passwd hadoop
New password:
Retype new password:

授权 root 权限,在root下面加一条hadoop的hadoop ALL=(ALL) ALL
#修改权限
chmod 777 /etc/sudoers
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
#恢复权限
chmod 440 /etc/sudoers

# 配置免密登录
#进入到我的home目录,
su - hadoop
ssh-keygen -t rsa (连续按四个回车)
#执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
#将公钥拷贝到要免密登录的机器上
ssh-copy-id hadoop2
ssh-copy-id hadoop3

# 主机名ip地址映射
sudo vim /etc/hosts
192.168.62.161 hadoop1
192.168.62.162 hadoop2
192.168.62.163 hadoop3

# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 禁用selinux
sudo vim /etc/selinux/config
SELINUX=enforcing --> SELINUX=disabled

# 配置时间同步
# 安装ntpdate工具
sudo yum -y install ntp ntpdate
# 设置系统时间与网络时间同步
ntpdate 0.asia.pool.ntp.org
# 将系统时间写入硬件时间
hwclock --systohc


2. 集群节点规划

Hadoop-3.1.3高可用集群部署_yarn

此集群中Hadoop的NameNode是HA的,Yarn的ResourceManger也是HA的,从而保证了Hadoop集群的高可用。


3. 下载

在hadoop1机器上执行

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz


4. 解压

tar -zxvf hadoop-3.1.3.tar.gz


5. 修改环境变量

# 添加环境变量
sudo vim /etc/profile
export HADOOP_HOME=/home/hadoop/apps/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 刷新配置
source /etc/profile


6. 修改配置文件

# 配置文件所在目录
cd /home/hadoop/apps/hadoop-3.1.3/etc/hadoop


6.1. 修改hadoop-env.sh

vim hadoop-env.sh
# Set Hadoop-specific environment variables here.
#指定JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_212
#指定hadoop用户,hadoop3.x之后必须配置(我的用户名就叫hadoop)
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_ZKFC_USER=hadoop
export HDFS_JOURNALNODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop


6.2. 修改core-site.xml

vim core-site.xml 
<configuration>
<!--集群名称-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value> </property>
<!--临时目录:提前创建好-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoop_tmp_data</value>
</property>
<!--webUI展示时的用户-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
<!--高可用依赖的zookeeper的通讯地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<!--用于连接hive server2(可选项)-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>


6.3. 修改hdfs-site.xml

vim hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--定义hdfs集群中的namenode的ID号-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--定义namenode的主机名和rpc协议的端口-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop2:8020</value>
</property>
<!--定义namenode的主机名和http协议的端口-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop2:9870</value>
</property>
<!--定义共享edits的url-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/ns1</value>
</property>
<!--定义hdfs的客户端连接hdfs集群时返回active namenode地址-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!--hdfs集群中两个namenode切换状态时的隔离方法-->
<propertyHadoop 3HDFS 高可用环境搭建(详细图文教程)

Memcached + Magent + keepalived高可用集群

Kubernetes高可用集群二进制部署

Kubernetes高可用集群二进制部署

如何在Kubernetes中部署一个高可用的PostgreSQL集群环境

集群部署LVS(dr模式)+Keepalived 高可用集群图文步骤详解