MapReduce 配置文件 mapred-site.xml
主机设置
三台主机关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
三台主机关闭SeLinux安全机制
vi /etc/sysconfig/selinux
将enforcing改为disabled
给每台主机修改主机名
分别修改为master、slave1、slave2
hostnamectl set-hostname 主机名
配置三台主机地址映射
vi /etc/hosts
设置免密登录
mkdir /root/.ssh
touch /root/.ssh/authorized_keys
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
cd /root/.ssh
master免密登录master、slave1和slave2
生成秘钥对
ssh-keygen -t rsa
输入连敲3次回车
拷贝三台主机公钥
ssh-copy-id root@主机名
免密登录
#登录
ssh 主机名
#登出
exit
安装JDK
解压安装
解压安装包到opt目录下
tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/
修改目录名
mv jdk1.8.0_162 jdk1.8
配置jdk的环境变量
vi /etc/profile
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin
保存配置
source /etc/profile
测试安装成功
java -version
分发JDK
module]# scp -r /opt/module/jdk/ root@slave1:/opt/module/
module]# scp -r /opt/module/jdk/ root@slave2:/opt/module/
分发配置文件
scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile
ZooKeeper配置
解压安装
解压
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt
改名
mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7
在根目录下创建两个文件夹
mkdir zlogs
mkdir zdata
配置zoo.cfg文件,在解压后的ZooKeeper目录中找到 conf 目录,复制一份 zoo_sample.cfg 并重命名为 zoo.cfg,修改 zoo.cfg 配置文件中的以下配置项:
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
添加:
dataDir=/opt/module/zookeeper/zdata
dataLogDir=/opt/module/zookeeper/zlogs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
添加ZK环境变量
vi /etc/profile
添加如下:
export ZK_HOME=/opt/module/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin
保存配置环境
source /etc/profile
分发文件
scp -r /opt/module/zookeeper/ root@slave1:/opt/module/
scp -r /opt/module/zookeeper/ root@slave2:/opt/module/
scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile
配置 myid:填写上面 server.x
中对应的数字 x
,如:1、2、3。每个机子都不一样,
只需要填写一个数字即可。但是这个数字非常重要,必须保证它的唯一性和正确性,否则可能导致集群运行出现问题。
在分发的每个zookeeper-3.5.7/data的目录下面创建myid文件
vim myid
文件内填写规则
master中填1
slave1填2
slave2填3
启动
zkServer.sh start
注意:集群的每台都需要启动这个命令
所有节点上启动ZooKeeper服务,以便加入到集群中。
这段日志输出表示ZooKeeper服务已经成功启动,并且JMX功能也已经默认开启。
确认集群中所有节点的信息,以确保它们之间已经建立了有效的连接。可以使用如下命令查看:
zkServer.sh status
显示Mode: follower就代表已经正常启动了
安装配置 Hadoop
解压安装
解压
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
添加hadoop环境变量
vi /etc/profile
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
注意:另外两台主机也要进行相应的环境变量设置
保存配置环境
source /etc/profile
测试安装成功
hadoop version
修改hadoop-env.sh文件
cd $HADOOP_HOME/etc/hadoop
vi hadoop-env.sh
写入如下:
export JAVA_HOME=/opt/module/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改Hadoop配置文件core-site.xml
vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
HDFS 配置文件hdfs-site.xml
vi hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9868</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>slave1:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>slave1:9870</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/module/hadoop-3.1.3/data/journal/</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
MapReduce 配置文件 mapred-site.xml
vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
YARN 配置文件yarn-site.xml
vi yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
配置worekers
vi workers
master
slave1
slave2
分发配置好的Hadoop
scp -r /opt/module/hadoop-3.1.3/ root@slave1:/opt/module/
scp -r /opt/module/hadoop-3.1.3/ root@slave2:/opt/module/
scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile
每个节点需要先启动journalnode
hadoop-daemon.sh start journalnode
进行初始化
hdfs namenode -format
格式化zkfc
hdfs zkfc -formatZK
将已格式化的namenode
tmp目录传给另一个namenode
scp -r /opt/module/hadoop-3.1.3/ root@slave1:/opt/module/
启动hadoop集群
start-all.sh
查看nn2的进程状态
hdfs haadmin -getServiceState nn2
查看rm2的进程状态
yarn rmadmin -getServiceState rm2
查看slave1的进程
输入以下命令可以任意切换standby和active的角色
hdfs haadmin -failover slave1 master