Hadoop 2.7.4 完全分布式安装与部署

本文详细介绍了Hadoop2.7.4版本在三台CentOS7服务器上的完全分布式安装与配置过程,包括服务器准备、JDK安装、SSH无密码登录设置、Hadoop下载与解压、环境变量及配置文件修改等关键步骤,以及HDFS和YARN集群的启动与测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hadoop 2.7.4 完全分布式安装与部署

Hadoop官方指导传送门 传送门

服务器准备

服务器规划,提供 3 台服务器,OS 为centos 7

主机名IP预备分配服务
centos-node1192.168.99.101DataNode,NodeManager,NameNode
centos-node2192.168.99.102DataNode,NodeManager,SecondaryNameNode
centos-node3192.168.99.103DataNode,NodeManager,ResourceManager,HistoryServer

修改主机名

$ hostnamectl set-hostname centos-node1

修改服务器静态IP

可以使用 netstat -r 来查询网关如下图所示:

image-20200911142643578

然后将 dhcp 改为 静态IP

$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s8

完全配置如下所示:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
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="enp0s8"
UUID="5b4ea2f4-a5af-4fac-8793-81692730dad9"
DEVICE="enp0s8"
ONBOOT="yes"

# 新增
GATEWAY=192.168.99.0  # 修改网关,虚拟机需要注意修改nat
IPADDR=192.168.99.101 # 分配IP地址
NETMASK=255.255.255.0 # 子网掩码
DNS1=223.5.5.5        # 使用阿里公共DNS1
DNS2=223.6.6.6        # 使用阿里公共DNS2

修改 hosts

$ vi /etc/hosts
# 添加
192.168.99.101 centos-node1
192.168.99.102 centos-node2
192.168.99.103 centos-node3

安装 JDK8

$ vi /etc/profile
# 添加
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

增加 dhfs 用户

通常,建议HDFS和YARN以单独的用户身份运行。

在大多数安装中,HDFS进程以 “hdfs” 执行。YARN通常使用 “yarn” 帐户

$ adduser hdfs
$ passwd hdfs # 修改密码

/etc/sudoers添加如下图所示:

image-20200911170014063

设置 SSH 无密码登录

  1. 3 台服务器全部设置

    $ ssh-keygen -t rsa
    
  2. 各自分配 ssh key

    $ ssh-copy-id centos-node1
    $ ssh-copy-id centos-node2
    $ ssh-copy-id centos-node3
    

安装部署 Hadoop

切换至 hdfs 用户

$ su - hdfs

下载

$ curl -O https://archive.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz

解压

$ tar -zxf hadoop-2.7.4.tar.gz  -C /opt/hadoop-2.7.4
$ ln -s /opt/hadoop-2.7.4 /usr/local/hadoop
$ chown -R hdfs /opt/hadoop-2.7.4

修改环境变量

$ sudo vi /etc/profile
# 修改为
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
HADOOP_HOME=/usr/local/hadoop
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin

export JAVA_HOME JRE_HOME PATH CLASSPATH HADOOP_HOME

修改 Hadoop 配置

这里我们进入$HADOOP_HOME文件夹开始操作

$ mkdir -p $HADOOP_HOME/hdfs/data
$ mkdir -p $HADOOP_HOME/tmp

配置hadoop-env.sh

$ sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

增加 或 修改

export JAVA_HOME=/usr/local/java/

配置core-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml

configuration配置如下

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://centos-node1:4000</value>
        <description>HDFS的URI,文件系统://namenode标识:端口号</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
        <description>namenode上本地的hadoop临时文件夹</description>
    </property>
</configuration>

配置说明:

fs.defaultFSNameNode的地址。

hadoop.tmp.dirhadoop临时目录的地址。默认情况下,NameNodeDataNode的数据文件都会存在这个目录下的对应子目录下。

配置hdfs-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

内容如下:

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>centos-node2:50090</value>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>centos-node2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

配置说明:

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将centos-node2规划为SecondaryNameNode服务器。

dfs.http.address配置的是本机默认的dfs地址,有些服务器可以不用配置,我的试过了,必须加上,不然后续网页打不开。

dfs.namenode.name.dir 指定name文件夹。

dfs.datanode.data.dir 指定data文件夹。

dfs.datanode.data.dir 指定副本数,一般小于服务器数,我们设置为3

配置 slaves

hadoop2.x中叫做slaves,在3.x版本中改名workers。 用来指定HDFS上有哪些DataNode节点,以及各个节点使用ip地址或者主机名,用换行分隔。

$ sudo vi $HADOOP_HOME/etc/hadoop/slaves

这里我们就使用主机名

centos-node1
centos-node2
centos-node3

配置yarn-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

配置如下

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>centos-node3</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
  	</property>
        <name>yarn.application.classpath</name>
    		<value>
            /opt/hadoop-2.7.4/etc/hadoop,
            /opt/hadoop-2.7.4/share/hadoop/common/*,
            /opt/hadoop-2.7.4/share/hadoop/common/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/hdfs/*,
            /opt/hadoop-2.7.4/share/hadoop/hdfs/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/mapreduce/*,
            /opt/hadoop-2.7.4/share/hadoop/mapreduce/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/yarn/*,
            /opt/hadoop-2.7.4/share/hadoop/yarn/lib/*
   		</value>
</configuration>

配置说明:

按照规划使用centos-node3做为 resourcemanager 使用yarn.log-aggregation-enable开启日志聚合,yarn.log-aggregation.retain-seconds配置聚集的日志在HDFS上最多保存多长时间。

配置mapred-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

配置如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>centos-node3:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>centos-node3:19888</value>
    </property>
</configuration>

配置说明:

mapreduce.framework.name设置mapreduce任务运行在yarn上。

mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在centos-node3上。

mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。

yarn.app.mapreduce.am.env,mapreduce.map.env,mapreduce.reduce.env需要设置为HADOOP_MAPRED_HOME=${HADOOP_HOME},否则在运行yarn程序的时候会出现jar包未找到的错误。

启动 Hadoop 集群

完成上述所有必要的配置后,将文件分发到所有服务器的HADOOP_CONF_DIR目录下/usr/local/hadoop/etc/hadoop。在所有计算机上,该目录应该是相同的目录。

注意:启动和停止单个hdfs相关的进程使用的是"hadoop-daemon.sh"脚本,而启动和停止yarn使用的是"yarn-daemon.sh"脚本。

格式化

要启动Hadoop集群,需要同时启动HDFSYARN集群。 首次启动HDFS时,必须对其进行格式化。将新的分布式文件系统格式化为hdfs.

$ $HADOOP_HOME/bin/hdfs namenode -format <群集名称>

集群名称可以不填写,不出意外,执行完成后$HADOOP_HOME/hdfs中就有东西了。

启动 HDFS

如果配置了slavesssh互信我们可以

$ $HADOOP_HOME/sbin/start-dfs.sh

启动 YARN

如果配置了workers和ssh互信我们可以

$ $HADOOP_HOME/sbin/start-yarn.sh

启动 ResourceManager

规划在centos-node3上,因此我们在centos-node3上执行

$ $HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager

启动 HistoryServer

规划在centos-node3上,因此我们在centos-node3上执行

$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver

查看HDFS Web页面

位于centos-node150070端口:http://centos-node1:50070/

image-20200913152341967

查看YARN Web 页面

位于centos-node38088端口:http://centos-node3:8088/

image-20200913152504612

查看历史WEB页面

位于centos-node319888端口:http://centos-node3:19888/

image-20200913152549303

测试

为了测试我们使用 wordcount 来测试

  1. 新建文件

    $ sudo vi /opt/word.txt
    
  2. 文本内容

    hadoop mapreduce hive
    hbase spark storm
    sqoop hadoop hive
    spark hadoop
    
  3. 新建hadoop里文件夹demo

    $ hadoop fs -mkdir /demo
    
  4. 文件写入

    $ hdfs dfs -put /opt/word.txt /demo/word.txt
    
  5. 执行输入到hadoop的/output

    $ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /demo/word.txt /output
    
  6. 查看文件列表

    $ hdfs dfs -ls /output
    
    Found 2 items
    -rw-r--r--   3 root supergroup          0 2020-09-13 16:01 /output/_SUCCESS
    -rw-r--r--   3 root supergroup         60 2020-09-13 16:01 /output/part-r-00000
    
  7. 查看文件中内容

    $ hdfs dfs -cat /output/part-r-00000
    
    hadoop  3
    hbase   1
    hive    2
    mapreduce       1
    spark   2
    sqoop   1
    storm   1
    

参考资源

https://juejin.im/post/6844904041013575688#heading-21

### 如何在Ubuntu 20.04 LTS上安装配置Hadoop集群 #### 准备工作 为了确保顺利搭建Hadoop集群,在开始之前需确认已准备好如下资源: - 虚拟化软件VMware Workstation Pro版本16.1.0 build-17198959用于创建运行Ubuntu系统的虚拟机环境[^1]。 - Ubuntu操作系统选用20.04.2 LTS桌面版64位作为基础平台来部署整个开发测试环境。 #### 安装必要的工具和服务 通过命令行执行一系列操作以准备基本的系统环境,这包括但不限于安装文本编辑器、SSH服务器以及关闭不必要的安全防护措施以便于后续网络通信设置: ```bash sudo apt-get install vim sudo apt install openssh-server sudo ufw disable ``` 对于想要利用Open VM Tools实现更佳性能优化和支持特性的用户来说,则还需要额外完成下面两条指令: ```bash sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop ``` 最后赋予特定账户管理员权限并刷新包列表至最新状态: ```bash sudo usermod -aG sudo hduser sudo apt-get update && sudo apt-get upgrade ``` #### Hadoop集群的具体构建过程 当上述准备工作完成后,接下来就是针对Hadoop本身的安装配置环节。考虑到个人笔记本电脑上的实验性质,推荐采用伪分布式的部署方式。具体而言,即在同一台机器内部模拟多节点间的交互协作机制而不必真正连接其他物理设备形成跨主机的真实集群架构。 首先获取适合目标平台使用的稳定发行版——这里指定了`hadoop-2.7.4.tar.gz`文件,并将其解压到指定目录下;此同时也要注意配套JDK的选择,如文档中提到的`jdk-8u281-linux-x64.tar.gz`同样适用于此场景下的依赖需求。 之后按照官方指引调整相应参数设定(比如core-site.xml, hdfs-site.xml等),使得各个组件能够正常协同运作起来。值得注意的是,如果打算进一步扩展成完全分布式模式的话,则还需涉及到更多复杂的网络规划及数据同步策略等方面的内容超出了本次讨论范围。 #### IP地址验证静态分配 为保证各实例间稳定的通讯质量,建议固定每台参计算任务的工作站所持有的公网或局域网内的唯一标识符—IP地址。可以通过修改/etc/netplan/*.yaml文件的方式达到目的,同时记得重启对应的服务使更改生效[^3]。 另外,适当时候应该考虑更新本机名称映射关系(/etc/hosts),从而简化日常管理维护流程中的域名解析步骤。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值