hadoop(3) 搭建hadoop-HA_hadoop3 ha

一给  金牌会员 | 2025-3-12 00:12:54 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 979|帖子 979|积分 2937

vi /etc/sysconfig/network-scripts/ifcfg-ens33
  1. node01节点的IPADDR配置为192.168.132.101  
  2. node02节点的IPADDR配置为192.168.132.102  
  3. node03节点的IPADDR配置为192.168.132.103
复制代码
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.132.101
NETMASK=255.255.255.0
GATEWAY=192.168.132.2
DNS1=8.8.8.8
  1. 3)DNS配置
复制代码
#编辑/etc/resolv.conf文件
vi /etc/resolv.conf
  1. node01节点、node01节点、node03节点都配置nameserver为8.8.8.8
复制代码
nameserver 8.8.8.8
  1. 4)重启网卡  
  2. node01节点、node01节点、node03节点都需重启网卡
复制代码
systemctl restart network
  1. ###### 3.新建用户并添加sudo权限
  2. 1)添加用户:useradd 用户名  
  3. node01节点、node01节点、node03节点都添加hadoop用户
复制代码
useradd hadoop
  1. 2)修改密码:passwd 用户名  
  2. node01节点、node01节点、node03节点都修改hadoop密码
复制代码
passwd hadoop
  1. 3)修改sudoers文件,给用户sudo权限  
  2. node01节点、node01节点、node03节点都在sudoers下添加一行:hadoop ALL=(ALL) ALL
复制代码
#修改sudoers权限
chmod 777 /etc/sudoers
#修改sudoers文件
vi /etc/sudoers
#在文件/etc/sudoers的root ALL=(ALL) ALL下添加一行
hadoop ALL=(ALL) ALL
#将sudoers文件权限改返来
chmod 440 /etc/sudoers
  1. 4)修改hosts文件
复制代码
#编辑/etc/hosts文件
vi /etc/hosts
  1. node01节点、node01节点、node03节点都做以下配置
复制代码
#在/etc/hosts下添加
192.168.132.101 node01
192.168.132.102 node02
192.168.132.103 node03
  1. 5)修改hostname文件
复制代码
#修改/etc/hostname文件
vi /etc/hostname
  1. node01节点配置为node01  
  2. node02节点配置为node02  
  3. node03节点配置为node03
复制代码
#将/etc/hostname的文本修改为对应服务器名(master01,node01,node02)
node01
  1. ###### 4.时间修改,避免节点心跳时间对不上导致出错
  2. node01节点、node01节点、node03节点都做以下配置
复制代码
#修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#修改时间
#查看硬件的时间
hwclock --show
#设置硬件时间,正常修改时区就够了,如有需要,可以定一个固定的时间
hwclock --set --date ‘2024-02-…’
#设置系统时间和硬件时间同步
hwclock --hctosys
#生存时钟
clock -w
  1. ###### 5.安装jdk情况
  2. node01节点、node01节点、node03节点都做以下配置
  3. 下载地址:https://www.oracle.com/downloads/graalvm-downloads.html   jdk8下载地址:https://www.oracle.com/java/technologies/downloads/#java8
复制代码
#解压
tar -zxvf jdk-8u401-linux-x64.tar.gz
#新建放jdk的文件夹
mkdir -p /usr/java
mv jdk1.8.0_401 /usr/java/jdk
#编辑/etc/profile文件
vi /etc/profile
#添加情况变量
export JAVA_HOME=/usr/java/jdk
export PATH=                                   J                         A                         V                         A                         _                         H                         O                         M                         E                         /                         b                         i                         n                         :                              JAVA\_HOME/bin:                  JAVA_HOME/binATH
#革新情况变量
source /etc/profile
#验证
java -version
  1. ###### 6.安装hadoop
  2. node01节点、node01节点、node03节点都做以下配置
  3. 下载地址:https://dlcdn.apache.org/hadoop/common
复制代码
#解压
tar -zxvf hadoop-3.3.6.tar.gz
#移动hadoop到对应的文件夹
mv hadoop-3.3.6 /usr/hadoop
#编辑/etc/profile文件
vi /etc/profile
#添加情况变量
export HADOOP_HOME=/usr/hadoop
export PATH=                                   H                         A                         D                         O                         O                         P                         _                         H                         O                         M                         E                         /                         b                         i                         n                         :                              HADOOP\_HOME/bin:                  HADOOP_HOME/bin:HADOOP_HOME/sbinPATH
#革新情况变量
source /etc/profile
#验证
hdfs version
  1. ###### 7.ssh免密(NameNode需要能ssh免密到其他节点)
  2. 1)安装ssh
复制代码
#安装ssh
yum install ssh
  1. 2)生成RSA密钥和公钥  
  2. 需要先进入对应用户再
  3. 生成密钥和公钥
  4.   
  5. node01节点、node01节点、node03节点都进入hadoop用户
复制代码
su hadoop
  1. 生成密钥和公钥
复制代码
#生成RSA密钥和公钥,-t表示type
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
  1. 3)在~/.ssh文件夹下新增config,配置需要ssh的服务器信息
复制代码
#编辑~/.ssh/config
vi ~/.ssh/config
  1. 在~/.ssh/config文件下添加ssh的服务器信息
复制代码
Host node01
HostName 192.168.132.101
User hadoop
IdentitiesOnly yes
Host node02
HostName 192.168.132.102
User hadoop
IdentitiesOnly yes
Host node03
HostName 192.168.132.103
User hadoop
IdentitiesOnly yes
  1. 修改下config的权限
复制代码
chmod 600 ~/.ssh/config
  1. 4)将公钥发送到对应服务器,实现对对应服务器的免密登录  
  2. node01和node02有NameNode节点,所以需要能ssh到其他节点
复制代码
#将公钥发给自己
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#在node01上执行,将node01的公钥发给所有node节点,让node01能直接免密登录到其他node节点
ssh-copy-id node02
ssh-copy-id node03
#在node02上执行,将node02的公钥发给所有node节点,让node02能直接免密登录到其他node节点
ssh-copy-id node01
ssh-copy-id node03
#修改下authorized_keys的权限,否则会无法免密登录
chmod 600 ~/.ssh/authorized_keys
  1. 6)验证免密登录  
  2. node01应能ssh到node02和node03  
  3. node02应能ssh到node01和node03
复制代码
ssh localhost
ssh node01
ssh node02
ssh node03
  1. ###### 8.安装Zookeeper
  2. node01节点、node01节点、node03节点都做以下配置
  3. 下载地址:https://zookeeper.apache.org/releases.html   1)安装zookpper
复制代码
#解压
tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz
#移动zookeeper文件夹
mv apache-zookeeper-3.8.3-bin /usr/zookeeper
#编辑/etc/profile文件
vi /etc/profile
#添加情况变量
export ZOOKEEPER_HOME=/usr/zookeeper
export PATH=                                   P                         A                         T                         H                         :                              PATH:                  PATH:ZOOKEEPER_HOME/bin
#革新情况变量
source /etc/profile
#新建一个存放数据的文件夹
mkdir -p /bigdata/zookeeper
  1. 2)配置zookpper  
  2. **复制zoo\_sample.cfg为zoo.cfg,默认启动读取zoo.cfg文件**
复制代码
#复制conf/zoo_sample.cfg
cp /usr/zookeeper/conf/zoo_sample.cfg /usr/zookeeper/conf/zoo.cfg
  1. **修改zoo.cfg文件,客户端连接需要配置一个端口,服务需要配置两个端口,一个端口是有主从的使用状态,另一个端口是无主从的选举状态**
复制代码
#编辑zoo.cfg文件
vi /usr/zookeeper/conf/zoo.cfg
#修改以下内容
dataDir=/bigdata/zookeeper
clientPort=2181
#添加以下内容
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
  1. **创建myid并添加zoo.cfg配置文件里server后面的权重值**  
  2. 在上面的zoo.cfg配置文件中,node01是server.1,node02是server.2,node03是server.3
  3. 因此  
  4. 在node01节点配置:echo 1 > /bigdata/zookeeper/myid  
  5. 在node02节点配置:echo 2 > /bigdata/zookeeper/myid  
  6. 在node03节点配置:echo 3 > /bigdata/zookeeper/myid
复制代码
echo 1 > /bigdata/zookeeper/myid
  1. 3)配置权限并启动  
  2. 修改zookeeper文件权限  
  3. node01节点、node01节点、node03节点都执行:chown -R hadoop /usr/zookeeper
复制代码
chown -R hadoop /usr/zookeeper
chmod -R 770 /usr/zookeeper
  1. 修改zookpper数据文件夹权限  
  2. node01节点、node01节点、node03节点都执行:chown -R hadoop /bigdata/zookeeper
复制代码
chown -R hadoop /bigdata/zookeeper
chmod -R 770 /bigdata/zookeeper
  1. 启动  
  2. 需要先切换到对应用户  
  3. node01节点、node01节点、node03节点都切换到hadoop用户
复制代码
su hadoop
  1. node01节点、node01节点、node03节点都需要启动后再验证
复制代码
zkServer.sh start
  1. 验证  
  2. 出现Mode: follower或Mode: leader就是启动成功
复制代码
zkServer.sh status
  1. ###### 9.hadoop配置hdfs(所有节点可以用同一份配置)
  2. 1)修改hadoop-env.sh文件,添加启动的java路径,分布式部署后,每个地方的java路径不一定相同
复制代码
#编辑hadoop-env.sh文件
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
#取消对应解释并修改为对应java路径
export JAVA_HOME=/usr/java/jdk
  1. 2)修改core-site.xml文件,添加启动的namenode节点、zookeeper 节点和对应端口
复制代码
#编辑core-site.xml文件
vi $HADOOP_HOME/etc/hadoop/core-site.xml
#修改并添加启动的namenode节点、zookeeper 节点和对应端口


  fs.defaultFS
hdfs://mycluster


  ha.zookeeper.quorum
node01:2181,node02:2181,node03:2181


hadoop.tmp.dir
/bigdata/hadoop/tmp


io.file.buffer.size
131702


  1. 3)编辑workers,指定从哪些节点里启动DataNode(2.x版本是编辑slaves)
复制代码
#编辑workers文件
vi $HADOOP_HOME/etc/hadoop/workers
#在workers文件里修改并添加DataNode启动节点(把里面默认的localhost去掉)
node02
node03
  1. 4)修改hdfs-site.xml文件,添加副本数量、hdfs的web访问地址、SecondaryNameNode的web访问地址等配置
复制代码
#编辑hdfs-site.xml文件
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
#设置namenode,datanode文件存储地址,web地址等配置


  
dfs.namenode.name.dir
/bigdata/hadoop/hdfs_name


  
dfs.datanode.data.dir
/bigdata/hadoop/hdfs_data


  
dfs.nameservices
mycluster


  
dfs.ha.namenodes.mycluster
nn1,nn2


  
dfs.namenode.rpc-address.mycluster.nn1
node01:8081


  
dfs.namenode.rpc-address.mycluster.nn2
node02:8081


  
dfs.namenode.http-address.mycluster.nn1
node01:50070


  
dfs.namenode.http-address.mycluster.nn2
node02:50070


  
dfs.namenode.shared.edits.dir
qjournal://node01:8485;node02:8485;node03:8485/mycluster


  
dfs.journalnode.edits.dir
/bigdata/hadoop/ha_hdfs_journal


  
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider


  
dfs.ha.fencing.methods
sshfence


  
dfs.ha.fencing.ssh.private-key-files
~/.ssh/id_rsa


  
dfs.ha.automatic-failover.enabled
true


  1. ###### 10.格式化并启动
  2. 1)修改hadoop文件权限  
  3. node01节点、node01节点、node03节点都执行:chown -R hadoop /usr/hadoop
复制代码
chown -R hadoop /usr/hadoop
chmod -R 770 /usr/hadoop
  1. 2)创建数据存储文件夹  
  2. node01节点、node01节点、node03节点都需要创建
复制代码
mkdir -p /bigdata/hadoop
  1. 3)修改数据存储文件夹权限  
  2. node01节点、node01节点、node03节点都执行:chown -R hadoop /bigdata
复制代码
chown -R hadoop /bigdata
chmod -R 770 /bigdata
  1. 4)切换到对应用户  
  2. node01节点、node01节点、node03节点都切换到hadoop用户
复制代码
su hadoop
  1. 5)把所有JournalNode节点的JournalNode启动一下  
  2. 这里node01、node02、node03都作为JournalNode节点,所以都需要启动
复制代码
hdfs --daemon start journalnode
  1. 6)选择一个NameNode做格式化,只需要格式化一次NameNode就行,不然会出现不同id,其他NameNode进行同步即可  
  2. 这里node01、node02都作为NameNode节点,这里选择在node01上执行,并启动NameNode,以备其他NameNode同步
复制代码
hdfs namenode -format
hdfs --daemon start namenode
  1. 7)在其他NameNode节点中同步NameNode  
  2. 这里node01、node02都作为NameNode节点,这里node01格式化了,所以在node02执行同步即可
复制代码
hdfs namenode -bootstrapStandby
  1. 8)格式化Zookeeper  
  2. 只需一个节点进行格式化即可
复制代码
hdfs zkfc -formatZK
  1. 9)启动hdfs
复制代码
start-dfs.sh
  1. 10)验证  
  2. 使用jps验证  
  3. node01应有:NameNode、DFSZKFailoverController、QuorumPeerMain、JournalNode
  4. node02应有:NameNode、DFSZKFailoverController、DataNode、QuorumPeerMain、JournalNode
  5. node03应有:DataNode、QuorumPeerMain、JournalNode
复制代码
jps
  1. 11)可以通过http://192.168.132.101:50070查看NameNode管理页面,多个NameNode只会有一个active  
  2. ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2af1d2a845574140bff3b911728e486d.png)  
  3. 12)可以通过http://192.168.132.102:50070查看NameNode管理页面,多个NameNode只会有一个active  
  4. ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/40ca79cf493c43a89c0af490ea4de0c0.png)
  5. ### 三、MapReduce环境
  6. ###### 1.MapReduce节点
  7. MapReduce主要用于分布式计算,分为ResourceManager和NodeManager。  
  8. ResourceManager:主要用于资源管理。  
  9. NodeManager:每个DataNode节点上都会有NodeManager,会定时向ResourceManager汇报自身DataNode的资源情况。
  10. ###### 2.执行原理
  11. 1)用户向yarn的ResourceManager提交应用  
  12. 2)ResourceManager通知一台不忙的NodeManager启动一个Container,在里面启动一个AppMaster。  
  13. 3)AppMaster启动后从hdfs下载对应的切片清单,然后向ResourceManager请求获取切片清单对应的资源  
  14. 4)ResourceManager收到AppMaster的请求后,会根据自己掌握的资源情况找到对应合适的NodeManager分配一个Container并反向注册到AppMaster  
  15. 5)AppMaster将任务Task发送给Container  
  16. 6)Container会反射相应的Task类为对象,调用方法执行
  17. ###### 3.高可用故障转移原理
  18. 1)ResourceManager高可用性是通过活动/备用架构实现的。  
  19. 2)在任何时间点,其中一个ResourceManager都是活动的,而一个或多个ResourceManager处于备用模式,等待在活动RM发生任何情况时接管。  
  20. 3)当活动ResourceManager停止工作或变得无响应时,另一个ResourceManager会自动被选为活动ResourceManager,然后接管工作。ResourceManager中嵌入的ActiveStandbyElector充当故障检测器和领导者选举器,而不是单独的ZKFC守护程序。
  21. ### 四、MapReduce搭建(3个节点可以用同一份配置)
  22. ###### 1.文件配置
  23. 1)修改mapred-site.xml
复制代码
#编辑mapred-site.xml
vi KaTeX parse error: Expected 'EOF', got '#' at position 41: …apred-site.xml #̲设置MapReduce作业的运…HADOOP_MAPRED_HOME/share/hadoop/mapreduce/HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表