IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop3.1.4 高可用从安装到放弃 -> 正文阅读

[大数据]Hadoop3.1.4 高可用从安装到放弃

Hadoop3.1.4 高可用从安装到放弃

环境准备

192.168.8.11 node01
192.168.8.12 node02
192.168.8.13 node03

  • IP配置
[root@centos ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=13aeacc9-7d29-4660-8594-1e12e666a59d
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.8.11
NETMASK=255.255.255.0
GATEWAY=192.168.8.2
DNS1=8.8.8.8
DNS2=114.114.114.114

:wq #保存退出

#重启网卡
[root@centos ~]# systemctl restart network
  • 主机域名
hostnamectl set-hostname node01
  • IP域名映射
vim /etc/hosts

192.168.8.11 node01
192.168.8.12 node02
192.168.8.13 node03

#查看配置结果
cat /etc/hosts
  • 防火墙
# 关闭防火墙
systemctl stop firewalld.service

#设置防火墙不可用
systemctl disable firewalld.service
  • selinux
#selinux文件
lrwxrwxrwx. 1 root root 17 Jul 17 06:32 /etc/sysconfig/selinux -> ../selinux/config

#编辑
vim /etc/sysconfig/selinux
#或者
vim /etc/selinux/config

#把enforcing改成disabled
SELINUX=disabled
jdk8
# 解压
tar zxvf jdk-8u191-linux-x64.tar.gz -C /opt/module/


#配置环境变量
vim /etc/profile

# JAVA_HOME 指定jdk的路径,也就是解压的路径
export JAVA_HOME=/opt/module/jdk1.8.0_191

# 指定classpath
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

#保存退出
:wq

#读取环境变量,生效
source /etc/profile

# 验证是否成功
java -version
免密登录
ssh-keygen -t rsa

ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03

ntp时间同步
#安装
yum install -y ntp

#服务端ntp配置文件
vim /etc/ntp.conf

restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
server node01
fudge node01  stratum 10

#本地硬件时间
vim /etc/sysconfig/ntpd
SYNC_HWLOCK=yes

#客户端ntp配置文件
server node01 prefer

#启动ntp服务
systemctl start ntpd
#开机自启
systemctl enable ntpd

#验证
ntpstat
#或
ntpq -p
zookeeper
# 解压安装
tar zxvf zookeeper-3.4.14.tar.gz -C /opt/module/

# 环境变量配置
vim /etc/profile
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#保存退出
:wq

#读取环境变量
source /etc/profile

#验证是否成功
echo $PATH

#创建zookeeper数据存放目录
mkdir /opt/module/zookeeper-3.4.14/tmp

# 修改zookeeper配置
cp /opt/module/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/module/zookeeper-3.4.14/conf/zoo.cfg

vim /opt/module/zookeeper-3.4.14/conf/zoo.cfg

#修改zookeeper数据存放目录
dataDir=/opt/module/zookeeper-3.4.14/tmp

#添加zookeeper服务主机端口
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

#node01上dataDir创建myid文件
echo 1 > /opt/module/zookeeper-3.4.14/tmp/myid

#node012上dataDir创建myid文件
echo 2 > /opt/module/zookeeper-3.4.14/tmp/myid

#node03上dataDir创建myid文件
echo 3 > /opt/module/zookeeper-3.4.14/tmp/myid

# 验证是否创建成功
cat /opt/module/zookeeper-3.4.14/tmp/myid

#node01、node02、node03 启动 zookeeper
/opt/module/zookeeper-3.4.14/bin/zkServer.sh start

#验证是否启动成功
jps

#查看选举情况
/opt/module/zookeeper-3.4.14/bin/zkServer.sh status

#node01、node02、node03 关闭 zookeeper
/opt/module/zookeeper-3.4.14/bin/zkServer.sh stop

Hadoop配置
  • 解压安装
tar -zxvf /opt/software/hadoop-3.1.4.tar.gz -C /opt/module/
  • 配置环境变量
    vim /etc/profile
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 配置hadoop_env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_191
export HADOOP_HOME=/opt/module/hadoop-3.1.4

# 以root用户启动hadoop需要如下配置。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
# 先创建下列配置所需目录
mkdir -p /data/dfs/tmp
mkdir -p /data/dfs/dn
mkdir -p /data/dfs/nn
mkdir -p /data/dfs/jn
  • core-site.xml
<!-- 指定hdfs的nameservice为mycluster -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <!-- 此目录一定要创建 -->
    <value>/data/dfs/tmp</value>
</property>
    <!-- 指定zookeeper集群地址 -->
<property>
    <name>ha.zookeeper.quorum</name>
    <value>node01:2181,node02:2181,node03:2181</value>
</property>
  • hdfs-site.xml
<!-- 配置副本数为3 -->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<!-- 指定hdfs的nameservice为mycluster,需要和core-site.xml中的“fs.defaultFS”保持?致 -->
<property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
</property>

 <!-- 配置namenode和datanode的工作目录-数据存储目录 -->
 <property>
    <name>dfs.namenode.name.dir</name>
    <value>/data/dfs/nn</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>/data/dfs/dn</value>
</property>

<!-- mycluster下面有两个NameNode,分别是nn1,nn2 -->
<property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
</property>

<!-- nn1的RPC通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>node01:8020</value>
</property>

<!-- nn2的RPC通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>node02:8020</value>
</property>

<!-- nn1的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>node01:9870</value>
</property>

<!-- nn2的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>node02:9870</value>
</property>

<!-- 指定活跃NameNode的元数据在JournalNode上的存放位置 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <!-- 此目录一定要创建 -->
    <value>/data/dfs/jn</value>
</property>

<!-- 下面的配置都是关于故障转移 -->
<!-- 开启NameNode失败自动切换 -->
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <!-- true:表示自动切换;false:手动切换 -->
    <value>true</value>
</property>

<!-- NameNode自动切换实现方式 -->
<property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 下面配置的是隔离机制 -->
<!-- 配置“状态隔离”机制方法,就是主NameNode发生故障以后要进行隔离,防止“脑裂” -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
        sshfence
        shell(/bin/true)
    </value>
</property>

<!-- 使sshfence隔离机制时需要ssh免登陆 -->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <!-- 注意此密钥文件,根据自己的实际路径,与实际名称来写 -->
    <value>/root/.ssh/id_dsa</value>
</property>

<!-- 配置sshfence隔离机制超时时间 -->
<property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
</property>

  • mapred-site.xml
<!-- 指定mr框架为yarn方式 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
 </property>

<!-- 指定mapreduce jobhistory地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node01:10020</value>
</property>

<!-- 任务历史服务器的web地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node01:19888</value>
</property>
  • yarn-site.xml
<!-- 开启RM高可用 -->
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>
    
<!-- 指定RM的cluster id -->
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
</property>

<!-- 指定RM的名字 -->
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>

<!-- 分别指定RM的地址 -->
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>node01</value>
</property>

<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>node02</value>
</property>

<!-- 指定zk集群地址 -->
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>node01:2181,node02:2181,node03:2181</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>86400</value>
</property>

<!-- 启用自动恢复 -->
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>

<!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
  • 配置work节点

vim /opt/module/hadoop-3.1.4/etc/hadoop/workers

node01
node02
node03
初始化集群
  • 启动zookeeper
zkServer.sh start
zkServer.sh status
  • 初始化jn
./hadoop-daemon.sh start journalnode
  • 启动nn
# node01格式化namenode
hdfs namenode -format
hadoop-daemon.sh start namenode

#node02拷贝node01的元数据信息
hdfs namenode -bootstrapStandby

#在node01节点zookeeper初始化HA
hdfs zkfc -formatZK
  • 启动hdfs
start-dfs.sh
  • 启动yarn
start-yarn.sh
  • 启动jobhistory
mapred --daemon start historyserver
验证集群HA
hdfs haadmin -getServiceState nn1

# node01节点关闭namenode查看是否高可用
hadoop-daemon.sh stop namenode

# 重新启动node01节点namenode
hadoop-daemon.sh start namenode
关闭集群
#在node01关闭HDFS、yarn、historyserver

stop-dfs.sh

stop-yarn.sh

mapred --daemon stop historyserver

#在node01、node02、node03关闭zookeeper
zkServer.sh stop
关机后重新开启集群
#在node01、node02、node03关闭zookeeper
zkServer.sh start
zkServer.sh status

#在node01关闭HDFS、yarn、historyserver
start-dfs.sh

start-yarn.sh

mapred --daemon start historyserver
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:45:16  更:2021-07-25 11:46:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/30 21:56:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码