一 . 下载:

hadoop 2.8.4 安装包

http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz

Java8 安装包,下载最新的Java8对应的Linux版本即可

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

二 . 配置环境变量:

首先将hadoop 2.8.4 与Java8 的安装包上传到linux系统中(我是放在/opt/software这个位置),然后解压到目录下,解压命令如下:

tar -zxvf   jdk-8u144-linux-x64.tar.gz   -C /opt/software/
tar -zxvf  hadoop-2.8.4.tar.gz   -C /opt/software/ 

然后配置环境变量:

vi /etc/profile 

添加如下内容:

export JAVA_HOME=/opt/software/jdk1.8.0_144
export HADOOP_HOME=/opt/software/hadoop-2.8.4
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME\bin:$HADOOP_HOME\sbin:$PATH

然后使用命令刷新一下环境变量:

source /etc/profile

在部署hadoop前的准备工作:

1.关闭防火墙:

systemctl stop firewalld.service

2.关闭开机自启动 iptables

systemctl disable firewalled.serg

3.关闭SElinux

setenforce 0

4.关闭开机自启动SElinux

vi /etc/selinux/config
SELINUX=disable

5.通过修改 /etc/hosts 文件配置本地主机名映射

在 /etc/hosts 中添加主机
本机IP 主机名

三 . 伪分布式部署hadoop

首先设置SSH无密码登录,生成公钥和私钥:

ssh-keygen -t rsa

然后敲三个回车,就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥),将公钥拷贝到需要免密登录的目标机器上

ssh-copy-id 主机名

然后进入 /opt/software/hadoop.2.8.4/etc/hadoop 目录下,首先编辑core-site.xml文件:

vi core-site.xml

在<configuration></ configuration >中添加如下配置:

 <!-- 指定HDFS中NameNode的地址 -->
 <property>
     <name>fs.defaultFS</name>
     <value>hdfs://主机名1:9000</value>
 </property>
  
 <!-- 指定hadoop运行时产生文件的存储目录 -->
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/opt/software/hadoop-2.8.4/data/tmp</value>
 </property> 

编辑 hdfs-site.xml文件:

vi hdfs-site.xml

在<configuration></ configuration >中添加如下配置:

 <!--数据冗余数-->
 <property>
     <name>dfs.replication</name>
     <value>3</value>
 </property>
 <!--secondary的地址-->
 <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>主机名1:50070</value>
 </property>
 <!--关闭权限-->
 <property>
     <name>dfs.permissions</name>
     <value>false</value>
 </property> 

编辑 yarn-site.xml文件:

vi yarn-site.xml 

在<configuration></ configuration >中添加如下配置:

 <!-- reducer获取数据的方式 -->
 <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
 </property>
  
 <!-- 指定YARN的ResourceManager的地址 -->
 <property>
     <name>yarn.resourcemanager.hostname</name>
     <value>主机名1</value>
 </property>
 <!-- 日志聚集功能使能 -->
 <property>
     <name>yarn.log-aggregation-enable</name>
     <value>true</value>
 </property>
 <!-- 日志保留时间设置7天(秒) -->
 <property>
     <name>yarn.log-aggregation.retain-seconds</name>
     <value>604800</value>
 </property> 

编辑 mapred-site.xml 由于目录下本身没有这个文件,只有一个 mapred-site.xml .template文件,首先备份一下这个文件

 cp -pdf  mapred-site.xml.template   mapred-site.xml.template.bac 

然后将 mapred-site.xml.template 重命名为 mapred-site.xml

mv  mapred-site.xml.template  mapred-site.xml  

然后编辑 mapred-site.xml 文件:

vi  mapred-site.xml  

在<configuration></ configuration >中添加如下配置:

 <!-- 指定mr运行在yarn上-->
 <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
 </property>
 <!--历史服务器的地址-->
 <property>
     <name>mapreduce.jobhistory.address</name>
     <value>主机名1:10020</value>
 </property>
 <!--历史服务器页面的地址-->
 <property>
     <name>mapreduce.jobhistory.webapp.address</name>
     <value>主机名1:19888</value>
 </property> 

修改hadoop目录下 conf/hadoop-env.sh的环境变量,在末尾添加:

export JAVA_HOME= /opt/software/jdk1.8.0_144 

配置完毕后进入 /opt/software/hadoop.2.8.4/ bin 目录下格式化Namenode:

  hdfs namenode -format 

接下来就可以启动集群了,例如启动全部:

 start-all.sh 

如果启动时出现如下错误:

[root@master sbin]# ./start-dfs.sh
Starting namenodes on [master]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

在/hadoop.2.8.4/sbin路径下,将start-dfs.sh、stop-dfs.sh、start-all.sh、stop-all.sh文件顶部添加以下参数:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有 start-yarn.sh,stop-yarn.sh顶部也需添加以下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改后重启 start-all.sh

以下提供一些常用的启动和停止命令( 以下命令都在 /opt/software/hadoop.2.8.4/sbin下 ) :

启动/停止历史服务器 mr-jobhistory-daemon.sh start|stop historyserver
启动/停止总资源管理器 yarn-daemon.sh start|stop resourcemanager
启动/停止节点管理器 yarn-daemon.sh start|stop nodemanager
启动/停止 NN 和 DN start|stop-dfs.sh
启动/停止 RN 和 NM start|stop-yarn.sh
启动/停止 NN、DN、RN、NM start|stop-all.sh
启动/停止 NN hadoop-daemon.sh start|stop namenode
启动/停止 DN hadoop-daemon.sh start|stop datanode