完全分布式搭建
Hadoop下载地址:http://archive.apache.org/dist/hadoop/core/
这里用的Hadoop版本是:hadoop-2.6.0.tar.gz
1. 虚拟网络编辑器
NAT模式:设置网关和IP
比如:
网关:192.168.1.2
子网:192.168.1.0 子网掩码:255.255.255.0
2. 创建虚拟机
2.1 创建新的虚拟机
点击左上角文件中的新建虚拟机进行如下步骤:
2.2 选择Linux的iso文件
点击编辑虚拟机设置
2.3 开始安装虚拟机
点击开始此虚拟机
1.鼠标点进去,用上下键选择第一个回车。
2.语言选择中文。
3.点击软件选择、安装位置,点击网络和主机可以先把网络连接起。
4.然后点击开始安装
5.设置root密码后等待安装完成,然后点击完成配置。
6.配置完成后点击重启。
7.接受许可,然后点击完成配置
8.然后一直前进前进,到设置全名和密码设置好后继续前进,完成安装
2.4 克隆另外两台虚拟机
需先把master虚拟机关机
然后点击下一步——》选虚拟机中的当前状态——》创建完整克隆——》设置名称和位置——》完成
3. 配置三台虚拟机的网络
这些命令最好都进入root用户执行
3.1 配置静态IP
命令:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
添加
BOOTPROTO="static" //这句在文件中已经存在,找到把他修改成static即可
IPADDR=192.168.1.110 //IP地址
GATEWAY=192.168.1.2 //网关
DNS1=192.168.1.2 //和网关保持一致即可
3.2 配置DNS
命令:
vi /etc/NetworkManager/NetworkManager.conf
添加一行内容:
dns=none
然后重启网络管理:
systemctl restart NetworkManager.service
3.3 修改域名解析配置文件
命令:
vi /etc/resolv.conf
添加内容:
nameserver 192.168.1.2 //网关
最后重启网络:
service network restart
ping www.baidu.com可ping通即配置成功。
3.4 设置主机名
命令:
vi /etc/sysconfig/network
添加如下内容:
#Created by anaconda
NETWORKING=yes
HOSTNAME=master //添加
防止重启又恢复回去:
vi /etc/hostname //修改为本机名字
例如:(设置时可把localhost删除)
master
3.5 设置主机与ip映射
命令:
vi /etc/hosts
例如:
//ip地址 主机名
192.168.1.110 master
192.168.1.111 slave01
192.168.1.112 slave02
4. 防火墙关闭
三台机器都需要
查看防火墙状态:
systemctl status firewalld.service
关闭防火墙:
systemctl stop firewalld.service
防止下次重启防火墙自动启动:
systemctl disable firewalld.service
5. 免密钥登录配置
生成密钥(三台虚拟机都需执行)
以master虚拟机为例:
执行命令生成公钥和私钥:
ssh-keygen -t rsa //这条命令一直回车
发送到每台服务器(每台都执行,一行一行的执行)
ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02
如图所示:
测试是否成功
ssh master
ssh slave01
ssh slave02
成功如图所示
查看生成的文件
ls ~/.ssh
6. 配置jdk(配置一台其他两台复制过去即可)
使用Xftp软件把文件上传到虚拟机中
可在/opt中创建两个目录,一个放上传的文件,一个存放解压后的文件(可根据实际情况修改上传文件的目录和解压后的文件的目录)
进入/opt目录创建两个目录
cd /opt //进入/opt目录
mkdir module //创建module目录
mkdir software //创建software目录
6.1 上传文件
用xftp上传jdk-8u281-linux-x64.tar.gz文件到/opt/software中
6.2 卸载系统自带jdk
查看系统是否安装了jdk
rpm -qa | grep jdk
卸载自带的jdk
rpm -qa | grep jdk | xargs -n1 rpm -e --nodeps
6.3 解压文件
进入/opt/software中解压jdk到/opt/module目录
cd /opt/software //进入/opt/software目录
(tar -zxvf jdk包名 -C 指定的路径)
tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module //把文件加压到/opt/module目录中
6.4 设置环境变量
命令:
vi /root/.bash_profile
加入下面内容:
export JAVA_HOME=/opt/module/jdk1.8.0_281 //等号后面是jdk解压后的路径
export PATH=$PATH:$JAVA_HOME/bin
使设置立即生效:
source /root/.bash_profile
验证是否成功:
java -version
7. Hadoop安装(安装一台其他两台复制过去即可)
7.1 上传文件
用xftp上传hadoop-2.6.0.tar.gz文件到/opt/software中
7.2 解压文件
进入/opt/software中解压Hadoop到/opt/module目录
cd /opt/software //进入/opt/software目录
(tar -zxvf Hadoop包名 -C 指定的路径)
tar -zxvf hadoop-2.6.0.tar.gz -C /opt/module //把文件加压到/opt/module目录中
7.3 修改Hadoop名字
进入解压后的Hadoop目录进行修改
cd /opt/module
mv hadoop-2.6.0 hadoop //修改hadoop-2.6.0为hadoop
7.4 设置环境变量
命令:
vi /root/.bash_profile
加入下面内容:
export HADOOP_HOME=/opt/module/hadoop //等号后面是hadoop解压后的路径
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
使设置立即生效
source /root/.bash_profile
验证是否成功
hadoop version
这里的环境变量配好后,可用scp复制到其他两个节点
scp -r 存放的路径 root@远程登录名:复制到远程登录名节点的路径
slave01节点:
scp -r /root/.bash_profile root@slave01:/root/.bash_profile //复制到slave01节点上
slave02节点:
scp -r /root/.bash_profile root@slave02:/root/.bash_profile //复制到slave02节点上
7.5 复制jdk、Hadoop到其他两个节点
命令:
scp -r 存放的路径 root@远程登录名:复制到远程登录名节点的路径
slave01节点:
scp -r /opt/module/ root@slave01:/opt/module //复制到slave01节点上
slave02节点:
scp -r /opt/module/ root@slave02:/opt/module //复制到slave02节点上
7.6 配置Hadoop
配置前进入hadoop中的/etc/hadoop
cd /opt/module/hadoop/etc/hadoop
7.6.1 修改hadoop-env.sh、yarn-env.sh、mapred-env.sh
找到JAVA_HOME修改他们的JAVA_HOME路径
命令:
vi hadoop-env.sh //进入hadoop-env.sh进行修改
vi yarn-env.sh //进入yarn-env.sh进行修改
vi mapred-env.sh //进入mapred-env.sh进行修改
配置其中的 JAVA_HOME 路径(路径根据自己虚拟机上的配置来定)
export JAVA_HOME=/opt/module/jdk1.8.0_281
7.6.2 配置core-site.xml
命令:
vi core-site.xml
在
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop安装路径/data</value>
</property>
7.6.3 配置hdfs-site.xml
命令:
vi hdfs-site.xml
在
<property>
<!--指定 HDFS 副本数量-->
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定 Hadoop 辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
7.6.4 配置yarn-site.xml
命令:
vi yarn-site.xml
在
<!-- Reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
7.6.5 配置mapred-site.xml
配置前先把mapred-site.xml.template名字改为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
进入mapred-site.xml进行修改
vi mapred-site.xml
在
<!-- 指定 MR 运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
7.6.6 配置 slavers(意为每次启动那些集群)
命令:
vi slaves
添加如下:
master
slave01
slave02
7.6.7 分发配置文件
使用 rsync 命令,同步 {hadoop安装路径} / etc 下的配置文件
rsync -av /Hadoop安装路径/etc/hadoop root@远程登录名:/Hadoop安装路径/etc/hadoop
例如:
slave01节点:
rsync -av /opt/module/hadoop/etc/hadoop root@slave01:/opt/module/hadoop/etc
slave02节点:
rsync -av /opt/module/hadoop/etc/hadoop root@slave02:/opt/module/hadoop/etc
8 启动集群并测试
(1)第一次启动要格式化
命令:
hdfs namenode -format
如果格式化报错要删除data和logs在进行修改之后在进行第二次格式化
(2)启动集群(需进入hadoop安装目录)
sbin/start-all.sh
(3)关闭集群(需进入hadoop安装目录)
sbin/stop-all.sh
(4)验证
jps
如图所示:
(5)测试
Mapper测试能否跑通
创建文件夹:
hadoop fs -mkdir /input
上传文件到input文件夹:
hadoop fs -put 需要上传的文件名 上传到的文件路径
示例: hadoop fs -put job_list.json /input
输出文件:
hadoop jar MapReduceExer.jar 输入路径 输出路径(事先不能存在)
示例: hadoop jar MapReduceExer.jar /input/job_list.json /output
如图所示:
浏览器查看:
浏览器输入:机器IP地址:50070-------例如:192.168.1.110:50070
如图: