说明此报告中:我将hadoop解压缩到/opt/hadoop/下,Jdk放在/opt/java下,zookeeper放在/export/server下;
准备工作:
在每台机器修改主机名字:hostnamectl set-hostname hadoop1
hostnamectl set-hostname hadoop2
hostnamectl set-hostname hadoop3
yum install -y ntp
crontab -e
*/1 * * * * /usr/bin/ntpdate ntp4.aliyun.com
nptdate hadoop1
一:可以先搭建启动zookeeper
1-3现在一台机器上完成
-
下载zookeeper:
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
注意啦:是下载编译过的这个包,不是那个源码包哈
-
解压缩
mkdir -p /export/servers
tar zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /export/servers
mv apache-zookeeper-3.7.0-bin zookeeper
3.配置文件
进入zookeeper所在目录后
mkdir zkdatas 或者mkdir -p /export/servers/zookeeper/zkdatas
cd conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/export/servers/zookeeper/zkdatas
#保留多少个快照
autopurge.snapRetainCount=3
#日志多少小时清理一次
autopurge.purgeInterval=1
#集群中服务器地址
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
注意啦,这里的hadoop1,hadoop2,hadoop3需要改成你自己三台机器名字
进入zookeeper目录:
cd zkdatas/
vim myid
三台主机分别填入值1 2 3
4登录另外两台机器,执行完 mkdir -p /export/servers后,返回第一台机器执行如下:
方法一:把 hadoop1的zookeeper上传到hadoop2,3
scp -r /export/servers/zookeeper/ root@hadoop2:/export/servers/
scp -r /export/servers/zookeeper/ root@hadoop3:/export/servers/
方法二:在hadoop2,3上下载hadoop1的文件目录zookeeper
scp -r root@hadoop1:/export/servers/zookeeper /export/servers/
5 登录到hadoop2上
vim myid 修改成2
登录到hadoop3上
vim myid修改3
6在hadoop1,hadoop2,hadoop3上都执行以下命令
setenforce 0
systemctl stop firewalld 临时关闭防火墙
systemctl disable firewalld 关闭开机自启动防火墙
7在hadoop1,hadoop2,hadoop3上都执行以下命令
/export/servers/zookeeper/bin/zkServer.sh start
8 在hadoop2或者3上客户端连接
bin/zkCli.sh -server hadoop1:2181
二:高可用配置(一步到位版,不是从分布式改过来的)
1.在57(hadoop1)修改/etc/hosts(三台都需要做的)
10.4.13.57 hadoop1
10.4.13.58 hadoop2
10.4.13.59 hadoop3
2..在主机免密登录,同时让主机能够免密访问从机(三台都需要做的)
ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
单机master上的配置:
3.jdk配置
(1)方法一:在centos7中使用wget JDK下载的网址
方法二:在window下载好后,使用xshell向虚拟机传输
说明:xshell需要安装 lrzsz才可以传输
yum install -y lrzsz
rz 弹出窗口,选择下载好的JDK包(rz windows向linux)
举例:sz (Linux文件向windows) sz /etc/profile
(2.)解压缩到目录
mkdir -p /opt/java
tar zxvf jdk-8u211-linux-x64.tar.gz -C /opt/java (解压缩命令待补充)
(3).环境变量配置
vim /etc/profile
末尾增加两行即可(注意我是将jdk-1.8..重命名成了jdk,JAVA_HOME路径是你的JDK解压后的全路径)
-----------------------------------------------
export JAVA_HOME=/opt/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
--------------------------------------------------------
source /etc/profile
java -version
4.hadoop下载
(1)
方法1: wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1-aarch64.tar.gz
方法2:windows下载好后,通过下shell传输 细节参考jdk。
(2).hadoop配置环境变量,vim /etc/profile
=======================================
export HADOOP_HOME=/opt/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
=============================================
source /etc/profile
hadoop version
(4)配置文件
我的hadoop安装路径 cd /opt/hadoop/hadoop
cd etc/hadoop 注意:这里的etc是相对路径
1) 修改 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>
2)修改vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3)yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启⽤resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--声明两台resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster-yarn</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop2</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
4)hdfs-site.xml
5) vim workers
6)、对于start-dfs.sh和,stop-dfs.sh添加下列参数:
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root 7)、对于start-yarn.sh和stop-yarn.sh文件 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_JOURNALNODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
6)和7)可以合并成直接在/etc/profile中添加如下,再source /etc/profile
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
8):vim hadoop-env.sh
export JAVA_HOME=/opt/java/jdk
9).vim mapred-env.sh
10):在master格式化:
hadoop namenode -format
11):复制到从机
A:
scp /etc/hosts root@10.4.13.58.:/etc/
scp /etc/hosts root@10.4.13.59:/etc/
注意:这个/etc/hosts里面有IP和主机名对应,分发完成后,之后复制分发文件,就可以直接写域名主机名了。
B: 在58,59上mkdir -p /opt/java
scp -r /opt/java/jdk root@10.4.13.58:/opt/java/
scp -r /opt/java/jdk root@10.4.13.59:/opt/java/
C: 在58,59 mkdir -p /opt/hadoop
scp -r /opt/hadoop/hadoop root@10.4.13.58:/opt/hadoop/
scp -r /opt/hadoop/hadoop root@10.4.13.59:/opt/hadoop/
D: 把/etc/profile 复制到hadoop2(58),hadoop3(59)
scp /etc/profile root@10.4.13.58:/etc/
scp /etc/profile root@10.4.13.59:/etc/
去58,59上都执行source /etc/profile
启动
./bin/zkServer.sh start
hdfs namenode -format
//初始化namenode
hdfs zkfc -formatZK
//初始化zkfc
hadoop-daemon.sh start journalnode
./start-all.sh
启动部分可以参考博客
Hadoop HA-hadoop完全分布式高可用集群配置、高可用集群启动方式、master/slave1/slave2配置_HaveAGoodDay.的博客-优快云博客