1.实验环境准备:
(1) 进行实验前准备,在VMware上安装一台CentOS7虚拟机,虚拟机的IP及机器名称如下
主机名 IP地址 角色
hadoop163.cn 192.168.150.163 NameNode /DataNode
(2) 机器上配置hosts文件,实现域名与IP地址的对应,具体如下:(真实生产系统中在DNS服务器上配置)
[root@hadoop163 ~]# vim /etc/hosts
192.168.150.163 hadoop163.cn
(3)创建运行hadoop用户账号和Hadoop目录。
创建hadoop账号:
[root@hadoop163 ~]# useradd -u 8000 hadoop
#为了保障,在其它服务器上创建的hadoop用户ID保持一致,创建时,尽量把UID调大
[root@ hadoop163 ~]# echo 123456 | passwd --stdin hadoop
注:创建用户hadoop时,不能使用参数-s /sbin/nologin ,因为稍后我们要su - hadoop 切换用户
(4)配置Hadoop环境,安装Java环境JDK
1.安装jdk ,上传jdk-8u161-linux-x64.rpm软件包到hadoop163服务器
安装及配置Java运行环境—jdk。升级了jdk的版本
[root@ hadoop163 ~]# rpm –ivh jdk-8u161-linux-x64.rpm
[root@ hadoop163 ~]#rpm -pql /root/jdk-8u161-linux-x64.rpm
#通过查看jdk的信息可以知道jdk的安装目录在/usr/java
2.配置JAVA环境变量
[root@Hadoop163 ~]#vim /etc/profile
#在文件的最后添加以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JAVA_BIN=/usr/java/jdk1.8.0_161/bin
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
[root@hadoop163 ~]#source /etc/profile
#使配置文件生效
验证java运行环境是否安装成功:
[root@ hadoop163 ~]# java –version
显示如下信息表示配置正确:
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
如果出现安装的对应版本,说明java运行环境已经安装成功。
注:这里只是升级了jdk的版本,因为在我安装的系统中已经安装了jdk。
(4)关闭防火墙:
[root@ hadoop163 ~]# systemctl stop firewalld.service
[root@ hadoop163 ~]# systemctl disable firewalld.service
(5) 配置无密码访问(单台机器也需要设置无密码访问)
首先,切换到hadoop账号下:
[Hadoop@hadoop163 ~]$ ssh-keygen //生成秘钥
[Hadoop@hadoop163 ~]$ ssh-copy-id 192.168.150.163 //分发秘钥
2、Hadoop安装配置
(1)将hadoop-3.0.0.tar.gz上传到服务器/home/hadoop/目录下
Hadoop安装目录:/home/hadoop/hadoop-3.0.0
注意:以下步骤使用hadoop账号操作。
[root@hadoop163 ~]# su - hadoop
[hadoop@hadoop163 ~]$ tar zxvf hadoop-3.0.0.tar.gz
#只要解压文件就可以,不需要编译安装
(2)创建hadoop相关的工作目录
[hadoop@hadoop163 ~]$ mkdir -p /home/hadoop/dfs/name
[hadoop@hadoop163 ~]$ mkdir -p /home/hadoop/dfs/data
[hadoop@hadoop163 ~]$ mkdir -p /home/hadoop/tmp
[hadoop@hadoop163 ~]$ ls
dfs hadoop-3.0.0 hadoop-3.0.0.tar.gz tmp
(3)配置Hadoop:需要修改7个配置文件。
文件位置:/home/hadoop/hadoop-3.0.0/etc/hadoop/
文件名称:hadoop-env.sh、yarn-evn.sh、workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1)配置文件hadoop-env.sh,指定hadoop的java运行环境
该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
[hadoop@ hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hadoop-env.sh
改:54 # export JAVA_HOME=
为:export JAVA_HOME=/usr/java/jdk1.8.0_161
注:指定java运行环境变量
2)配置文件yarn-env.sh,保存yarn框架的运行环境(仅查看,不需要修改)
该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。
yarn :Hadoop 的新 MapReduce 框架Yarn是Hadoop 自 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理
[hadoop@hadoop163 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-env.sh
查看优先规则:
## Precedence rules:
##
## yarn-env.sh > hadoop-env.sh > hard-coded defaults
3)配置文件core-site.xml,指定访问hadoop web界面访问路径
这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;
hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下(我们已经在前面创建)。
[hadoop@ hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/core-site.xml
改:
19 <configuration>
20 </configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop163.cn:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
说明:io.file.buffer.size 的默认值 4096 。这是读写 sequence file 的 buffer size, 可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536
4)配置文件hdfs-site.xml
这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;
dfs.replication配置了文件块的副本数,一般不大于从机的个数。
[root@ hadoop163 hadoop]# vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hdfs-site.xml
改:19 <configuration>
20
21 </configuration>
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop163.cn:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.http.address</name>
<value> hadoop163.cn:50070</value>
</property>
</configuration>
5)配置文件mapred-site.xml
这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,
同时指定:Hadoop的历史服务器historyserver
Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的。
修改mapred-site.xml
[hadoop@hadoop hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/mapred-site.xml
改:19 <configuration>
20
21 </configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>0.0.0.0:19888</value>
</property>
</configuration>
6)配置节点yarn-site.xml
该文件为yarn框架的配置,主要是一些任务的启动位置
[hadoop@hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-site.xml
# 修改configuration内容如下:
改:
<configuration>
<!-- Site specific YARN configuration properties -->
</configuration>
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop163.cn:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop163.cn:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop163.cn:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop163.cn:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop163.cn:8088</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/home/hadoop/hadoop-3.0.0/etc/hadoop:/home/hadoop/hadoop-3.0.0/share/hadoop/common/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/common/*:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/*:/home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/*:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/* </value>
</property>
</configuration>
7)编辑datanode节点host,修改workers文件
[hadoop@hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/workers
修改为,因为是伪分布,所以添加机器本身
hadoop163.cn
3、在hadoop163上启动Hadoop
hadoop用户下操作:
1)hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了
[hadoop@hadoop163 hadoop-3.0.0]$ /home/hadoop/hadoop-3.0.0/bin/hdfs namenode -format
2)启动hdfs: ./sbin/start-dfs.sh,即启动HDFS分布式存储
启动文件的路径为:/home/hadoop/hadoop-3.0.0/sbin/
[root@hadoop163 ~]# /home/hadoop/hadoop-3.0.0/sbin/start-dfs.sh
3)启动yarn: ./sbin/start-yarn.sh 即,启动分布式计算
[hadoop@ hadoop163 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/start-yarn.sh
注:start-dfs.sh 和 start-yarn.sh 这两个脚本可用start-all.sh代替。
[hadoop@hadoop163 ~]$ /home/hadoop/hadoop-3.0.0/sbin/start-all.sh
关闭:
[hadoop@hadoop163 ~]$ /home/hadoop/hadoop-3.0.0/sbin/stop-all.sh
------------------------------以下服务可以不启动--------------------------------------------------
4)启动: jobhistory服务,查看mapreduce运行状态
[hadoop@hadoop163 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver
5)在主节点上启动存储服务和资源管理主服务。使用命令:
[hadoop@hadoop163 ~]$ /home/hadoop/hadoop-3.0.0/sbin/hadoop-daemon.sh start datanode
#启动从存储服务
[hadoop@hadoop163 ~]$ /home/hadoop/hadoop-3.0.0/sbin/yarn-daemon.sh start nodemanager
#启动资源管理从服务
4、查看服务器状态
1)通过Web查看hadoop集群状态: http://hadoop163.cn:8088
(2)查看JobHistory的内容:(前提是任务历史服务器已经启动)
http://hadoop163.cn:19888/jobhistory