一、环境准备
系统 :centos7
hadoop版本:hadoop3.1.3
JDK:1.8
二、jdk配置
1、下载JDK方到指定目录并解压
解压:tar -zxvf jdk-8u221-linux-x64.tar.gz
2、配置java环境变量
vim /etc/profile
在文件末尾添加并保存
export JAVA_HOME=/base/JDK/jdk1.8.0_221
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
3、让修改后的文件生效
source /etc/profile
4、验证是否配置成功
java -version
若返回
openjdk version "1.8.0_222-ea"
OpenJDK Runtime Environment (build 1.8.0_222-ea-b03)
OpenJDK 64-Bit Server VM (build 25.222-b03, mixed mode)
说明配置成功
三、hadoop运行环境搭建
1、配置ssh免密登录
(1)
ssh-keygen
一直回车
(2)将生成的密钥发送到本机地址
ssh-copy-id localhost
(注意:若报错找不到命令则需要安装openssh-clients执行:yum -y install openssh-clients 即可)
(3)测试免登录是否成功
ssh localhost
2、hadoop环境配置
(1)下载Hadoop
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
(2)、将下载好的包上传到系统中某个目录下,并解压
tar -zxvf hadoop-3.1.3.tar.gz
(3)、配置环境变量
vim /etc/profile
在文件中添加
export HADOOP_HOME=/base/hadoop/hadoop-3.1.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
让修改后的文件生效
source /etc/profile
(4)、验证是否配置成功
hadoop version
3、hadoop目录结构说明
(1)、目录结构
(2)重要目录说明
*bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
*etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
*lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
*sbin目录:存放启动或停止Hadoop相关服务的脚本
*share目录:存放Hadoop的依赖jar包、文档、和官方案例
四、运行HDFS(单机版)
1、HDFS配置
(1)、Hadoop中的重要目录说明
1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
4)sbin目录:存放启动或停止Hadoop相关服务的脚本
5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
(2)、配置 hadoop下 /etc/hadoop 的 hadoop-env.sh 文件
在该文件中添加Java的JAVA_HOME
export JAVA_HOME=具体目录根据自己的环境配置
(3)、修改 hadoop下 /etc/hadoop 的 core-site.xml 文件
修改如下
<configuration>
<!--这里路径是namenode 、datanode 等存放的公共临时目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data_hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<!--设置hdfs中服务的主机和端口号-->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.249.133:9000</value>
</property>
</configuration>
(4)、修改 hadoop下 /etc/hadoop 的 hdfs-site.xml 文件
修改如下
<configuration>
<!--设置hdfs中的namenode文件目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/data_hadoop/dfs/name</value>
<final>true</final>
</property>
<!--设置hdfs中的datanode文件目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/data_hadoop/dfs/data</value>
<final>true</final>
</property>
<!--设置数据块副本(由于是单机所以1即可)-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--hdfs的访问权限设置为false-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--web界面访问-->
<property>
<name>dfs.http.address</name>
<value>IP:50070</value>
</property>
</configuration>
(5)、格式化namenod
在启动hadoop集群前需要格式化namenode。需要注意的是,第一次安装Hadoop集群的时候需要格式化Namenode,以后直接启动Hadoop集群即可,不需要重复格式化Namenode。
在Hadoop目录下输入如下命令
bin/hdfs namenode -format
(6)、启动
在hadoop目录下输入
./sbin/start-dfs.sh
若在启动中报错如下:
Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
则需要在 start-dfs.sh,stop-dfs.sh头部中添加如下信息:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
(7)、访问(根据自己的地址来访问)
在访问前先查看下防火墙是否开着
查看防火墙状态:firewall-cmd --state
若是running,则表示防火墙开着,则需要关闭防火墙.若是not running ,则表示防火墙关闭状态。
关闭防火墙命令:systemctl stop firewalld.service
IP:50070
五、运行YARN(单机版)
1、配置yarn-env.sh
(1)、配置yarn-env.sh
配置一下 JAVA_HOME
export JAVA_HOME=XXXXX
(2)、配置 yarn-site.xml
</configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop21</value>
</property>
</configuration>
(3)、mapred-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
(4)、mapred-site.xml
</configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)、启动
在hadoop目录下输入
./sbin/start-yarn.sh
若在启动中报错如下:
Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
则需要在 start-yarn.sh,stop-yarn.sh头部中添加如下信息:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
访问:IP:8088
六、hadoop集群搭建
1、集群规划
hadoop22(192.168.85.22) | hadoop23(192.168.85.23) | hadoop24(192.168.85.24) | |
---|---|---|---|
HDFS | NameNode DateNode | DateNode | SecondaryNameNode DateNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
2、配置集群
选中某一台服务器配置好以下文件。配置完以后要将这些拷贝到其他服务器上。
(1)、核心文件配置
core-site.xml 文件配置
<configuration>
<!--这里路径是namenode 、datanode 等存放的公共临时目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/base/hadoop/data/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<!--设置hdfs中服务的主机和端口号-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop22:9000</value>
</property>
</configuration>
(2)、HDFS配置
a、hadoop-env.sh 配置
文件内容加入一下配置
#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
b、hdfs-site.xml 配置
文件内容加入一下配置
<configuration>
<!--设置数据块副本(由于是三台所以3)-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop24:50090</value>
</property>
</configuration>
(3)、YARN配置
a、yarn-env.sh 配置
文件内容加入一下配置
#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
b、yarn-site.xml 配置
文件内容加入一下配置
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 设置ResourceManage 启动在哪台服务器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop23</value>
</property>
<!-- 开启yarn.webapp.ui2 -->
<property>
<description>To enable RM web ui2 application.</description>
<name>yarn.webapp.ui2.enable</name>
<value>true</value>
</property>
<!-- 默认为true, 当虚拟机内存不够多时,容易超出虚拟机内存 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers. </description>
</property>
</configuration>
(4)、MapReduce配置
a、mapred-env.sh 配置
文件内容加入一下配置
#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
b、mapred-site.xml 配置
文件内容加入一下配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--value对应自己的目录 -->
<property>
<name>mapreduce.application.classpath</name>
<value>/base/hadoop/hadoop-3.1.3/share/hadoop/mapreduce/*:/base/hadoop/hadoop-3.1.3/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
3、配置SSH无密登录
(1)、配置ssh
生成公钥和私钥:
ssh-keygen
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop22
ssh-copy-id hadoop23
ssh-copy-id hadoop24
注:以上ssh配置都需要在每个服务器上配置一下
4、群起集群配置
(1)、配置workers文件
workers在hadoop主目录下 etc/hadoop/中
vim etc/hadoop/workers
添加以下内容
hadoop22
hadoop23
hadoop24
这些配置需要所有的服务器一致,将这些文件复制到其他服务器即可。
5、启动
如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[root@hadoop22 hadoop-3.1.3] ./bin/hdfs namenode -format
(1)、启动HDFS
若在启动中报错如下:
Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
则需要在 start-dfs.sh,stop-dfs.sh头部中添加如下信息:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
在hadoo22主机上
[root@hadoop22 hadoop-3.1.3]# ./sbin/start-dfs.sh
查看是否启动成功
[root@hadoop22 hadoop-3.1.3]# jps
20242 DataNode
20089 NameNode
23007 Jps
查看其他两个主机
[root@hadoop23 hadoop-3.1.3]# jps
2025 DataNode
23006 Jps
[root@hadoop24 hadoop-3.1.3]# jps
20432 DataNode
2039 SecondaryNameNode
23007 Jps
(2)、启动YARN
若在启动中报错如下:
Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
则需要在 start-yarn.sh,stop-yarn.sh头部中添加如下信息:
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
在hadoo23主机上
[root@hadoop23 hadoop-3.1.3]# ./sbin/start-yarn.sh
6、查看web页面
地址 http://192.168.85.22:9870