当前位置:   article > 正文

hadoop入门(单机、集群搭建)_hadoop 单机升集群

hadoop 单机升集群

一、环境准备

系统 :centos7

hadoop版本:hadoop3.1.3

JDK:1.8

二、jdk配置

1、下载JDK方到指定目录并解压

解压:tar -zxvf jdk-8u221-linux-x64.tar.gz
  • 1

2、配置java环境变量

vim /etc/profile
  • 1

在文件末尾添加并保存

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
  • 1
  • 2
  • 3

3、让修改后的文件生效

source /etc/profile
  • 1

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)
说明配置成功
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、hadoop运行环境搭建

1、配置ssh免密登录

(1)

ssh-keygen
  • 1

一直回车

(2)将生成的密钥发送到本机地址

ssh-copy-id localhost
  • 1

(注意:若报错找不到命令则需要安装openssh-clients执行:yum -y install openssh-clients 即可)

(3)测试免登录是否成功

ssh localhost
  • 1

2、hadoop环境配置

(1)下载Hadoop

https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
  • 1

(2)、将下载好的包上传到系统中某个目录下,并解压

tar -zxvf hadoop-3.1.3.tar.gz
  • 1

(3)、配置环境变量

vim /etc/profile
  • 1

在文件中添加

export HADOOP_HOME=/base/hadoop/hadoop-3.1.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 1
  • 2

让修改后的文件生效

source /etc/profile


  • 1
  • 2
  • 3

(4)、验证是否配置成功

hadoop version
  • 1

在这里插入图片描述

3、hadoop目录结构说明

(1)、目录结构

在这里插入图片描述

(2)重要目录说明

*bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
*etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
*lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
*sbin目录:存放启动或停止Hadoop相关服务的脚本
*share目录:存放Hadoop的依赖jar包、文档、和官方案例
  • 1
  • 2
  • 3
  • 4
  • 5

四、运行HDFS(单机版)

1、HDFS配置

(1)、Hadoop中的重要目录说明

1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本

2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)

4)sbin目录:存放启动或停止Hadoop相关服务的脚本

5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(2)、配置 hadoop下 /etc/hadoop 的 hadoop-env.sh 文件

在该文件中添加Java的JAVA_HOME

export JAVA_HOME=具体目录根据自己的环境配置
  • 1

(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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

(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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

(5)、格式化namenod

在启动hadoop集群前需要格式化namenode。需要注意的是,第一次安装Hadoop集群的时候需要格式化Namenode,以后直接启动Hadoop集群即可,不需要重复格式化Namenode。

在Hadoop目录下输入如下命令

bin/hdfs namenode -format
  • 1

(6)、启动
在hadoop目录下输入

./sbin/start-dfs.sh 
  • 1

若在启动中报错如下:

Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
  • 1
  • 2

则需要在 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"
  • 1
  • 2
  • 3
  • 4
  • 5

(7)、访问(根据自己的地址来访问)

在访问前先查看下防火墙是否开着
查看防火墙状态:firewall-cmd --state
若是running,则表示防火墙开着,则需要关闭防火墙.若是not running ,则表示防火墙关闭状态。
关闭防火墙命令:systemctl stop firewalld.service
    
  • 1
  • 2
  • 3
  • 4
  • 5
	IP:50070
  • 1

在这里插入图片描述

五、运行YARN(单机版)

1、配置yarn-env.sh

(1)、配置yarn-env.sh

配置一下 JAVA_HOME
export JAVA_HOME=XXXXX
  • 1
  • 2

(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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(3)、mapred-env.sh

配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
  • 1
  • 2

(4)、mapred-site.xml

</configuration>
	<!-- 指定MR运行在YARN上 -->
    <property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(5)、启动
在hadoop目录下输入

./sbin/start-yarn.sh
  • 1

若在启动中报错如下:

Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
  • 1
  • 2

则需要在 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"
  • 1
  • 2
  • 3
  • 4
  • 5

访问:IP:8088
在这里插入图片描述

六、hadoop集群搭建

1、集群规划

hadoop22(192.168.85.22)hadoop23(192.168.85.23)hadoop24(192.168.85.24)
HDFSNameNode
DateNode
DateNode
SecondaryNameNode
DateNode
YARNNodeManagerResourceManager
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

(2)、HDFS配置

a、hadoop-env.sh 配置

文件内容加入一下配置

#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
  • 1
  • 2
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

(3)、YARN配置

a、yarn-env.sh 配置

文件内容加入一下配置

#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
  • 1
  • 2
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

(4)、MapReduce配置

a、mapred-env.sh 配置

文件内容加入一下配置

#java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_144
  • 1
  • 2
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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、配置SSH无密登录

(1)、配置ssh

生成公钥和私钥:

ssh-keygen

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
  • 1
  • 2
  • 3

将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop22
ssh-copy-id hadoop23
ssh-copy-id hadoop24
  • 1
  • 2
  • 3

注:以上ssh配置都需要在每个服务器上配置一下

4、群起集群配置

(1)、配置workers文件

workers在hadoop主目录下 etc/hadoop/中

vim etc/hadoop/workers
  • 1

添加以下内容

hadoop22
hadoop23
hadoop24
  • 1
  • 2
  • 3

这些配置需要所有的服务器一致,将这些文件复制到其他服务器即可。

5、启动

如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[root@hadoop22 hadoop-3.1.3] ./bin/hdfs namenode -format
  • 1
  • 2
  • 3

(1)、启动HDFS

若在启动中报错如下:

Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
  • 1
  • 2

则需要在 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"
  • 1
  • 2
  • 3
  • 4
  • 5

在hadoo22主机上

[root@hadoop22 hadoop-3.1.3]# ./sbin/start-dfs.sh
  • 1

查看是否启动成功

[root@hadoop22 hadoop-3.1.3]# jps
20242 DataNode
20089 NameNode
23007 Jps
  • 1
  • 2
  • 3
  • 4

查看其他两个主机

[root@hadoop23 hadoop-3.1.3]# jps
2025 DataNode
23006 Jps
  • 1
  • 2
  • 3
[root@hadoop24 hadoop-3.1.3]# jps
20432 DataNode
2039 SecondaryNameNode
23007 Jps
  • 1
  • 2
  • 3
  • 4

(2)、启动YARN

若在启动中报错如下:

Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
  • 1
  • 2

则需要在 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"
  • 1
  • 2
  • 3
  • 4
  • 5

注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

在hadoo23主机上

[root@hadoop23 hadoop-3.1.3]# ./sbin/start-yarn.sh
  • 1

6、查看web页面

地址 http://192.168.85.22:9870
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/775158
推荐阅读
相关标签
  

闽ICP备14008679号