一、环境准备
1.准备四台虚拟机,虚拟机安装及克隆,配置ip请移步另一篇博客:https://blog.csdn.net/qq_40825301/article/details/105214440
2.每台虚拟机修改hostname,我四台虚拟机配置的是 eleven-2,eleven-3,eleven-4,eleven-5.
命令:
vi /etc/sysconfig/network
编辑后保存:
3.每台虚拟机配置hosts.: 命令 vi /etc/hosts
4.永久性的关闭防火墙,四台虚拟机。避免之后启动hadoop发生错误找不到原因。
最终配置的四台虚拟机为 :(再次提示关闭防火墙)
hostname | ip | 该机上要配置的角色 |
eleven-2 | 192.168.40.33 | namenode |
eleven-3 | 192.168.40.34 | secondary namenode ,datanode |
eleven-4 | 192.168.40.35 | datanode |
eleven-5 | 192.168.40.36 | datanode |
二、环境搭建
2.1从节点要对主节点免密访问,即eleven-2要能免密访问 eleven-5,eleven-4 eleven-3。
1.将eleven-2下的.ssh文件下的公钥文件id_dsa.pub 分发至另外三台虚拟机的同目录下
scp id_dsa.pub root@eleven-3:/root/.ssh/
2.在另外三台服务器上操作,将eleven-2的公钥添加至验证文件中
cat id_dsa.pub >> authorized_keys
3.验证eleven-2是否能免密访问另外三台虚拟机
ssh eleven-3...
2.2 安装jdk,注意是oracle的jdk,如果安装了open jdk,先卸载掉
hadoop3.0之前的版本可用jdk1.7,3.0之后的版本需要用jdk1.8
我要安装的hadoop是3.0之前的版本,所以jdk用的是:jdk-7u80-linux-x64.rpm,提取码:d531。
将jdk上传至每台虚拟机,切换至存放的路径下,执行命令进行安装
rpm -i jdk-7u80-linux-x64.rpm
2.3配置jdk环境变量,
配置环境变量的文件: /etc/profile
命令 : vi /etc/profile
在文件末尾追加
export JAVA_HOME=/usr/java/jdk1.7.0_80
PATH=$PATH:$JAVA_HOME/bin
保存退出
重新编译环境变量配置文件
. /etc/profile
验证,查看java进程
命令 : jps
2.4安装hadoop,我用的版本为hadoop-2.6.5.tar.gz,提取码为 sqty
三台虚拟机都要操作,可先在一台服务器上操作,然后分发至另外三台
1.将hadoop上传至虚拟机
2.解压,这里我的解压路径为 /opt/sxt/
3.配置环境变量
1.vi /etc/profile
2.在末尾追加,
export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
并修改path为
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.保存退出
4.配置hadoop,hadoop的配置文件存放在 /安装路径下/hadoop-2.6.5/etc/hadoop ,启动hadoop时,会自动来读取hadoop下的文件,所以这个文件夹名称不要改。
1.配置hadoop中用到的jdk环境变量(二次环境变量配置),切换到 /opt/sxt/hadoop-2.6.5/etc/hadoop 目录下。
编辑 hadoop-env.sh 文件 ,改成下图这样
编辑 mapred-env.sh (计算框架用的配置脚本) 配置成如下图
编辑 yarn-env.sh (资源管理) 配置成如下图
2.配置hadoop相关配置,,可查看官网,有详细讲解。
编辑 core-site.xml (主配置文件),增加如下配置
<configuration>
#######配置主节点(namenode),这里将eleven-2作为namenode服务器,可更改成你自己的#######
<property>
<name>fs.defaultFS</name>
<value>hdfs://eleven-2:9000</value>
</property>
#######配置元数据,及数据信息存放路径##########
#####默认是一个临时文件路径,真是环境中可能会发生丢失的风险,所以需要自定义一个路径存放那些数据,需要将此文件夹创建
###格式化的时候在此路径下会生成name文件夹,生成fsimage即时快照,和custmid(集群id)
###hadoop启动后会生成 data及secondary namenode的文件夹,存放元数据及数据信息。
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/full</value>
</property>
</configuration>
效果如下:
编辑 hdfs-site.xml ,配置副本数量及secondary namenode服务器。
<configuration>
####配置副本数量,最好小于等于从节点的数量,多了没什么用
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
####配置secondary namenode的服务器为eleven-3,可改成你自己的
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>eleven-3:50090</value>
</property>
</configuration>
效果如下:
编辑 slaves 文件,配置从节点服务器,datanode.
#####增加以下三行,表明将eleven-3。eleven-4,eleven-5作为从节点服务器。(datanode的服务器)
eleven-3
eleven-4
eleven-5
效果如下:
3.将eleven-2配置好的hadoop分发至另外三台服务器同目录下,也可以每台服务器做以上同样的配置
命令:
scp -r hadoop-2.6.5 eleven-4:/opt/sxt/
4.三台从节点服务器上配置hadoop的环境变量,可以eleven-2配置好的/etc/profile 分发至另外三台服务器同目录下,然后编译下环境变量文件
##将eleven-2配置好的/etc/profile 分发至另外三台服务器
scp /etc/profile eleven-3:/etc/
##编译下
source /etc/profile
三,hadoop启动,在主节点namenode上操作
1.格式化,格式化后会在配置的full目录下生成name文件夹,存放namenode的信息
命令
hdfs namenode -format
成功后效果如下:
2.启动hadoop,启动成功后会在从节点的每台服务器上的full文件夹下生成对应角色的文件夹。
启动命令:
start-dfs.sh
成功后效果如下:可以看到启动了相关角色。可在每个服务器的full文件夹下看到对应的文件夹。
3.浏览器请求验证
hadoop提供可视化管理工具 ,可以用外部浏览器访问管理页面,
解释:所有的计算和文件管理操作都是在datanode节点上执行的,但是都是通过namenode节点去操作的datanode节点,也就是namenode管理着所有的datanode。所以此处访问的管理界面也就是namenode。
浏览器请求 当前虚拟机ip:端口号
先查看当前服务器对外提供的浏览器端口,执行命令 ss -nal
浏览器请求 eleven-2:50070 注意:前提是windows下配置了hosts.否则用ip访问
5.关闭
stop-dfs.sh