前期准备
CentOS7版本的服务器4台:(IP地址可以根据自己服务器或虚拟机的IP地址更改)
192.168.153.136 hadoop01
192.168.153.137 hadoop02
192.168.153.138 hadoop03
192.168.153.139 hadoop04
Hadoop包:http://archive.apache.org/dist/hadoop/core/hadoop-2.8.0/(JDK版本是1.7,对应的Hadoop包版本是2.8以上)
JDK安装:https://blog.csdn.net/Ka_Ka314/article/details/78925671(JDK使用的是1.7版本)
lrzsz安装:https://blog.csdn.net/Ka_Ka314/article/details/78925384
网卡配置:https://blog.csdn.net/Ka_Ka314/article/details/82502390
SSH免密:https://blog.csdn.net/Ka_Ka314/article/details/82998917
fw防火墙:https://blog.csdn.net/Ka_Ka314/article/details/83028374
配主机名:https://blog.csdn.net/Ka_Ka314/article/details/82999194
域名映射:vim /etc/hosts中添加4台机器的域名映射
创建用户:在每台机器上创建hadoop用户(本文是使用的虚拟机,在虚拟机创建时已经创建了hadoop用户)
环境搭建:
1、创建hadoop的安装目录,在当前用户目录下(~)执行如下命令(该目录根据用户自己习惯指定,本文是统一安装在~/apps):
mkdir apps
2、上传hadoop包(hadoop-2.8.0.tar.gz)到hadoop01服务器上:
(1)rz上传
(2)sftp上传
。。。
3、解压安装到指定目录:(因为当前用户是hadoop用户,所以sudo)
sudo tar -zxvf hadoop-2.8.0.tar.gz -C apps/
4、解压完成后目录结构如下:
bin:
Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。
etc:
Hadoop配置文件所在的目录,主要包括:
- hadoop-env.sh:hadoop的环境配置,如配置JAVA_HOME等
- core-site.xml:集群全局参数,用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录等
- hdfs-site.xml:HDFS参数,如名称节点和数据节点的存放位置、文件副本的个数、文件读取权限等
- mapred-site.xml:Mapreduce参数,包括JobHistory Server和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等
- yarn-site.xml:集群资源管理系统参数,配置 ResourceManager,NodeManager 的通信端口,web监控端口等
include:
对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。
lib:
该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。
libexec:
各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。
sbin:
Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
share:
Hadoop各个模块编译后的jar包所在的目录。
5、配置Hadoop的运行环境JAVA_HOME:
vim etc/hadoop/hadoop-env.sh
修改环境配置文件中的JAVA_HOME,改成当前环境的路径,如下:
6、core-site.xml配置(其他参数配置:https://blog.csdn.net/Ka_Ka314/article/details/83058925)
序号 | 参数名 | 默认值 | 参数解释 |
1 | fs.defaultFS | file:/// | 文件系统主机和端口 |
2 | io.file.buffer.size | 4096 | 流文件的缓冲区大小 |
3 | hadoop.tmp.dir | /tmp/hadoop-${user.name} | 临时文件夹 |
配置方式如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdpdata</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
7、hdfs-site.xml配置(其他参数配置:https://blog.csdn.net/Ka_Ka314/article/details/83058925)
序号 | 参数名 | 默认值 | 参数解释 |
1 | dfs.namenode.secondary.http-address | 0.0.0.0:50090 | 定义HDFS对应的HTTP服务器地址和端口 |
2 | dfs.namenode.name.dir | file://${hadoop.tmp.dir}/dfs/name | 定义DFS的名称节点在本地文件系统的位置 |
3 | dfs.datanode.data.dir | file://${hadoop.tmp.dir}/dfs/data | 定义DFS数据节点存储数据块时存储在本地文件系统的位置 |
4 | dfs.replication | 3 | 缺省的块复制数量 |
5 | dfs.webhdfs.enabled | true | 是否通过http协议读取hdfs文件,如果选是,则集群安全性较差 |
配置方式如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
8、mapred-site.xml配置(其他参数配置:https://blog.csdn.net/Ka_Ka314/article/details/83058925)
序号 | 参数名 | 默认值 | 参数解释 |
1 | mapreduce.framework.name | local | 取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配 |
2 | mapreduce.jobhistory.address | 0.0.0.0:10020 | 定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录 |
3 | mapreduce.jobhistory.webapp.address | 0.0.0.0:19888 | 定义历史服务器web应用访问的地址和端口 |
配置方式如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
9、yarn-site.xml配置(其他参数配置:https://blog.csdn.net/Ka_Ka314/article/details/83058925)
序号 | 参数名 | 默认值 | 参数解释 |
1 | yarn.resourcemanager.address | 0.0.0.0:8032 | ResourceManager 提供给客户端访问的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等 |
2 | yarn.resourcemanager.scheduler.address | 0.0.0.0:8030 | ResourceManager提供给ApplicationMaster的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等 |
3 | yarn.resourcemanager.resource-tracker.address | 0.0.0.0:8031 | ResourceManager 提供给NodeManager的地址。NodeManager通过该地址向RM汇报心跳,领取任务等 |
4 | yarn.resourcemanager.admin.address | 0.0.0.0:8033 | ResourceManager 提供给管理员的访问地址。管理员通过该地址向RM发送管理命令等。 |
5 | yarn.resourcemanager.webapp.address | 0.0.0.0:8088 | ResourceManager对web 服务提供地址。用户可通过该地址在浏览器中查看集群各类信息 |
6 | yarn.nodemanager.aux-services |
| 通过该配置项,用户可以自定义一些服务,例如Map-Reduce的shuffle功能就是采用这种方式实现的,这样就可以在NodeManager上扩展自己的服务。 |
配置方式如下:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
10、将hadoop安装目录复制到其他机器上(hadoop作为namenode节点,其他机器作为datanode节点)
sudo scp -r apps hadoop02:/home/hadoop/
sudo scp -r apps hadoop03:/home/hadoop/
sudo scp -r apps hadoop04:/home/hadoop/
(因为当前用户是hadoop用户,所以sudo)
11、每台机器上配置hadoop环境变量(可以在hadoop01配置完成后,通过scp到其他机器上)
JAVA_HOME=/usr/local/jdk1.7.0_71
HADOOP_HOME=/home/hadoop/apps/hadoop-2.8.0
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME CLASSPATH PATH
配置完成后source该配置:
sudo source /etc/profile
(因为当前用户是hadoop用户,所以sudo)
12、namenode上即hadoop01上格式化dfs
hadoop namenode -format
13、启动hadoop
(1)启动hadoop前,需要配置下datanode节点,如下:
vim /home/hadoop/apps/hadoop-2.8.0/etc/hadoop/slaves
在该文件中天健datanode节点:(在这里需要注意一点:需要在/etc/hosts下配置下映射)
hadoop02
hadoop03
hadoop04
(2)启动hadoop
cd /home/hadoop/apps/hadoop-2.8.0/sbin
这里面包含了许多的脚本命令:
可以通过start- or stop- 进行启动和停止服务,示例:(启动hdfs)
start-dfs.sh
这时候,该脚本会去找/home/hadoop/apps/hadoop-2.8.0/etc/hadoop/slaves中配置的其他节点,通过ssh的方式启动其他节点的服务,这里需要注意配置下免密登陆
14、验证hadoop启动是否成功
(1)通过jsp命令可以查看每台服务器启动的服务
(2)通过http://192.168.153.136:50070界面版可以查看