第一节、配置网络IP地址:
打开配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.206.10
NETMASK=255.255.255.0
GATEWAY=192.168.206.2
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=c5660370-0b73-429d-9357-38e440777d7f
DEVICE=ens33
ONBOOT=yes
网络重启:service network restart
测试是否连通:使用ping 192.168.206.2
第二节、配置jdk和hadoop的环境:
说明:apps放置解压文件,software放置压缩文件。
cd /opt/
1、创建两个文件夹
mkdir apps
mkdir software
cd software/
2、解压到指定的/opt/apps下
tar zxvf jre-8u251-linux-x64.tar.gz -C /opt/apps/
tar zxvf hadoop-2.7.4.tar.gz -C /opt/apps/
tar zxvf zookeeper-3.4.5.tar.gz -C /opt/apps/
3、更改文件名
cd /opt/apps/
mv jre1.8.0_251/ jdk
mv hadoop-2.7.4/ hadoop
mv zookeeper-3.4.5/ zookeeper
4、设置环境变量
vi /etc/profile
添加配置
export JAVA_HOME=/opt/apps/jdk
export HADOOP_HOME=/opt/apps/hadoop
ZOOKEEPER_HOME=/opt/apps/zookeeper
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
5、查看版本是否生效
java -version
hadoop version
6、将解压数据和环境变量发送给其他主机:
scp -r /opt/apps root@master2:/opt/
scp -r /opt/apps root@slave1:/opt/
scp -r /opt/apps root@slave2:/opt/
scp -r /etc/profile root@master2:/etc/
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
每个节点让环境变量生效:source /etc/profile
7、配置域名解析信息:
vi /etc/hosts 192.168.206.10 master 192.168.206.11 master2 192.168.206.12 slave1 192.168.206.13 slave2
8、使用rsa加密技术,生成公钥和私钥。一路回车即可
root@master ~]# cd ~
[root@master ~]# ssh-keygen -t rsa
进入~/.ssh目录下,将id_rsa.pub复制一份文件,文件名为authorized_keys。保证此文件的权限是600
[root@master ~]# cd ~/.ssh
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@master
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@master2
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@slave1
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@slave2
进行验证
ssh master
ssh slave1
ssh slave2
第三节、配置zookeeper环境
1、基础环境准备
1. 将zookeeper-3.4.5.tar.gz上传到/opt/software中
2. 解压
[root@master software]# tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/apps/
3. 更名zookeeper
[root@master software]# cd ../apps/
[root@master apps]# mv zookeeper-3.4.5 zookeeper
4. 配置环境变量
[root@master apps]# vi /etc/profile
.........省略......
export ZOOKEEPER_HOME=/opt/apps/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
5. 使当前会话生效
[root@master apps]# source /etc/profile
6. 查看zookeeper的版本号
[root@master apps]# echo stat|nc localhost 2181
2、复制出一个zoo.cfg文件
[root@master zookeeper]# cd conf/ #进入zookeeper的conf目录
[root@master conf]# cp zoo_sample.cfg zoo.cfg #复制出zoo.cfg文件
3、修改zoo.cfg文件
[root@master conf]# vi zoo.cfg
tickTime=2000 # 定义的时间单元(单位毫秒),下面的两个值都是tickTime的倍数。
initLimit=10 #follower连接并同步leader的初始化连接时间。
syncLimit=5 #心跳机制的时间(正常情况下的请求和应答的时间)
dataDir=/opt/apps/zookeeper/data/ #修改zookeeper的存储路径
dataLogDir=/opt/apps/zookeeper/log/ #修改zookeeper的日志存储路径
server.1=master2:2888:3888 #对应服务器id
server.2=slave1:2888:3888 #对应服务器id
server.3=slave2:2888:3888 #对应服务器id
clientPort=2181 #客户端连接服务器的port
4、创建两个文件
mkdir /opt/apps/zookeeper/data/
mkdir /opt/apps/zookeeper/log/
开启zookeeper:
zkServer.sh start开启三个节点
验证zookeeper:
zkServer.sh status 验证状态 分别是leader或者follower
第四节、HA的配置总结
1、 环境准备:
1. 三台虚拟机:master,slave1,slave2
2. 保证三台机器的防火墙都是关闭状态
3. 保证三台机器的免密登陆认证
4. 保证三台机器的时间同步
5. 保证三台机器的/etc/hosts文件的域名映射关系配置
6. 保证三台机器安装了jdk和hadoop,并且配置了环境变量且命令好使
说明:如果上述环境都准备好了,那么就修改hadoop的7个文件,参考如下:
2、hadoop/etc/hadoop/core-site.xml
<configuration>
<!-- 指定hdfs的ha的域名,注意这个是hdfs-site.xml文件里配置的逻辑名称 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://supercluster</value>
</property>
<!-- 指定hdfs的数据存储位置,此路径一旦指定,会被其他属性使用和依赖-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/apps/hadoop/tmp</value>
</property>
<!-- 指定journalnode的数据存储位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/apps/hadoop/tmp</value>
</property>
<!-- 指定zookeeper集群的服务器节点,如果没有搭建zookeeper,请参考zookeeper知识模块-->
<property>
<name>ha.zookeeper.quorum</name>
<value>master2:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>
3、hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 指定块文件的复本个数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定块文件的大小-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- 节点动态上下线的配置
<property>
<name>dfs.hosts</name>
<value>/opt/apps/hadoop/etc/hadoop/include</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/apps/hadoop/etc/hadoop/exclude</value>
</property>
-->
<!-- 指定ha的名称服务:即逻辑名称-->
<property>
<name>dfs.nameservices</name>
<value>supercluster</value>
</property>
<!-- 指定ha的两个namenode的唯一标识符-->
<property>
<name>dfs.ha.namenodes.supercluster</name>
<value>nn1,nn2</value>
</property>
<!-- 指定两个唯一标识符,对应的主机和端口号-->
<property>