大数据分布式集群环境搭建详细步骤(Zookeeper,Hadoop安装与配置)
前言:前面我们完成了Linux系统的安装及网络配置,接下来我们将完成Zookeeper和Hadoop的安装与配置。
系统说明
节点 | ip |
---|---|
master | 192.168.83.101 |
slave1 | 192.168.83.102 |
slave2 | 192.168.83.103 |
节点配置
1、修改每个节点主机名,重启生效
# 在其他两个子节点的hostname处分别填slave1和slave2
[root@master ~]# vi /etc/hostname
master
2、添加各节点映射
# 三个节点均执行
[root@localhost ~]# vi /etc/hosts
192.168.83.101 master
192.168.83.102 slave1
192.168.83.103 slave2
3、关闭防火墙,重启生效
# 三个节点均执行
[root@master ~]# vi /etc/selinux/config
SELINUX=disabled
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
[root@master ~]# systemctl status firewalld
4、时间同步
首先在时间同步之前确认是否有网络连接,在有网络的情况下执行。要保证设置主机时间准确,每台机器时区必须一致。实验中我们需要同步网络时间,因此要首先选择一样的时区。先确保时区一样,否则同步以后时间也是有时区差。
[root@master ~]# tzselect
# 然后用数字选择时区,这里选择北京时间
故顺序为 5 9 1 1
由于hadoop集群对时间要求很高,所以集群内主机要经常同步。我们使用ntp进行时间同步,master作为ntp服务器,其余的当做ntp客户端。
# 三台机器均安装
[root@master ~]# yum -y install ntp
master作为ntp服务器,修改ntp配置文件
# master上执行
[root@master ~]# vi /etc/ntp.conf
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10 #stratum设置为其它值也是可以的,其范围为0~15
重启ntp服务
# master上执行
[root@master ~]# systemctl restart ntpd.service
等待三分钟,再到slave1和slave2节点同步时间
[root@slave1 ~]# ntpdate master
5、配置ssh免密登录
Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,Hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果Hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
[root@master ~]# ssh-keygen -t rsa
# 遇到提示一路回车即可
# 拷贝本密钥到三个节点上
[root@master ~]# ssh-copy-id master
[root@master ~]# ssh-copy-id slave1
[root@master ~]# ssh-copy-id slave2
# slave1和slave2节点重复上述操作
测试免密登录是否成功
[root@master ~]# ssh slave1
# 登陆成功就会有显示
[root@slave1 ~]# exit
# 登出slave1
[root@master ~]# ssh slave2
6、安装JDK
# 我们把所有的环境配置包都放到master的/opt/soft下面
[root@master ~]# cd /opt/soft/
[root@master soft]# mkdir -p /usr/java
[root@master soft]# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
# 配置环境变量(三台机器)
[root@master soft]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
# 使环境变量生效(三台机器)
[root@master soft]# source /etc/profile
# 在master节点操作成功后可以使用远程复制命令将JDK远程复制到slave1和slave2节点在中(此命令在master中操作)
[root@master soft]# scp -r /usr/java root@slave1:/usr/
[root@master soft]# scp -r /usr/java root@slave2:/usr/
#验证JDK是否安装成功(三台机器)
[root@master soft]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
安装Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
1、创建zookeeper安装目录并解压
# 修改主机映射(三台机器)
[root@master soft]# vi /etc/hosts
192.168.83.101 master master.root
192.168.83.102 slave1 slave1.root
192.168.83.103 slave2 slave2.root
# 创建Zookeeper目录并解压Zookeeper
[root@master ~]# mkdir -p /usr/zookeeper
[root@master ~]# tar -zxvf /opt/soft/zookeeper-3.4.10.tar.gz -C /usr/zookeeper/
2、配置zoo.cfg文件
[root@master ~]# cd /usr/zookeeper/zookeeper-3.4.10/conf/
[root@master conf]# cp zoo_sample.cfg zoo.cfg
[root@master conf]# vi zoo.cfg
dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
3、配置myid文件
[root@master zookeeper-3.4.10]# mkdir zkdata
[root@master zookeeper-3.4.10]# mkdir zkdatalog
[root@master zookeeper-3.4.10]# cd zkdata
[root@master zkdata]# vi myid
1
4、配置其它两个节点
[root@master zkdata]# scp -r /usr/zookeeper root@slave1:/usr/
[root@master zkdata]# scp -r /usr/zookeeper root@slave2:/usr/
# 注意将slave1和slave2的myid分别替换为2和3
5、配置环境变量(三台机器)
[root@master zkdata]# vi /etc/profile
#set zookeeper environment
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@master zkdata]# source /etc/profile
6、启动zookeeper集群(三台机器)
[root@master zookeeper-3.4.10]# bin/zkServer.sh start
[root@master zookeeper-3.4.10]# bin/zkServer.sh status
# 三个节点一个是leader,另外两个是follower
# 三个节点分别执行命令 jps
# 检查每个节点是否都有 QuorumPeerMain进程
安装 Hadoop
1、创建Hadoop安装目录并解压
[root@master ~]# mkdir -p /usr/hadoop
[root@master ~]# tar -zxvf /opt/soft/hadoop-2.7.3.tar.gz -C /usr/hadoop/
2、配置环境变量(三台机器)
[root@master ~]# vi /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
[root@master ~]# source /etc/profile
Hadoop的配置文件所在目录为 /usr/hadoop/hadoop-2.7.3/etc/hadoop
3、配置core-site.xml
[root@master hadoop]# vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
</configuration>
4、配置hdfs-site.xml
[root@master hadoop]# vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
5、配置mapred-site.xml
[root@master hadoop]# vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
6、配置yarn-site.xml
[root@master hadoop]# vi yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- Site specific YARN configuration properties -->
</configuration>
7、配置hadoop-env.sh
[root@master hadoop]# vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_171
8、修改slaves
[root@master hadoop]# vi slaves
slave1
slave2
9、编辑master
[root@master hadoop]# vi master
master
10、分发hadoop
[root@master hadoop]# scp -r /usr/hadoop/ root@slave1:/usr/
[root@master hadoop]# scp -r /usr/hadoop/ root@slave2:/usr/
11、格式化hadoop并开启集群
# 第一次启动hadoop时格式化
[root@master hadoop]# hadoop namenode -format
# 若出现 Exiting with status 0 ,则格式化成功
[root@master hadoop]# cd $HADOOP_HOME
[root@master hadoop-2.7.3]# sbin/start-all.sh
# master节点进程
[root@master hadoop-2.7.3]# jps
2819 NameNode
2998 SecondaryNameNode
3143 ResourceManager
3452 Jps
# slave1 节点进程
[root@slave1 zookeeper-3.4.10]# jps
2672 DataNode
2768 NodeManager
2916 Jps
# slave2 节点进程
[root@slave2 zookeeper-3.4.10]# jps
2672 DataNode
2916 Jps
2767 NodeManager
若三个节点出现上述进程,则表明hadoop启动成功
12、浏览器访问可视化界面
http://192.168.83.101:50070/
到此为止,Hadoop的配置就完成了。