目录
介绍:
一、环境搭建
(1) 进行实验前准备,在VMware上安装一台CentOS7虚拟机,虚拟机的IP及机器名称如下(安装了可以忽略这一步)
(2) 机器上配置hosts文件,实现域名与IP地址的对应,具体如下:(真实生产系统中在DNS服务器上配置)
(3)创建运行hadoop用户账号和Hadoop目录。
(4)安装Java环境JDK
(4)关闭防火墙并让防火墙不会再启动,如果要启动则使用费enable:
(5) 配置无密码访问(单台机器也需要设置无密码访问)
二、Hadoop安装配置
(1)将hadoop-3.0.0.tar.gz上传到服务器/home/hadoop/目录下
(2)创建hadoop相关的工作目录
(3)配置Hadoop:需要修改7个配置文件。
1)配置文件hadoop-env.sh,指定hadoop的java运行环境
2)配置文件yarn-env.sh,保存yarn框架的运行环境(仅查看,不需要修改)
3)配置文件core-site.xml,指定访问hadoop web界面访问路径
4)配置文件hdfs-site.xml
5)配置文件mapred-site.xml
6)配置节点yarn-site.xml
7)编辑datanode节点host,修改workers文件
三、在hadoop163上启动Hadoop
1)hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了
2)启动hdfs: ./sbin/start-dfs.sh,即启动HDFS分布式存储
3)启动yarn: ./sbin/start-yarn.sh 即,启动分布式计算
4)在主节点上启动存储服务和资源管理主服务。
5)启动: jobhistory服务,查看mapreduce运行状态
四、在web上查看
Hadoop3.0可以实现分布式集群部署。但是有时受实验条件的限制,可以在一台服务器上进行伪分布式部署。本实验先在一台机器上进行伪分布式部署,然后再在伪分布式部署的基础上进行真正的分布式集群部署。
主机名 IP地址 角色
hadoop163.cn 192.168.150.163 NameNode /DataNode
查看自己ip:ifconfig
# vim /etc/hosts
测试,可以ping通:
创建hadoop账号:
#为了保障,在其它服务器上创建的hadoop用户ID保持一致,创建时,尽量把UID调大
[root@hadoop163 ~]# useradd -u 8000 hadoop
#设置用户密码
[root@ hadoop163 ~]# echo 123456 | passwd --stdin hadoop
注:创建用户hadoop时,不能使用参数-s /sbin/nologin ,因为稍后我们要su - hadoop 切换用户
用FileZilla上传JDK包在root文件夹下和hadoop包在hadoop文件夹下,并查看。
下载FileZilla,请查看:https://download.csdn.net/download/qq_41567921/12320520
使用FileZilla,请查看:https://blog.csdn.net/wy_091112/article/details/82145456
不能连接虚拟机,请查看:https://blog.csdn.net/qq_41567921/article/details/105057391
下载两个包,请查看:https://download.csdn.net/download/qq_41567921/12320558
上传成功后,进入root目录查看JDK文件:
进入hadoop目录查看等一下用的压缩包:
安装jdk:
rpm -ivh jdk-8u161-linux-x64.rpm
查看安装位置:【通过查看jdk的信息可以知道jdk的安装目录在/usr/java】 (记下位置,等一下要用)
rpm -pql /root/jdk-8u161-linux-x64.rpm
查看JDK版本:发现版本不是刚才安装的版本,接下来配置java环境变量,让版本为刚才安装的版本
java -version
配置JAVA环境变量:
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
#----------------------------------------------------------------------------------------
#使配置文件生效
source /etc/profile
再次查看java版本,验证是否安装成功:
如果出现安装的对应版本,说明java运行环境已经安装成功。
注:这里只是升级了jdk的版本,因为在我安装的系统中已经安装了jdk。
[root@ hadoop163 ~]# systemctl stop firewalld.service
[root@ hadoop163 ~]# systemctl disable firewalld.service
首先,切换到hadoop账号下:
# 生成秘钥
[Hadoop@hadoop163 ~]$ ssh-keygen
# 分发秘钥
[Hadoop@hadoop163 ~]$ ssh-copy-id 192.168.150.163
生成密钥(一直回车,直到完成):
分发密钥:
Ssh-copy-id后面需要跟上自己的ip地址(通过ifconfig可以查看),让继续的时候选择yes,让输入密码时,输入建立用户时设置的密码。
Hadoop安装目录:/home/hadoop/hadoop-3.0.0
注意:以下步骤使用hadoop账号操作。
[root@hadoop163 ~]# su - hadoop
#只要解压文件就可以,不需要编译安装
[hadoop@hadoop163 ~]$ tar zxvf hadoop-3.0.0.tar.gz
解压完成后会有目录:
在hadoop下创建三个工作目录:
name 、data 、tmp
[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
文件位置:/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
该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
[hadoop@ hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hadoop-env.sh
让文件显示行数,方便看,需要修改的位置是54行:注:指定java运行环境变量
该文件是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
查看优先规则:
这个是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
进入文件,在
fs.defaultFS
hdfs://hadoop163.cn:9000
io.file.buffer.size
4096
hadoop.tmp.dir
file:/home/hadoop/tmp
Abase for other temporary directories.
如图:
说明:io.file.buffer.size 的默认值 4096 。这是读写 sequence file 的 buffer size, 可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536
这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;
dfs.replication配置了文件块的副本数,一般不大于从机的个数。
[root@ hadoop163 hadoop]# vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hdfs-site.xml
在
dfs.namenode.secondary.http-address
hadoop163.cn:9001
dfs.namenode.name.dir
file:/home/hadoop/dfs/name
dfs.datanode.data.dir
file:/home/hadoop/dfs/data
dfs.replication
1
dfs.webhdfs.enabled
true
dfs.http.address
hadoop163.cn:50070
这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,同时指定:Hadoop的历史服务器historyserver
Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的。
[hadoop@hadoop hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/mapred-site.xml
在
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
0.0.0.0:10020
mapreduce.jobhistory.webapp.address
0.0.0.0:19888
该文件为yarn框架的配置,主要是一些任务的启动位置
[hadoop@hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-site.xml
在
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
hadoop163.cn:8032
yarn.resourcemanager.scheduler.address
hadoop163.cn:8030
yarn.resourcemanager.resource-tracker.address
hadoop163.cn:8031
yarn.resourcemanager.admin.address
hadoop163.cn:8033
yarn.resourcemanager.webapp.address
hadoop163.cn:8088
yarn.application.classpath
/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/*
[hadoop@hadoop163 hadoop]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/workers
修改为,因为是伪分布,所以添加机器本身
hadoop用户下操作:
[hadoop@hadoop163 hadoop-3.0.0]$ /home/hadoop/hadoop-3.0.0/bin/hdfs namenode -format
查看是否有文件自动生成,有则说明成功:
启动文件的路径为:/home/hadoop/hadoop-3.0.0/sbin/
[root@hadoop163 ~]# /home/hadoop/hadoop-3.0.0/sbin/start-dfs.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
启动了五个,成功。
用jps查看状态:
使用命令:(使用start-all.sh启动后,这两个服务已经自动启动,不需要再次执行了)
#启动从存储服务
[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
[hadoop@hadoop163 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver
在标题栏中输入:
http://hadoop163.cn:8088
可以查看,则表示已经成功。