作为大数据研发工程师基础技能,当开始着手 Hadoop课程教学时,安装 Hadoop 往往会成为新手的一道门槛。尽管安装其实很简单,书上有写到,官方网站也有 Hadoop 安装配置教程,但由于对 Linux 环境不熟悉,书上跟官网上简略的安装步骤新手往往 Hold 不住。加上网上不少教程也甚是坑,导致很多学生折腾老几天愣是没装好,或者看似配置好了,其实还是无法运行,很是打击学习热情。
环境
本教程使用 CentOS Linux release 7.4.1708 作为系统环境(Centos7.4 64位),请自行安装系统(可参考centos 7.4 详细安装图文教程 - ETl数据挖掘 - 大数据学习网)。
本教程基于原生 Hadoop 2,在 Hadoop 2.7.7 (stable) 版本下验证通过,可适合任何 Hadoop 2.x.y 版本,如 Hadoop 2.7.1、2.6.0、2.4.1等。
准备工作
任务1:安装配置JAVA 环境
具体详细安装步骤参考:centos 7.4 下安装Java1.8 - ETl数据挖掘 - 大数据学习网
任务2:配置SSH免密登录
(1)首先生成密钥对,使用命令:
ssh-keygen## 或者ssh-keygen -t rsa 上面一种是简写形式,提示要输入信息时不需要输入任何东西,直接回车三次即可。
从打印信息中可以看出,私钥id_rsa和公钥id_rsa.pub都已创建成功,并放在 /root/.ssh(隐藏文件夹(以.开头))目录中:
(2)将公钥放置到授权列表文件 authorized_keys中,使用命令:
cp id_rsa.pub authorized_keys
注意:一定要授权列表文件 authorized_keys写对,不能改名。
(3)修改授权列表文件 authorized_keys 的权限,使用命令:
chmod 600 authorized_keys
设置拥有者可读可写,其他人无任何权限(不可读、不可写、不可执行)。
(4)验证免密登录是否配置成功,使用如下命令:
ssh localhost
安装 Hadoop
1. 进入到/opt/目录,解压Hadoop
cd /opt/ tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/hadoop
2. 配置Hadoop系统变量
(1) 首先打开/etc/profile文件(系统环境变量:对所有用户有效):
vim /etc/profile
(2) 在文件底部添加如下内容:
#HADOOP export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_HOME_WARN_SUPPRESS=1 生效环境变量:source /etc/profile
3.配置HDFS
1. 配置环境变量hadoop-env.sh
打开hadoop-env.sh文件:
vi /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
找到JAVA_HOME参数位置,修改为本机安装的JDK的实际位置
2. 配置核心组件core-site.xml
该文件是Hadoop的核心配置文件,其目的是配置HDFS地址、端口号,以及临时文件目录。使用如下命令打开“core-site.xml”文件:
vi /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/core-site.xml
将下面的配置内容添加到 <configuration></configuration>
中间:
<property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://node02:9000</value> </property>
3. 配置文件系统hdfs-site.xml
该文件主要用于配置 HDFS 相关的属性,例如复制因子(即数据块的副本数)、NameNode 和 DataNode 用于存储数据的目录等。在完全分布式模式下,默认数据块副本是3 份。 使用如下命令打开“hdfs-site.xml”文件:
vi /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
将下面的配置内容添加到 <configuration></configuration>
中间:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property>
4. 配置slaves文件(无需修改)
该文件用于记录Hadoop集群所有从节点(HDFS的DataNode和YARN的NodeManager所在主机)的主机名,用来配合一键启动脚本启动集群从节点(并且还需要保证关联节点配置了SSH免密登录)。
打开该配置文件:
vi /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/slaves
我们看到其默认内容为localhost,因为我们搭建的是伪分布式集群,就只有一台主机,所以从节点也需要放在此主机上,所以此配置文件无需修改
5. 配置yarn配置环境变量yarn-env.sh,补全JAVA_HOME对应参数
该文件是YARN框架运行环境的配置,同样需要修改JDK所在位置。
使用如下命令打开“yarn-env.sh”文件:
vi /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/yarn-env.sh
找到JAVA_HOME参数位置,将前面的#去掉,将其值修改为本机安装的JDK的实际位置:
6. 配置计算框架mapred-site.xml
在$HADOOP_HOME/etc/hadoop/目录中默认没有该文件,需要先通过如下命令将文件复制并重命名为“mapred-site.xml”:
cp mapred-site.xml.template mapred-site.xml
接着,打开“mapred-site.xml”文件进行修改:
vim /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/mapred-site.xml
将下面的配置内容添加到 中间:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
7. 配置YARN系统yarn-site.xml
本文件是YARN框架的核心配置文件,用于配置 YARN 进程及 YARN 的相关属性。
使用如下命令打开该配置文件:
vim /usr/local/hadoop/hadoop-2.7.7/etc/hadoop/yarn-site.xml
将下面的配置内容加入中间:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
8.格式化文件系统
hdfs namenode -format
9. 脚本一键启动hdfs
启动集群最常使用的方式是使用脚本一键启动,前提是需要配置 slaves 配置文件和 SSH免密登录。
-
在本机上使用如下方式一键启动HDFS集群start-dfs.sh
在本机上执行 jps
命令,在打印结果中会看到4 个进程,分别是 NameNode、SecondaryNameNode、Jps、和DataNode,如果出现了这 4 个进程表示HDFS启动成功。
10. 启动集群
在本机上使用如下方式一键启动YARN集群:
start-yarn.sh
ps:start-dfs.sh和start-yarn.sh也是sbin目录下的脚本文件。
打印信息:
-
在本机上启动了 ResourceManager守护进程
-
在本机上启动了 NodeManager 守护进程
通过本机的浏览器访问http://本机名:8088或http://本机IP地址:8088查看YARN集群状态,效果如下图所示: