当前位置:   article > 正文

hadoop集群搭建详细过程(完全分布式)_hadoop 分布式集群,从机只有nodemanager

hadoop 分布式集群,从机只有nodemanager

一、所需资源下载路径

  • linux选用centos8
https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.2.2004-x86_64-dvd1.iso
  • 1
  • jdk1.8(hadoop是java写的,运行需要jre)
    https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz
    
    • 1
  • hadoop3
链接:https://pan.baidu.com/s/11sPp1oec6uBi8Ci1BvV0rw 提取码:1234
  • 1

二、centos基础环境配置

1. JDK8配置

1)scp 本机中jdk文件 username@centos的ip:目标路径。解压到 /opt/module目录下(个人习惯)。
2)配置JAVA_HOME、JRE、CLASSPATH环境变量
修改/etc/profile在文件末尾添加:

export JAVA_HOME=/opt/moudle/jdk-14.0.2
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  • 1
  • 2
  • 3
  • 4

2.修改centos虚拟机的基本环境

1)将动态ip改为静态ip

修改/etc/sysconfig/network-script/ifcfg-ens33


TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"

 

DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="9931db14-5f9e-4366-99c2-d5a218ef645c"
DEVICE="ens33"
1. 修改BOOTPROTO="static"
2. 修改ONBOOT="yes"
3. 添加
IPADDR="192.168.152.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.152.2"
DNS1="114.114.114.114"

  • 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

2)关闭防火墙

关闭防火墙服务systemctl stop firewalld
关闭开机启动 systemctl disable firewalld
关闭selinux :
vim /etc/sysconfig/selinux 然后将配置SELinux=enforcing改为SELinux=disabled

关闭windows防火墙,否则linux ping 不通windows
关闭 防火墙和网络保护 =>

  • 局域网
  • 专用网络
  • 公用网络

三、hadoop集群配置

192.168.179.20192.168.179.30192.168.179.31
master20slaver30slaver31

1.克隆master20虚拟机得到 slaver30 slaver31

  • 为slaver配置静态ip (vim /etc/sysconfig/network-script/ifcfg-ens33)
  • 为slaver设置hostname (vim /etc/hostname)
  • 设置host映射(vim /etc/hosts)
  • 为每一台都配置ssh登录(实现任意两台可以ssh登录,并且自己可以ssh登录自己)
    执行:ssh-keygen
    新建文件:vim ~/.ssh/authorized_keys (权限:chmod 600 authorized_keys ;chmod 700 -R .ssh)
    公钥分发:ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@172.168.179.30

2. 配置hadoop

1) 配置环境变量
修改/etc/profile末尾添加(source /etc/profile后生效)
  • 1
 export HADOOP_HOME=/opt/moudle/hadoop-3.3.0
 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 1
  • 2
2)修改hadoop配置文件(/opt/moudule/hadoop3/etc/hadoop)
(1)在 core-site.xml 添加以下配置
<configuration>
        <!-- NameNode 在hadoop集群中的通讯地址(有别于web端对hdfs的访问) -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master20:9000</value>
    </property>

   <!-- NameNode,DataNode数据默认都存放这个目录下(可以再对应的配置文件中覆盖),一个月后会数据丢失 -->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/moudule/hadoop3/data/tmp</value>
   </property>
   <!-- 权限-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
	<property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
<!-- 配置hdfs web页面的静态用户,可以删除文件-->
    <property>
            <name>hadoop.http.staticuser.user</name>
            <value>root</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
(2) 在 hadoop-env.sh 最后添加以下配置
export JAVA_HOME=/opt/moudule/jdk8


#root用户启动失败 修改 etc/hadoop/hadoop-env.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
  • 6
  • 7
  • 8
  • 9
  • 10
(3) 在 hdfs-site.xml 中添加以下配置
<configuration>
		<!--namenode的数据存储目录,文件的元数据,不使用core-site中的默认临时目录-->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/opt/moudule/hadoop3/data/name</value>
        </property>
        <!--本结点datanode数据目录,不适用core-site中的默临时存储目录-->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/opt/moudule/hadoop3/data/data</value>
        </property>
        <!--数据块副本的个数-->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <!-- nn web端访问地址-->
        <property>
        	<name>dfs.namenode.http-address</name>
        	<value>master20:9870</value>
        </property>
        <!--2nn web端访问地址-->
        <property>
        	<name>dfs.namenode.secondary.http-address</name>
        	<value>slaver30:9868</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
(4) 在 mapred-site.xml 中添加以下配置
<configuration>
		<!-- 指定MapReduce运行再yarn上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <!-- 历史服务器地址 3台中任意一台作为历史服务器 -->
        <property>
        	<name>mapreduce.jobhistory.address</name>
        	<value>master20:10020</value>
        </property>
  
        <property>
        	<name>mapreduce.jobhistory.webapp.address</name>
        	<value>master20:19888</value>
        </property>
<!-- 配置环境变量 使用cmd:hadoop classpath 来查看hadoop的环境然后粘贴即可-->
<property>
	<name>yarn.app.mapreduce.am.env</name>
	<value>HADOOP_MAPRED_HOME=/opt/moudule/hadoop3/etc/hadoop:/opt/moudule/hadoop3/share/hadoop/common/lib/*:/opt/moudule/hadoop3/share/hadoop/common/*:/opt/moudule/hadoop3/share/hadoop/hdfs:/opt/moudule/hadoop3/share/hadoop/hdfs/lib/*:/opt/moudule/hadoop3/share/hadoop/hdfs/*:/opt/moudule/hadoop3/share/hadoop/mapreduce/*:/opt/moudule/hadoop3/share/hadoop/yarn:/opt/moudule/hadoop3/share/hadoop/yarn/lib/*:/opt/moudule/hadoop3/share/hadoop/yarn/*
</value>
</property>
<property>
	<name>mapreduce.map.env</name>
	<value>HADOOP_MAPRED_HOME=黏贴hadoop classpath</value>
</property>

<property>
	<name>mapreduce.reduce.env</name>
	<value>HADOOP_MAPRED_HOME=黏贴hadoop classpath</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
(5) 在 workers 中修改为如下配置
master20
slaver30
slaver31
  • 1
  • 2
  • 3
(6) 在 yarn-site.xml 添加如下配置
<configuration>

<!-- Site specific YARN configuration properties -->
		<!-- 指定ResourceManager地址-->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>slaver31</value>
        </property>
        <!-- 指定resourcemanager web端地址-->
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>192.168.179.20:8088</value>
        </property>
        <!-- 指定MR走shuffle-->
        <property>
                <name>yarn.nodemanager.aux-service</name>
                <value>mapreduce_shuffle<vim /value>
        </property>
		<!-- 开启日志聚集功能 -->
		<property>
			<name>yarn.log-aggregation-enable</name>
			<value>true</value>
		</property>
		<!-- 设置日志聚集服务器地址 集群中任意一台 -->
		<property>
			<name>yarn.log.server.url</name>
			<value>http://master20:19888/jobhistory/logs</value>
		</property>
		<!-- 设置日志保留时间为7天-->
		<property>
			<name>yarn.log-aggregation.retain-seconds</name>
			<value>604800</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
  • 34
(7) 将 hadoop 目录从 master 拷贝到 slave1 与 slave2,由于之前配置了免密登录,所以不需要输入密码即可完成拷贝.
(8) 创建临时文件目录 (三台机器都需创建), 创建的目录对应于 hdfs-site.xml 中配置的数据存储目录
(9) 格式化 hdfs 文件系统,在master结点上的hadoop的安装目录下的 bin 目录下执行以下命令
hdfs namenode -format
  • 1
(10) 运行hadoop集群
start-all.sh
  • 1

四、测试

在master30执行jps命令:
在这里插入图片描述
namenode: hdfs的master
resourcemanager: yarn的master
在slaver执行jps:
在这里插入图片描述
datanode: hdfs的slaver
nodemanager: yarn的slaver

恭喜你,大功告成!!!

Tips: 启用 历史服务器:mr-jobhistory-daemon.sh start historyserver
启动对应的模块时候,必须在模块的主节点启动,否则会失败(yarn必须在slaer31上启动)。

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

闽ICP备14008679号