Hadoop集群搭建(简要)

> 请确保你已经完成虚拟机的安装,并安装好java环境

集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。

HDFS集群负责海量数据的存储,集群中的角色主要有:

NameNode、DataNode、SecondaryNameNode

YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:

ResourceManager、NodeManager

那mapreduce是什么呢?它其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。

集群部署方式

Hadoop部署方式分三种:

1、Standalone mode(独立模式)
独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

2、Pseudo-Distributed mode(伪分布式模式)
伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

3、Cluster mode(群集模式)-单节点模式-高可用HA模式
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。

本教程采用三个节点组成集群

1、 Hadoop运行环境搭建

1.1、修改主机名和hosts文件

1)修改主机名称

sudo hostnamectl set-hostname <newhostname>
 
sudo hostnamectl set-hostname hadoop101
sudo hostnamectl set-hostname hadoop102
sudo hostnamectl set-hostname hadoop103

2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts (此步操作三台机子都要执行)

[root@hadoop102 ~]# vim /etc/hosts

添加如下内容

192.168.24.xxx  hadoop102
192.168.24.xxx  hadoop103
192.168.24.xxx  hadoop104

3)关闭防火墙,关闭防火墙开机自启

[root@hadoop102 ~]# systemctl stop firewalld
[root@hadoop102 ~]# systemctl disable firewalld.service

1.2、SSH无密登录配置
1)hadoop102上生成公钥和私钥:

[root@hadoop102 .ssh]$ pwd
/home/shuidi/.ssh
 
[root@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
 
 
将公钥拷贝到要免密登录的目标机器上
[root@hadoop102 .ssh]$ ssh-copy-id hadoop102
[root@hadoop102 .ssh]$ ssh-copy-id hadoop103
[root@hadoop102 .ssh]$ ssh-copy-id hadoop104

2)hadoop103上生成公钥和私钥:

[root@hadoop103 .ssh]$ pwd
/home/shuidi/.ssh
[root@hadoop103 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
 
 
将公钥拷贝到要免密登录的目标机器上
[root@hadoop103 .ssh]$ ssh-copy-id hadoop102
[root@hadoop103 .ssh]$ ssh-copy-id hadoop103
[root@hadoop103 .ssh]$ ssh-copy-id hadoop104

3)hadoop104上生成公钥和私钥:

[root@hadoop104 .ssh]$ pwd
/home/shuidi/.ssh
 
[root@hadoop104 .ssh]$  ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
 
将公钥拷贝到要免密登录的目标机器上
[root@hadoop104 .ssh]$ ssh-copy-id hadoop102
[root@hadoop104 .ssh]$ ssh-copy-id hadoop103
[root@hadoop104 .ssh]$  ssh-copy-id hadoop104

2、Hadoop部署
2.1
集群部署规划

注意:NameNode和SecondaryNameNode不要安装在同一台服务器

注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

首先,我们需要从官方网站下载Hadoop的最新版本。可以在官网link

打开Hadoop官方网站,点击“Downloads”选项卡。
在“Stable Releases”部分,找到最新的可用版本,并点击下载链接。
选择合适的版本(根据操作系统和需求),下载压缩包。

此时我们默认在/opt/tage/ 下面存放压缩包
/opt/service/下面存放解压后的文件

2.2 、
1)、进入到Hadoop安装包路径下

[root@hadoop102 ~]$ cd /opt/tage/

2)、解压安装文件到/opt/module下面

[root@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/service/

3)、查看是否解压成功

[root@hadoop102 software]$ ls /opt/service/hadoop-3.1.3
bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share

4)、将Hadoop添加到环境变量
(1)获取Hadoop安装路径

[root@hadoop102 hadoop]$ pwd
/opt/service/hadoop-3.1.3

(2)进入/etc/profile

[root@hadoop102 hadoop]$ vim /etc/profile

在profile文件末尾添加hadoop路径:(shitf+g)

#HADOOP_HOME
export HADOOP_HOME=/opt/service/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

(3)保存后退出

:wq

(4)分发环境变量文件`

[root@hadoop102 hadoop]$  /home/root/bin/ xsync /etc/profile

(5)source 是之生效(3台节点)

[root@hadoop102 hadoop]$ source /etc/profile
[root@hadoop103 hadoop]$ source /etc/profile
[root@hadoop104 hadoop]$ source /etc/profile

3、配置集群
1)核心配置文件
配置core-site.xml

[root@hadoop102 hadoop]$ cd $HADOOP_HOME/etc/hadoop
[root@hadoop102 hadoop]$ vim core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/service/hadoop-3.1.3/data</value>
    </property>
 
<!-- 配置HDFS网页登录使用的静态用户为root -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
 
<!-- 配置该root(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
<!-- 配置该root(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
<!-- 配置该root(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>
    <!--  默认配置下存在未授权漏洞,攻击者可以在未授权的情况下远程执行代码。需立即修复加固。禁止匿名访问,在配置文件<bin_path>/etc/hadoop/core-site.xml中增加或修改配置项:-->
    <property>  
        <name>hadoop.http.authentication.simple.anonymous.allowed</name>  
        <value>false</value>  
    </property>
</configuration>

2)HDFS配置文件
配置hdfs-site.xml

[root@hadoop102 hadoop]$ vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
    
    <!-- 测试环境指定HDFS副本的数量1 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

3)YARN配置文件
配置yarn-site.xml

[root@hadoop102 hadoop]$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    
    <!--yarn单个容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

4)MapReduce配置文件
配置mapred-site.xml

[root@hadoop102 hadoop]$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>
 
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

5)配置workers

[root@hadoop102 hadoop]$ vim /opt/service/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

4、 分发Hadoop

[root@hadoop102 hadoop]$ xsync /opt/service/hadoop-3.1.3/

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

[root@hadoop102 hadoop]$ bin/hdfs namenode -format

(2)启动HDFS

[root@hadoop102 hadoop]$ sbin/start-dfs.sh

Web端查看HDFS的Web页面:

http://hadoop102:9870/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值