目录
1. 创建虚拟机
到这里一台裸机就创建好了。
接下来就是添加镜像:hadoop01界面编辑虚拟机设置,添加镜像。
然后点击开启此虚拟机
接下来就是为裸机安装一个操作系统:
至此,虚拟机创建完成。
2. 设置ip及机器名映射
打开hostname文件
修改内容为下,保存并退出
输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改代码:
#修改
BOOTPROTO=static
ONBOOT=yes
#添加
IPADDR=192.168.121.134
NETMASK=255.255.255.0
GATEWAY=192.168.121.2
DNS1=192.168.121.2
重启网络:service network restart
这里有个小插曲,重启失败,显示network.service failed,而且ifconfig后,ens33网卡没有了
查资料发现网卡挂掉了
CentOS系统上,有NetworkManager和network两种网络管理工具,如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉
运行下面命令停掉NetworkManager后,重启网络成功
如果还连接不到网络,看看自己的服务有没有开
输入命令:vi /etc/hosts,添加三台虚拟机的ip和主机名(设置主机名是为了使机器互相之间通过主机名连通)
然后ping一下自己,看是否可以通
3. 克隆hadoop02、hadoop03
克隆之前需要先关闭虚拟机hadoop01:init 0
同样的方法克隆hadoop03
然后开启三台虚拟机,此时hadoop02、hadoop03的ip和hadoop01 也相同,我们需要修改hadoop02、hadoop03ip,然后重启网络。
先修改主机名:vi /etc/hostname
修改ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络:
同样修改hadoop03
然后ping hostname
查看三天主机是否能够互相连通,可以,就表示成功了。
ifconfig,查看各个主机的配置的ip,使用远程主机连接。
4. 设置SSH免密(下面开始,三台虚拟机都要做相同的操作)
先同步一下时间,时间有问题会出错(如果时间没问题,可以省略)
下载ntp
同步系统时间
将同步时间写入到硬件中
关闭防火墙
检查登录
这里的远程登录都需要密码,太麻烦,下面就是设置SSH远程免密登录(注意三台机器都要操作)
客户端生成秘钥:(中间遇到卡顿,需要输入三次回车)
进入 .ssh,查看公钥(id_rsa.pub为公钥,id_rsa为私钥)
复制公钥到hadoop01中的authorized_keys中(三个机器都运行同样的命令:ssh-copy-id hadoop01)
之后查看,可以发现三个机器的公钥都放在了authorized_keys中了
举例:
每个机器都有自己的公钥、私钥
如:hadoop01将自己的公钥给hadoop02,那之后,hadoop01就可以任意登录hadoop02了
将authorized_keys使用scp分发到另外两台机器的 ~/.ssh下
免密登录测试(注意登录完要exit,才能登录下一个)
5. 上传jdk、hadoop,以及配置环境变量(三个机器同样操作)
创建三个目录:
- data:存放数据类文件
- servers:放服务类文件(解压到这里)
- software:存放压缩包文件
把压缩包放到software中:
方法一:cd 到software目录下,输入命令rz然后选文件(这个速度有点慢)
使用rz命令需要下载一个软件
方法二:使用xshell的文件传输
然后解压
移动,相当于重命名
然后配置环境变量
在末尾添加:
#java
export JAVA_HOME=/export/servers/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#hadoop
export HADOOP_HOME=/export/servers/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
配置完成后需要使用source命令使配置文件生效
6. hadoop集群环境配置
进入目录:cd /export/servers/hadoop/etc/hadoop/
可以看到有这些文件
我们需要配置一些文件(三个机器相同配置)
vi hadoop-env.sh,修改java路径,指定jdk的位置
vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/servers/hadoop/tmp</value> #指定临时文件的位置,如果后面不小心多次格式化,要在这里删除临时文件
</property>
vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value> <!--默认是3-->
</property>
<property>
<name>dfs.namenode.secondary.http-address</name> #namenode备份secondaryNameNode,namenode坏了,会自动开启这个备份
<value>hadoop02:50090</value>
</property>
ll map*
我们可以看到,没有mapred-site.xml,只有一个模板文件,所以要创一个相同内容的mapred-site.xml
cp mapred-site.xml.template mapred-site.xml,把mapred-site.xml.template内容复制到mapred-site.xml中
vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
vi slaves
格式化文件系统(在集群中任何一台机器执行都可以)
hadoop namenode -format
(格式化一次就好,不要格式化太多次,会出错,出错后,需要把临时文件和日志文件删除后再格式化)
7. 开启集群并测试
在随便目录下都可以,开启集群可以一个一个节点的开,也可以一键开启
解释:
hadoop01中有NameNode和DataNode
hadoop02有DataNode和SecondaryNameNode(NameNode的备份)
hadoop03只有DataNode
关闭集群:把上面开启的start改成stop就可(关闭集群才能关闭操作系统,否则文件可能会出错)
开启集群
./start-all.sh(不推荐)
输入命令:
关闭集群:./stop-all.sh
8. UI界面管理集群
要在windows下的浏览器中访问,需要在Windows下配置ip地址的映射(配置后在cmd中可以通过ping hadoop01 ping通)
进入下面目录:C:\Windows\System32\drivers\etc
管理员权限打开hosts文件,修改文件
添加下面内容,进行ip映射
在浏览器中访问:
9. 测试集群-单词统计wordcount
方法一:
查看数据文件
初始没有
首先先在/export目录下创建data目录(之前已经创建过了)
data下新建word.txt,编写一些单词
然后将文件导入到hdfs文件系统中
上传文件到目录
上传jar包
jar包位置:/export/servers/hadoop/share/hadoop/mapreduce下
运行jar包
之后我们就可以自己写MapReduce的jar包,然后运行自己的功能。
补充:
hadoop集群部署模式:
hadoop目录及各目录的作用
bin:hadoop服务脚本
etc:配置文件
include:C++相关的服务文件
lib:一些库文件
libexec:shell相关的配置文件
sbin:hadoop管理脚本
share:各种各样的jar包
src:hadoop源码包
hadoop集群主要配置文件解释
hadoop集群修改配置文件及解释
下面这一步只限于只在hadoop01中配置,其他两个机器进行分发,如果其他两个机器已经配置过了,可以省略这一步,要不会重复。
格式化主节点的文件系统
启动和关闭hadoop集群
单节点逐个启动
启动主节点,namenode
启动datanode
使用jps查看已经启动的京城目录
然后启动其他两个虚拟机的datanode节点
启动yarn的主节点
启动nodemanager
然后启动其他两个虚拟机的nodemanager节点
启动secondaryNameNode
关闭节点,把start换成stop就可以了
一键启动和关闭
执行脚本,启动node集群
启动yarn集群
通过ui界面,查看hadoop集群运行状态
50070:hdfs监控端口
8088:yarn监控端口
配置ip地址的映射
C:\Windows\System32\drivers\etc
进入hadoop集群运行管理界面
进入yarn集群管理界面
体验hadoop集群
查看数据文件
初始没有
首先先在/export目录下创建data目录
data下新建word.txt,编写一些单词
然后将文件导入到hdfs文件系统中
上传文件到目录
上传jar包
jar包位置:/export/servers/hadoop/share/hadoop/mapreduce下
运行jar包
之后我们就可以自己写MapReduce的jar包,然后运行自己的功能。