Hadoop完全分布式部署

发布时间:2026/6/29 0:44:35

Hadoop完全分布式部署 原文Hadoop完全分布式部署一、引言简介Hadoop的核心组件Hadoop的生态系统Hadoop的部署模式二、环境准备三、安装虚拟机四、配置主节点master安装JAVA安装Hadoop五、修改Hadoop配置文件1. 修改 core-site.xml2. 修改 hdfs-site.xml3. 修改 yarn-site.xml4. 修改 mapred-site.xml5. 修改 workers六、配置ntp服务1. 更换Yum源2. 安装时间同步服务3. 启动时间同步服务七、虚拟机克隆修改配置slave1、slave2同步主节点 master 时间八、SSH免密登录生成密钥发放密钥九、启动Hadoop集群1. 开启集群2. 启动集群3. 查看Hadoop进程十、监控集群HDFS监控Yarn监控关闭集群注意事项扩展一、引言Hadoop 是一个由Apache软件基金会开发的分布式计算框架它允许快速处理大量数据集。Hadoop是用Java编写的并且设计用于在商用硬件上运行。简介Hadoop的优势1、高可靠性Hadoop底层维护多个数据副本所以即使Hadoop某个计算元素或存储出现故障也不会导致数据的丢失。2、高扩展性在集群间分配任务数据可方便的扩展数以千计的节点。3、高效性在MapReduce的思想下Hadoop是并行工作的以加快任务处理速度。4、高容错性能够自动将失败的任务重新分配。分布式文件系统分布式计算框架资源管理器数据存储和备份映射与规约提高Hadoop框架核心HDFSMapReduceYARN可扩展高容错高性能MapReduce资源利用率执行效率Hadoop的核心组件HDFS(Hadoop Distributed File System): Hadoop的分布式文件系统旨在存储非常大的文件通过分片和复制来提供高吞吐量的数据访问YARN(Yet Another Resource Negotiator): Hadoop的资源管理和调度框架负责管理集群资源以及调度用户应用程序的任务。MapReduce: 一种编程模型用于大规模数据集大于1TB的并行处理。MapReduce任务分为两个主要阶段Map阶段对输入数据进行过滤和排序Reduce阶段汇总Map阶段的结果。Hadoop的生态系统Hive:提供了类似于SQL的查询语言称为HiveQL用于简化对Hadoop中数据的查询。HBase:一个分布式的、面向列的开源数据库适合实时读写要求。Spark:一个快速通用的大规模数据处理引擎支持内存计算。Zookeeper:提供分布式协调服务帮助维护配置信息、命名、提供分布式同步等。Pig:提供了一种高级的、过程化的语言Pig Latin用于数据分析。Sqoop:用于在Hadoop和关系型数据库之间传输数据的工具。Flume:收集、聚合和移动大量日志数据到HDFS中的服务。Oozie:一个工作流调度器用于管理Hadoop作业。Hadoop的部署模式单机模式这是最简单的形式所有守护进程都在同一台机器上运行没有实际的分布式功能。它主要用于学习和测试目的不需要配置hdfs-site.xml和core-site.xml等Hadoop配置文件。伪分布式模式在这种模式下Hadoop的所有守护进程仍然在同一台机器上运行但是每个守护进程都作为独立的Java进程运行。这意味着你可以在一台机器上模拟一个小型的分布式环境同时它也允许你测试Hadoop的分布式特性如HDFS和MapReduce。你需要配置一些基本的Hadoop配置文件来设置这个模式。完全分布式模式这是Hadoop的实际应用形式所有守护进程分布在多台机器上。NameNode和ResourceManager通常位于主节点上而DataNode和NodeManager则分布在从节点上。这种模式能够充分利用集群中的资源提供高可用性和容错能力适用于生产环境。本文本即搭建完全分布式模式二、环境准备LinuxJDK/JREHadoopCentOS-7-x86_64-2009jdk-8u221-linux-x64hadoop-3.1.3下载JDK 1Linux镜像 2远程连接 3虚拟机IP说明master192.168.75.100主节点slave1192.168.75.101从节点1slave2192.168.75.102从节点2三、安装虚拟机先配置主机master后通过 VMware 克隆出两台副机slave1、slave2新建master四、配置主节点master设置静态IP此部分可参考Linux ip地址配置vi/etc/sysconfig/network-scripts/ifcfg-ens33修改IPADDR根据虚拟网卡VMnet8修改IPADDR192.168.75.188GATEWAY192.168.75.2NETTASK255.255.255.8DNS1114.114.114.114DNS28.8.8.8重启网卡servicenetwork restart远程连接FinalShell连接成功关闭防火墙systemctl stop firewalld禁止防护墙开机自启systemctl disable firewalld设置IP映射在此集群中将使用主机名通信。因此设置IP来与之对应类似于域名要绑定IP。编辑/etc/hosts文件vi/etc/hosts添加192.168.75.100 master192.168.75.101 slave1192.168.75.102 slave2安装JAVA从本地上传到 Linux 主机先进到/opt目录cd/opt解压tar-xzvfjdk-8u221-linux-x64.tar.gz-C/opt配置JAVA环境变量vi/etc/profile.d/my_env.sh写入jdk路径# JAVA_HOMEexportJAVA_HOME/opt/jdk1.8.0_221/exportPATH$PATH:$JAVA_HOME/bin重新启动profile验证java是否安装成功java-version安装Hadoop从本地上传文件到Linux主机解压tar-xzvfhadoop-3.1.3.tar.gz-C/usr/local配置Hadoop环境变量同Javavi/etc/profile.d/my_env.sh写入exportHADOOP_HOME/usr/local/hadoop-3.1.3/exportPATH$PATH:$HADOOP_HOME/binexportPATH$PATH:$HADOOP_HOME/sbin进入 hadoop文件目录cd/usr/local/hadoop-3.1.3/etc/hadoop修改hadoop-env.shvihadoop-env.shexportJAVA_HOME/opt/jdk1.8.0_221source/etc/profile修改yarn-env.shexportJAVA_HOME/opt/jdk1.8.0_221修改start-dfs.sh和stop-dfs.sh进入到sbin目录cd/usr/local/hadoop-3.1.3/sbin/vistart-dfs.shvistop-dfs.sh添加HDFS_DATANODE_USERrootHDFS_DATANODE_SECURE_USERhdfsHDFS_NAMENODE_USERrootHDFS_SECONDARYNAMENODE_USERroot修改start-yarn.sh和stop-yarn.shvistart-yarn.shvistop-yarn.sh添加YARN_RESOURCEMANAGER_USERrootHADOOP_SECURE_DN_USERyarnYARN_NODEMANAGER_USERroot验证Hadoop是否安装成功hadoop version五、修改Hadoop配置文件进入配置文件所在路径cd/usr/local/hadoop-3.1.3/etc/hadoop1. 修改 core-site.xmlvicore-site.xml设置HDFS的默认块大小和其他核心参数configurationpropertynamefs.defaultFS/namevaluehdfs://master:8020/value/propertypropertynamehadoop.tmp.dir/namevalue/var/log/hadoop/tmp/value/property/configuration其中master为主机映射名称2. 修改 hdfs-site.xmlvihdfs-site.xml配置NameNode和DataNode的相关属性configurationpropertynamedfs.namenode.name.dir/namevaluefile:///data/hadoop/hdfs/name/value/propertypropertynamedfs.datanode.data.dir/namevaluefile:///data/hadoop/hdfs/data/value/propertypropertynamedfs.namenode.secondary.http-address/namevaluemaster:50090/value/propertypropertynamedfs.replication/namevalue3/value/property/configuration3. 修改 yarn-site.xmlviyarn-site.xmlYARN资源管理器配置configuration!-- Site specific YARN configuration properties --propertynameyarn.resourcemanager.hostname/namevaluemaster/value/propertypropertynameyarn.resourcemanager.address/namevalue${yarn.resourcemanager.hostname}:8032/value/propertypropertynameyarn.resourcemanager.scheduler.address/namevalue${yarn.resourcemanager.hostname}:8030/value/propertypropertynameyarn.resourcemanager.webapp.address/namevalue${yarn.resourcemanager.hostname}:8088/value/propertypropertynameyarn.resourcemanager.webapp.https.address/namevalue${yarn.resourcemanager.hostname}:8090/value/propertypropertynameyarn.resourcemanager.resource-tracker.address/namevalue${yarn.resourcemanager.hostname}:8031/value/propertypropertynameyarn.resourcemanager.admin.address/namevalue${yarn.resourcemanager.hostname}:8033/value/propertypropertynameyarn.nodemanager.local-dirs/namevalue/data/hadoop/yarn/local/value/propertypropertynameyarn.log-aggregation-enable/namevaluetrue/value/propertypropertynameyarn.nodemanager.remote-app-log-dir/namevalue/data/tmp/logs/value/propertypropertynameyarn.log.server.url/namevaluehttp:///master:19888/jobhistory/logs/valuedescriptionURLforjobhistoryserver/description/propertypropertynameyarn.nodemanager.vmem-check-enabled/namevaluefalse/value/propertypropertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/propertypropertynameyarn.nodemanager.aux-services.mapreduce.shuffle.class/namevalueorg.apache.hadoop.mapred.ShuffleHandler/value/propertypropertynameyarn.nodemanager.resource.memory-mb/namevalue2048/value/propertypropertynameyarn.scheduler.minimum-allocation-mb/namevalue512/value/propertypropertynameyarn.scheduler.maximum-allocation-mb/namevalue4096/value/propertypropertynamemapreduce.map.memory.mb/namevalue2048/value/propertypropertynamemapreduce.reduce.memory.mb/namevalue2048/value/propertypropertynameyarn.nodemanager.resource.cpu-vcores/namevalue1/value/property/configuration4. 修改 mapred-site.xmlvimapred-site.xmlMapReduce作业调度相关的配置configurationpropertynamemapreduce.framework.name/namevalueyarn/value/propertypropertynamemapreduce.jobhistory.address/namevaluemaster:10020/value/propertypropertynamemapreduce.jobhistory.webapp.address/namevaluemaster:19888/value/propertypropertynameyarn.app.mapreduce.am.env/namevalueHADOOP_MAPRED_HOME${HADOOP_HOME}/value/propertypropertynamemapreduce.map.env/namevalueHADOOP_MAPRED_HOME${HADOOP_HOME}/value/propertypropertynamemapreduce.reduce.env/namevalueHADOOP_MAPRED_HOME${HADOOP_HOME}/value/property/configuration5. 修改 workersviworkers添加所有DataNode节点的主机名master slave1 slave2六、配置ntp服务1. 更换Yum源CentOS默认的yum源不一定是国内镜像导致yum在线安装及更新速度不是很理想。这时候需要将yum源设置为国内镜像站点。先备份cp/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak更改为华为源 4# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to the client. You should use this for CentOS updates# unless you are manually picking other mirrors.## If the mirrorlist does not work for you, as a fall back you can try the# remarked out baseurl line instead.#[base]nameCentOS-$releasever- Base - repo.huaweicloud.combaseurlhttps://repo.huaweicloud.com/centos/$releasever/os/$basearch/#mirrorlisthttps://mirrorlist.centos.org/?release$releaseverarch$basearchrepoosgpgcheck1gpgkeyhttps://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7#released updates[updates]nameCentOS-$releasever- Updates - repo.huaweicloud.combaseurlhttps://repo.huaweicloud.com/centos/$releasever/updates/$basearch/#mirrorlisthttps://mirrorlist.centos.org/?release$releaseverarch$basearchrepoupdatesgpgcheck1gpgkeyhttps://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may be useful[extras]nameCentOS-$releasever- Extras - repo.huaweicloud.combaseurlhttps://repo.huaweicloud.com/centos/$releasever/extras/$basearch/#mirrorlisthttps://mirrorlist.centos.org/?release$releaseverarch$basearchrepoextrasgpgcheck1gpgkeyhttps://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages[centosplus]nameCentOS-$releasever- Plus - repo.huaweicloud.combaseurlhttps://repo.huaweicloud.com/centos/$releasever/centosplus/$basearch/#mirrorlisthttps://mirrorlist.centos.org/?release$releaseverarch$basearchrepocentosplusgpgcheck1enabled0gpgkeyhttps://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7修改后执行yum clean all yum makecache2. 安装时间同步服务yuminstall-yntp检验ntpq-cversion\2. 修改/etc/ntp.confvi/etc/ntp.conf注释掉server行添加代码restrict192.168.0.0 mask255.255.255.0 nomodify notrap server127.127.1.0 fudge127.127.1.0 stratum10通过在行首添加#符号来注释掉现有的server行这会使得NTP守护进程忽略这些配置行不再尝试连接到指定的外部NTP服务器进行时间同步。restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap配置定义了一个访问控制规则适用于来自192.168.0.0/24子网的客户端。mask 255.255.255.0指定了子网掩码表示这个规则适用于整个192.168.0.0/24网络。nomodify禁止客户端使用ntpc命令修改服务器的时间或配置。notrap不允许客户端使用SNMP traps简单网络管理协议陷阱。server 127.127.1.0配置将本机的系统时钟设置为一个NTP服务器。这里的127.127.1.0指的是本地伪参考时钟驱动程序Local Clock Driverfudge 127.127.1.0 stratum 10fudge指令允许对特定的服务器条目进行一些非标准的调整。stratum 10这里设置了本地时钟的分层级别为10。在NTP中分层级别stratum level用来表示距离参考时钟的距离其中1是最接近的通常是原子钟而较高的数字表示更远的间接性。将本地时钟设置为较高的分层级别如10意味着它被认为是一个不太可靠的时钟源优先级低于较低分层级别的服务器。限制NTP服务的访问确保只有来自特定局域网如192.168.0.0/24的设备可以查询NTP服务器但不能修改其配置或发送SNMP traps。回退到本地时钟如果无法访问外部NTP服务器则使用本机时钟作为时间源但将其分层级别设置为较高值表明这是一个相对不可靠的时间源。3. 启动时间同步服务systemctl start ntpd#启动服务systemctlenablentpd#开机启动systemctl status ntpd#查看服务状态七、虚拟机 克隆在配置完ntp服务后使用VMware对master主机克隆出slave1、slave2两台副机修改配置slave1、slave2修改slave1、slave2的ip与主机名配置IP重启网卡servicenetwork restart修改主机名hostnamectl set-hostname slave1测试连接ping192.168.75.101FinalShell远程连接同步主节点 master 时间在slave1、slave2使用同步master时间ntpdate master八、SSH免密登录使用密码登录slave1生成密钥生成密钥在master主机生成公钥与私钥对ssh-keygen-trsa三次回车键确定生成密钥对其中id_rsa是私钥is_rsa.pub是公钥发放密钥分别复制密钥对给slave1、slave2ssh-copy-id slave1\3. 查看授权文件登录slave1查看sshslave1cat/root/.ssh/authorized_keys可以看到master主机已经授权logout命令退出 slave1 回到 master 主机最后还需给master自身也发配公钥后续的集群启动才能顺利进行ssh-copy-id master九、启动Hadoop集群在此之前需要修改master的/etc/ssh/sshd_config文件对以下三个选项取消#注释vi/etc/ssh/sshd_config PermitRootLoginyes#允许root用户直接通过SSH登录。PubkeyAuthenticationyes#启用公钥认证机制PasswordAuthenticationyes#启用密码认证1. 开启 集群hdfs namenode-formatNameNode格式化成功2. 启动集群进入Hadoop安装目录cd$HADOOP_HOME开启HDFSstart-dfs.sh开启yarnstart-yarn.sh或者使用start-all.sh开启 Hadoop 集群所有服务3. 查看Hadoop进程进程服务验证jpsmasterslave1slave2各个节点都有了相应的进程集群开启成功十、监控集群主机地址:9870HDFS监控192.168.75.100:9870Yarn监控192.168.75.100:8088关闭集群stop-all.sh注意事项为什么更换Yum源?CentOS默认的yum源不一定是国内镜像导致yum在线安装及更新速度不是很理想。这时候需要将yum源设置为国内镜像站点。在进行电脑关机前先关闭Hadoop集群未关集群切断电源可能会导致下次使用时会导致节点丢失。在进行密钥发放时最后主节点master也要记得给自身发放。如jps查看集群进程时缺少相应进程服务可到Hadoop主目录查看logs日志进行排查修改Hadoop配置文件时尽量复制粘贴避免错漏克隆两个副节点后务必记得修改网络配置让其处于同一网络段使用SSH远程连接工具方便本地拖拽上传文件扩展Linux IP地址修改JAVA ↩︎Linux镜像 ↩︎远程连接 ↩︎华为源 ↩︎

相关新闻