前期准备:
1.关闭防火墙
systemctl stop firewalld #关闭防火墙
systemctl status firewalld #查看防火墙状态
systemctl disable firewalld #永久关闭防火墙
2.更改主机名
本次完全分布式搭建为一主两从的架构,master为集群主机,slave1和slave2为集群从机
hostname #查看主机名称
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
(修改主机名称分为命令修改和文件修改,此处选择快捷的Linux命令修改)
3.配置IP映射(三台虚拟机均需修改)
修改虚拟机IP映射可以通过图形化界面修改,也能通过修改文件的方式进行修改,此处选择修改文件的方式进行修改。
此处IP设置为:
192.168.170.3 #master
192.168.170.4 #slave1
192.168.170.5 #slave2
修改配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容:
BOOTPROTO="static" #改为静态IP
ONBOOT="yes" #设置为开机自启动
IPADDR="192.168.170.3" #设置IP地址
GETAWAY="192.168.170.2" #设置网关
NETMASK="255.255.255.0" #设置子网掩码
DNS1="8.8.8.8"
重新启动网络:
service network restart
ping www.baidu.com (能够ping通则网卡能够正常使用)
编辑/etc/hosts文件:
192.168.170.3 master
192.168.170.4 slave1
192.168.170.5 slave2
4.配置免密登录(三台虚拟机均需执行)
ssh-keygen -t rsa #配置ssh服务
ssh-copy-id -i ~/.ssh/id_rsa.pub master #copy密钥生成文件
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
5.JDK(1.8.0_141)和hadoop安装
本文安装包均放在/package目录下,安装目录均为/opt
解压:
tar -zxvf /package/jdk-8u141-linux-x64.tar.gz -C /opt/ #解压jdk安装包
tar -zxvf /package/hadoop-2.7.5.tar.gz -C /opt/ #解压hadoop安装包
改名:
mv /opt/jdk1.8.0_141 java #将包名改为java
mv /opt/hadoop-2.7.5 hadoop #将包名改为hadoop
配置环境变量:
vi /etc/profile #编辑全局环境变量文件
在文件末尾添加上以下内容:
#java
export JAVA_HOME=/opt/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH
#hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
分发环境变量文件和软件包并更新环境变量:
scp -r /opt/java slave1:/opt #将java组件包从master分发到slave1
scp -r /opt/java slave2:/opt #将java组件包从master分发到slave2
scp -r /opt/hadoop slave1:/opt #将hadoop组件包从master分发到slave1
scp -r /opt/hadoop slave2:/opt #将hadoop组件包从master分发到slave2
scp /etc/profile slave1:/etc #从master分发文件到slave1的/etc目录下
scp /etc/profile slave2:/etc #从master分发文件到slave2的/etc目录下
source /etc/profile #更新环境变量
查看安装版本:
java -version
hadoop version
hadoop主要配置文件(配置完成通过scp命令分发):
1.hadoop-env.sh:
vi /opt/hadoop/etc/hadoop/hadoop-env.sh #编辑hadoop-env.sh文件
#25行 export JAVA_HOME
export JAVA_HOME=/opt/java
#33行 export HADOOP_CONF_DIR
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
2.core-site.xml:
vi /opt/hadoop/etc/hadoop/core-site.xml #编辑core-site.xml文件
<configuration>
<property>
<!--用来指定namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
3.hdfs-site.xml:
vi /opt/hadoop/etc/hadoop/hdfs-site.xml #编辑hdfs-site.xml文件
<configuration>
<property>
<!--设置副本数量,默认为3-->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!--namenode节点数据的存放位置-->
<name>dfs.name.dir</name>
<value>/opt/hadoop/dfs/namenode_data</value>
</property>
<property>
<!--datanode节点数据的存放位置-->
<name>dfs.data.dir</name>
<value>/opt/hadoop/dfs/datanode_data</value>
</property>
<property>
<!--指定secondarynamenode的web地址-->
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
<property>
<!--hdfs文件操作权限,false为不验证-->
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4.mapred-site.xml:
vi /opt/hadoop/etc/hadoop/mapred-site.xml #编辑mapred-site.xml文件
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!--配置任务历史服务器IPC-->
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<!--配置任务历史服务器web-UI地址-->
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5.yarn-site.xml:
vi /opt/hadoop/etc/hadoop/yarn-site.xml #编辑yarn-site.xml文件
<configuration>
<!--yarn集=集群主角色RM运行机器-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--NodeManager上运行的附属服务 需配置mapreduce_shuffle才可以运行MR程序-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6.slave:
vi /opt/hadoop/etc/hadoop/slave #编辑slave文件
master
slave1
slave2
7.集群操作:
hdfs namenode -format #在master上对hadoop集群进行格式化
start-all.sh #启动集群
mr-jobhistory-daemon.sh start historyserver #启动任务历史服务器
jps查看进程
master进程如下:NodeManager、DataNode、NameNode、ResourceManager、JobHistoryServer
slave1进程如下:DataNode、NodeManager
slave2进程如下:SecondaryNameNode、DataNode、NodeManager