Centos搭建Hadoop2.8.5完全分布式集群部署
一、基础环境设置
1、准备4台客户机(VMware虚拟机)
结点配置
192.168.5.128 Master
192.168.5.129 Slaver-1
192.168.5.129 Slaver-2
192.168.5.129 Slaver-3
2、配置hosts文件,使4台客户机能够以主机名相互访问
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.208.128 Master
192.168.208.129 Slaver-1
192.168.208.130 Slaver-2
192.168.208.131 Slaver-3
将hosts文件传送给其他3台客户机
scp -r /etc/hosts root@Slaver-1:/etc
scp -r /etc/hosts root@Slaver-2:/etc
scp -r /etc/hosts root@Slaver-3:/etc
3、为4台客户机配置jdk环境
这里选择版本:jdk-8u321-linux-x64.tar.gz
-
下载jdk,上传到/root/software目录下
-
解压
tar -zxvf jdk-8u321-linux-x64.tar.gz
-
创建jdk存放目录
mkdir /opt/java
-
重命名解压后的文件
mv jdk1.8.0_321 jdk
-
将jdk移动到存放目录
mv jdk /opt/java/
-
配置jdk环境
vim /etc/profile
在文件末尾添加如下内容
# 注意,要与刚刚所创建的目录匹配 export JAVA_HOME=/opt/java/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
使jdk配置文件生效
source /etc/profile
-
测试jdk环境配置是否成功
java -version
4、关闭防火墙,SELinux
-
iptables
-
临时关闭
service iptables stop
-
禁止开机启动
chkconfig iptables off
-
-
firewalld: CentOS7版本后防火墙默认使用firewalld,默认是没有iptables的
-
临时关闭
systemctl stop firewalld
-
禁止开机启动
systemctl disable firewalld
-
-
关闭SELinux
-
永久关闭
vi /etc/selinux/config #disabled - No SELinux policy is loaded. SELINUX=disabled # 此处将SELINUX=enforcing改为SELINUX=disabled # SELINUXTYPE= can take one of three two values:
-
修改SELinux配置后,需要重启客户机才能生效
reboot
-
重启之后,查看SELinux状态
/usr/sbin/sestatus
-
5、设置SSH免秘钥
-
每台客户机都执行:生成私钥
ssh-keygen
-
上传公钥到主客户机(在Master上执行)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Slaver-1
二、安装hadoop集群
1、下载hadoop-2.8.5.tar.gz
2、hadoop安装目录
为了统一管理,我们将hadoop安装到/opt/hadoop下,
-
解压hadoop-2.8.5.tar.gz文件
tar -zxvf hadoop-2.8.5.tar.gz
-
重命名
mv hadoop-2.8.5 hadoop
-
移动到存放目录
mv hadoop /opt/
3、配置core-site.xml
hadoop的配置文件,在/opt/hadoop/etc/hadoop下
cd /opt/hadoop/etc/hadoop/
vim core-site.xml
<!--配置hdfs文件系统的命名空间-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<!-- 配置操作hdfs的存冲大小 -->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!-- 配置临时数据存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
4、配置hdfs-site.xml
vim hdfs-site.xml
<!--配置副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--hdfs的元数据存储位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hdfs/name</value>
</property>
<!--hdfs的数据存储位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hdfs/data</value>
</property>
<!--hdfs的namenode的web ui 地址-->
<property>
<name>dfs.http.address</name>
<value>Master:50070</value>
</property>
<!--hdfs的snn的web ui 地址-->
<property>
<name>dfs.secondary.http.address</name>
<value>Master:50090</value>
</property>
<!--是否开启web操作hdfs-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--是否启用hdfs权限(acl)-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
5、配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!--指定maoreduce运行框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> </property>
<!--历史服务的通信地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<!--历史服务的web ui地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
6、配置yarn-site.xml
vim yarn-site.xml
<!-- Site specific YARN configuration properties -->
<!--指定resourcemanager所启动的服务器主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<!--指定mapreduce的shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<!--指定scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<!--指定resource-tracker的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master:8031</value>
</property>
<!--指定resourcemanager.admin的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<!--指定resourcemanager.webapp的ui监控地址-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
7、配置slaves文件
vim slaves
Slaver-1
Slaver-2
Slaver-3
8、配置hadoop-env.sh,指定JAVA_HOME
vim hadoop-env.sh
#修改
export JAVA_HOME=/opt/java/jdk
9、配置yarn-env.sh,指定JAVA_HOME
vim yarn-env.sh
#修改
export JAVA_HOME=/opt/java/jdk
10、配置mapred-env.sh,指定JAVA_HOME
vim mapred-env.sh
# 修改
export JAVA_HOME=/opt/java/jdk
11、将hadoop文件分发到其它几台客户机上
scp -r /opt/hadoop/ Slaver-1:`pwd`
scp -r /opt/hadoop/ Slaver-2:`pwd`
scp -r /opt/hadoop/ Slaver-3:`pwd`
三、启动并验证hadoop集群
1、启动集群
- 第一次启动集群,需要格式化namenode
hdfs namenode -format
此处出现问题:
原因:没有配置hadoop环境变量
解决:
vim /etc/profile
在末尾添加:
#hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置文件生效
source /etc/profile
2、启动(仅需在Master上执行)
-
切换至/opt/hadoop/sbin目录
cd /opt/hadoop/sbin
-
启动集群
./start-all.sh
3、验证hadoop集群
在主机电脑上打开浏览器,并分别浏览hadoop集群的管理页面,看hadoop集群是否成功启动
Hadoop集群的网页版管理地址
http://192.168.5.101:50070 (或http://hadoop-1:50070)
Yarn的网页版管理地址
http://192.168.5.101:8088 (或http://hadoop-1:8088)