千家信息网

一、安装hadoop

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,[TOC]一、安装前准备工作1、使用软件包情况软件包版本centos(redhat也是类似)7.2 x64hadoop2.8.4VMware workstations pro12.0jdk1.82、系
千家信息网最后更新 2026年11月04日一、安装hadoop

[TOC]

一、安装前准备工作

1、使用软件包情况

软件包版本
centos(redhat也是类似)7.2 x64
hadoop2.8.4
VMware workstations pro12.0
jdk1.8

2、系统环境准备

(1)关闭防火墙以及selinux

这个操作不是必须的,只是为了防止在一开始的过程中,因为防火墙的配置原因以及selinux的限制导致一些不必要的困难而已。
首先关闭防火墙:

//关闭防火墙并禁止开机自启动systemctl stop firewalldsystemctl disable firewalld

接着关闭selinux:

//查看selinux开启状态,enforcing 为开启getenforce//首先更改selinux配置文件,防止重启后自动开启selinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config//接着修改当前系统的selinux开启状态,0表示禁用setenforce 0

(2)配置IP以及主机名

虚拟机所在网段 192.168.50.0/24,网关为 192.168.50.2,处于NAT网络模式中。
配置虚拟为静态IP:192.168.50.121

//首先关闭 NetworkManager 这个网络服务,经常干扰到网络问题[root@localhost software]# systemctl stop NetworkManager[root@localhost software]# systemctl disable NetworkManager//然后修改网卡配置文件[root@localhost software]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no#BOOTPROTO=dhcpBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=83b16941-ca72-46ad-85d4-c32929147098DEVICE=ens33ONBOOT=yesIPADDR=192.168.50.121GATEWAY=192.168.50.2NETMASK=255.255.255.0DNS1=192.168.50.2//最后重启网络 network 服务[root@localhost software]# systemctl restart network//查看ip是否设置成功[root@localhost software]# ip addr show dev ens332: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 00:0c:29:ea:b1:f7 brd ff:ff:ff:ff:ff:ff    inet 192.168.50.121/24 brd 192.168.50.255 scope global ens33       valid_lft forever preferred_lft forever    inet6 fe80::20c:29ff:feea:b1f7/64 scope link        valid_lft forever preferred_lft forever

修改主机名为 bigdata121:

[root@localhost software]# hostnamectl set-hostname bigdata121//该命令同时修改当前系统用户名,以及 /etc/hostname 配置文件中的配置

(3)安装jdk

众所周知,hadoop 是使用java开发的,那么它就必须使用jdk来运行。下面开始安装jdk

//创建两个文件夹用于存放压缩包以及解压程序,software放压缩包,modules解压[root@localhost software]# mkdir /opt/{software,modules}//解压jdk 到modules 目录下[root@localhost software]# tar zxf jdk-8u144-linux-x64.tar.gz -C /opt/modules///检查下本地是否有安装了其他版本的jdk,一般centos默认自带openjdk,最好卸载掉[root@localhost software]# rpm -qa | grep java[root@localhost software]# rpm -e xxxx//配置jdk PATH环境变量[root@localhost software]# vim /etc/profile.d/java.sh#!/bin/bashexport JAVA_HOME=/opt/modules/jdk1.8.0_144export PATH=$PATH:${JAVA_HOME}/bin//让新的环境变量生效[root@bigdata121 opt]# source /etc/profile.d/java.sh//检查环境变量是否配置成功,正确显示下面的信息即为成功[root@bigdata121 opt]# java -versionjava version "1.8.0_144"Java(TM) SE Runtime Environment (build 1.8.0_144-b01)Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)[root@bigdata121 opt]# javac -versionjavac 1.8.0_144

二、安装并配置hadoop

1、安装hadoop程序

//上传hadoop压缩包到 software,并解压到 modules[root@bigdata123 opt]# tar zxf software/hadoop-2.8.4.tar.gz -C /opt/modules///设置hadoop环境变量,将bin以及sbin目录加入环境变量[root@bigdata121 hadoop-2.8.4]# vim /etc/profile.d/hadoop.sh#!/bin/bashexport HADOOP_HOME=/opt/modules/hadoop-2.8.4export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin[root@bigdata121 hadoop-2.8.4]# source /etc/profile.d/hadoop.sh//检查配置是否正确,打印以下信息表示OK[root@bigdata121 hadoop-2.8.4]# hadoop versionHadoop 2.8.4Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674Compiled by jdu on 2018-05-08T02:50ZCompiled with protoc 2.5.0From source with checksum b02a59bb17646783210e979bea443b0This command was run using /opt/modules/hadoop-2.8.4/share/hadoop/common/hadoop-common-2.8.4.jar

2、hadoop组件中的成员

hadoop项目主要包含yarn、MapReduce、HDFS这三大组件,以及包含Common这个辅助工具包。

(1)yarn

用于作业调度与集群资源管理的框架,里面包含以下成员:

ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。其实就是MapReduce任务的driver端程序运行的地方Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。负责运行map或者reduce任务

(2)HDFS

一个分布式文件系统,适用于一次写入多次读取的场景。里面包含以下成员:

NameNode(nn):存储文件的元数据,如文件名、文件目录结构,文件属性等,以及每个文件的块列表和块所在的DataNode等。以及响应客户端对hdfs的读写操作。还有保存读写日志DataNode(dn):在本地文件系统中存储文件块数据,以及块数据的校验和SecondaryNameNode(snn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,相当于对NameNode进行备份。

3、hadoop的三种安装模式

有三种安装模式:本地模式、伪分布式模式,完全分布式模式

(1)本地模式

这种模式下是直接使用本地文件系统作为存储系统,没有HDFS,没有yarn,只能用于测试MR程序,MR程序直接从本地文件系统读取文件。
步骤:

/*配置/opt/modules/hadoop-2.8.4/etc/hadoop/hadoop-env.sh修改这个主要是为了防止系统中JAVA_HOME这个环境变量没有设置,而且这里获取JAVA_HOME的时候是没有判断是否为空,所以最好手动指定一下。如果确定系统中配置了的话,就无需改动。*/[root@bigdata121 hadoop]# vim hadoop-env.shexport JAVA_HOME=${JAVA_HOME}改为:export JAVA_HOME=/opt/modules/jdk1.8.0_144

这个过程中无需启动hadoop的任何服务,因为只是使用MR框架而已。无需用到hdfs以及yarn。
使用wordcount实例测试:

[root@bigdata121 opt]# mkdir testdir//创建字符统计的源数据文件。[root@bigdata121 opt]# echo "i am wang , so you are wang too . i just jin tao king ." > testdir/name.txt//运行wordcount,hadoop jar 目标jar包 主类名 输入文件 输出文件[root@bigdata121 opt]# cd modules/hadoop-2.8.4/share/hadoop/mapreduce/[root@bigdata121 mapreduce]# hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /opt/testdir/name.txt /opt/testdir/name.txt.output//查看词频统计结果[root@bigdata121 mapreduce]# cat /opt/testdir/name.txt.output/part-r-00000 ,   1.   2am  1are 1i   2jin 1just    1king    1so  1tao 1too 1wang    2you 1

注意:如果同时启动了伪分布模式或者完全分布模式,本地模式就无法使用了,因为会默认到hdfs集群中寻找文件。而不是到本地文件系统中找文件。

(2)伪分布式模式

就是在一台机器上部署完整的hadoop环境,具备yarn,hdfs,mapreduce功能。
主要有以下几个组件和角色:

组件包括角色
HDFSNameNode, SecondaryNameNode,DataNode
YARNResourceManager,NodeManager

需要修改的配置文件,在 $HADOOP_HOME/etc/hadoop/:
1>core-site.xml

                                fs.defaultFS                hdfs://bigdata121:9000                                        hadoop.tmp.dir                /opt/modules/hadoop-2.8.4/data/tmp        

2>hdfs-site.xml

                                dfs.replication                1                                        dfs.namenode.secondary.http-address                bigdata121:50090                                        dfs.permissions                false        

3>yarn-site.xml

                                yarn.nodemanager.aux-services                mapreduce_shuffle                                        yarn.resourcemanager.hostname                bigdata121                                        yarn.log-aggregation-enable                true                                        yarn.log-aggregation.retain-seconds                604800        

4>mapred-site.xml

                                mapreduce.framework.name                yarn                                        mapreduce.jobhistory.address                bigdata121:10020                                        mapreduce.jobhistory.webapp.address                bigdata121:19888        

修改完配置文件后,对NameNode 进行格式化,生成hdfs需要的环境:

[root@bigdata121 hadoop-2.8.4]# hdfs namenode -format注意:不要重复格式化,否则后面会无法启动hdfs集群,如果需要重复格式化,请先手动删除原来的hdfs的文件目录

接着启动集群:

//启动hdfs相关的进程,如 nameNode,DataNode  ,对应的是关闭是 stop-dfs.sh[root@bigdata121 hadoop-2.8.4]# start-dfs.sh //启动yarn,对应的是关闭是 stop-yarn.sh[root@bigdata121 hadoop-2.8.4]# start-yarn.sh也可以使用 start-all.sh 一起启动集群相关服务,但是该脚本已经弃用,不建议继续使用,建议使用上面的分部方式。

jps查看相关进程是否启动:

[root@bigdata121 sbin]# jps15649 SecondaryNameNode15493 DataNode18278 Jps15368 NameNode15804 ResourceManager15901 NodeManager可以看到已经正常启动了

也可以使用web查看相关的管理页面:

http://bigdata121:8088 yarn管理页面http://bigdata121:50070 HDFS管理页面

(3)完全分布式模式

在至少3台机器上部署完整的hadoop环境,具备yarn,hdfs,mapreduce功能。
在配置完全分布式之前,因为我们在启动每个进程时(datanode,namenode等这些进程),都需要手动输入启动进程所在的机器的用户密码。以及在关闭时,也是需要手动输入密码,这样过于繁琐。所以一般都会配置集群机器之间使用秘钥登录,这样就无需手动输入密码了。

首先准备3台机器,因为一般hdfs中默认都是3副本,所以最少DataNode为3台机器。可以使用上面的伪分布式虚拟机克隆出两台虚拟机即可。各台主机的ip,以及启动的hadoop的进程情况规划如下:

bigdata121bigdata122bigdata123
ip192.168.50.121/24192.168.50.122/24192.168.50.123/24
HDFSNameNode, SecondaryNameNodeDataNodeDataNode
YARNResourceName,NodeManagerNodeManager

1> 配置三台机器之间可以秘钥登录(包括自己登录自己),三台主机执行下面的命令:

//生成秘钥[root@bigdata122 ~]# ssh-keygen//将公钥复制到三台机器的USER_HOME/.ssh目录下[root@bigdata122 ~]# ssh-copy-id bigdata121[root@bigdata122 ~]# ssh-copy-id bigdata122[root@bigdata122 ~]# ssh-copy-id bigdata123

2> 配置三台机器时间同步
因为处于同一集群中,需保证时间一致,否则容易出现问题,导致集群紊乱。使用ntp同步时间

//能够联网[root@bigdata121 ~]# /usr/sbin/ntpdate cn.ntp.org.cn//无法联网情况下,手动修改[root@bigdata121 ~]# data -s "xxxx"

3>配置文件修改

主要配置文件和伪分布式模式中是一样,除了将副本数修改为2。另外还需修改以下文件。
etc/hadoop/slaves 主要用于指定 DataNode 的主机名(主机名和ip均可,但要保证能解析到主机名),如:

//加上 datanode ip或者主机名[root@bigdata121 hadoop-2.8.4]# cat etc/hadoop/slaves bigdata122bigdata123

然后按按照伪分布式模式格式化即可

4>启动集群
启动只需在NameNode以及 ResourceManager所在的机器上启动即可。他们会分别取其他机器上启动对应的 dataNode以及NodeManager(其实就是用ssh类似的方式远程到其他主机上执行启动服务的脚本而已,这就是为啥要配置免密登录了)。
NameNode:

[root@bigdata121 hadoop-2.8.4]# start-dfs.sh Starting namenodes on [bigdata121]bigdata121: starting namenode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-namenode-bigdata121.outbigdata123: starting datanode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-datanode-bigdata123.outbigdata122: starting datanode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-datanode-bigdata122.outStarting secondary namenodes [bigdata121]bigdata121: starting secondarynamenode, logging to /opt/modules/hadoop-2.8.4/logs/hadoop-root-secondarynamenode-bigdata121.out看日志就知道,分别到三台主机启动对应的进程服务

ResourceManager:

[root@bigdata121 hadoop-2.8.4]# start-yarn.shstarting yarn daemonsstarting resourcemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-resourcemanager-bigdata121.outbigdata123: starting nodemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-nodemanager-bigdata123.outbigdata122: starting nodemanager, logging to /opt/modules/hadoop-2.8.4/logs/yarn-root-nodemanager-bigdata122.out

注意:NameNode以及 ResourceManager必须是所在的机器上启动,如果两者不是在同一台机器上的话,就必须分别到各自的机器单独启动。

5>配置过程中遇到的问题
常见问题是datanode中无法启动datanode进程。查看 HADOOP_HOME/logs/xxx.log 启动日志得知,是namenode和datanode的clusterID不同导致无法启动。这种情况一般出现在重复格式化的时候,导致clusterID不同。解决方法就是删掉namenode数据目录,然后重新格式化即可。

文件 配置 模式 机器 环境 系统 主机 分布式 集群 进程 变量 数据 程序 任务 格式 目录 服务 运行 命令 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司税收优惠 盈实互联网科技 时间互联网络科技 大白互联网科技 互联网科技咨询 居家互联网科技有限公司 互联网科技生活的内容 深圳前海聚择互联网科技有限公司 济南华为互联网科技产业总部基地 现代互联网科技股 宝灵互联网科技有限公司 互联网科技公司实习生 玉溪互联网科技怎么选 恒生互联网科技指数跳水 亳州好赞互联网科技有限公司 企晟互联网信息科技有限公司 洛阳共同富裕互联网科技有限公司 福建互联网展示科技馆设计 现代互联网科技公司 上海互联网科技园景观 华服互联网科技靠谱吗 互联网科技工作委员会主任 广州宏创互联网科技 赶超互联网科技 微信多开 萌小萌互联网科技河南有限公司 广西科技产业互联网是什么 长沙易易互联网科技有限公司 河南商务圈互联网科技有限公司 上海旺乐尼互联网科技有限公司 科技发展第三阶段互联网时代
0