尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
鲲鹏云大数据实验:ARM节点Hadoop 2.8.3部署与OBS联通实操
简介面向鲲鹏云大数据实验的Word版报告适合在华为云环境学习Hadoop集群搭建的开发者与学生使用。资源为1份docx文档大小2.52MB聚焦从购买ECS与OBS、获取AK/SK到完成NameNode初始化与HDFS启动的全过程。全文按节点维度记录Node0001、0002等配置操作重点讲解/etc/hosts互信配置、SSH免密登录、并行文件系统与OBS地址选择、core-site.xml等核心文件参数设置并针对Java Home路径错误引发的问题给出重新分发与修正思路便于读者对照排查同类报错。报告中还涉及HDFS、YARN、MapReduce相关配置文件的编写以及环境变量、slaves工作节点列表、目录结构创建等细节可作为云环境大数据集群部署的排错参考。目前已有892人学习适合作为鲲鹏云大数据实训、课程设计或云平台部署的参考笔记。1. 鲲鹏云大数据实验ARM节点上的Hadoop 2.8.3从环境准备到跑通在华为云上做鲲鹏云大数据实验最大的反直觉点在于节点换成了ARM架构的鲲鹏服务器但网上绝大多数Hadoop教程还停留在x86思路。JDK要用aarch64版本、JAVA_HOME路径带完整版本号、OBS对象存储要填AK/SK和endpoint任何一个环节踩错NameNode可能连格式化都过不去。我按这份实验报告的完整流程在三个ECS节点上部署了Hadoop 2.8.3集群过程中因为Java路径翻车两次、NameNode格式化失败一次最终把HDFS和OBS的联通验证跑通。这篇笔记把完整流程拆成环境准备、JDK与Hadoop部署、集群配置、启动排查、验证五段新手可以照着一路执行熟手可以直接跳去踩坑章节对照问题。2. 准备华为云环境ECS镜像选型、OBS并行文件系统与AK/SK获取2.1 购买三台ECS镜像、规格与安全组开始之前先明确节点规划。整套实验的职责划分是node-0001做NameNode和ResourceManager负责管理HDFS元数据和全局资源调度node-0002、node-0003是DataNode和NodeManager真正存数据、跑计算任务。三台机器最好同规格同地域这样后面做包分发时不用区分aarch64和x86两个版本踩坑概率小不少。如果实验只分配了两台ECS可以把node-0002和node-0003的角色合并成一台机器但DataNode副本数要相应改成2。购买ECS时区域一定要固定为华北-北京四。这个区域选择和后面OBS的endpoint直接相关实验里OBS的访问地址是obs.cn-north-4.myhuaweicloud.comcn-north-4对应的就是北京四。如果ECS买在其他区域Hadoop访问OBS就要走公网绕一圈不仅慢还会产生额外的流量费用。镜像选择openEuler系列关键是看架构标注是否为aarch64这是鲲鹏云和普通x86云服务器最大的区别。规格建议2核4GB起步如果条件允许直接上4核8G因为后续既要跑NameNode又要跑OBS客户端缓冲内存小了JVM堆容易吃紧。系统盘40GB起步实验数据不多的情况下不需要单独挂数据盘。安全组是另一个容易忽略的点。Hadoop集群跑起来后节点间要通信浏览器要访问Web UI这些流量都会被安全组拦截。我一般会提前放行下面几个端口22SSH、9000NameNode RPC、50070NameNode Web UI、8088YARN Web UI、8030/8031/8032YARN内部调度和资源追踪端口。安全组配置错误的表现很隐蔽比如NameNode进程明明活着jps也能看到但浏览器就是打不开50070页面十有八九是安全组没放行。购买完成后三台ECS会各自分配到公网IP和内网IP。公网IP用于本地SSH登录和Web UI访问集群节点之间建议走VPC内网通信。实验原文给的节点IP如下实际操作时替换成自己ECS分配到的地址即可角色主机名示例公网IPNameNode ResourceManagernode-0001124.70.110.126DataNode NodeManagernode-0002120.46.156.37DataNode NodeManagernode-0003121.36.3.111提示三个ECS如果在同一个VPC内建议把/etc/hosts里填内网IP这样节点间流量不经过公网速度更快也更安全。2.2 购买OBS并创建并行文件系统OBS在整套集群里扮演的是远端存储的角色。HDFS负责集群内的分布式文件管理OBS负责提供对象存储能力实验里通过Hadoop的OBS客户端把两个打通数据既可以落到HDFS也可以写到OBS桶里做持久化。购买OBS时区域同样选华北-北京四存储类别选标准存储即可实验场景用不到低频或归档。桶名要全局唯一建议用有业务含义的英文名比如kylin-datalake-exp这种。创建桶时有一个重要选项要选并行文件系统而不是普通的对象存储桶。并行文件系统和普通对象桶最大的差异在文件语义上它原生支持目录的rename、delete等操作Hadoop的FileSystem接口在这上面实现得更稳。如果创建了普通桶后面在HDFS里执行hdfs dfs -mv这种操作时可能会遇到对象存储不支持重命名的报错。很多实验做到一半才发现这个问题只能重建桶重新配置所以这一步值得提前确认。创建完成后进入桶详情页可以看到系统给出的两个访问地址IPv4地址obs.cn-north-4.myhuaweicloud.com双栈地址obs.dualstack.cn-north-4.myhuaweicloud.comHadoop配置里fs.obs.endpoint用IPv4地址就够。双栈地址是同时支持IPv4和IPv6访问的入口只有在网络环境明确需要IPv6时才会用到实验环境一般不用管它。建议把这个endpoint先复制保存到本地后面core-site.xml里要原样填写省得到时候再回控制台翻。桶创建好后可以先在控制台上传一个测试文件确认桶的读写权限正常再进入下一步。2.3 下载访问密钥credentials.csvOBS的认证不走密码走AK/SK。操作路径是进入控制台的访问密钥管理页面点击新增访问密钥系统会生成一份credentials.csv文件并下载到本地。打开这个CSV文件里面有三列User Name、Access Key Id、Secret Access Key。其中AK对应Access Key IdSK对应Secret Access Key这两个值就是后面core-site.xml里fs.obs.access.key和fs.obs.secret.key两个属性要填的内容。这份CSV文件一定要保存好。注意SK只在生成时完整显示一次如果文件丢失控制台不会给你第二次查看SK的机会只能重新生成一组密钥。所以拿到CSV后第一件事是把它放到安全的位置实验过程中也不要随手贴进公开的笔记或聊天记录。配置Hadoop时到底怎么填、填到哪我放在第4章的core-site.xml小节里详细展开这里只需要确认三件事桶已创建、endpoint已记录、CSV文件已下载。环境准备阶段结束前我习惯做一轮自查三台ECS互相能ping通、SSH能登录、OBS桶已创建、credentials.csv已下载并备份。这四个条件任一不满足后面Hadoop里出现的报错都会指向错误的方向排查起来特别被动。3. 部署OpenJDK与Hadoop 2.8.3aarch64版本选择、目录规划与JAVA_HOME3.1 安装OpenJDK镜像源与架构识别三台云服务器刚拿到手时是纯净的openEuler系统首先要装Java环境。Hadoop 2.8.3运行在Java 8上这一点不要乱升级JDK 11或17的JVM参数和Hadoop 2.8.3的脚本不一定兼容。在openEuler仓库中Java 8通过yum直接安装yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel这里有两个包java-1.8.0-openjdk是运行时环境java-1.8.0-openjdk-devel提供javac等开发工具。Hadoop的某些工具脚本会调用javac所以devel包也要装。装完不要急着配置先执行java -version确认一下重点看输出的架构信息正常应该看到类似下面这样的内容java version 1.8.0_242 Java(TM) SE Runtime Environment ... Java HotSpot(TM) 64-Bit Server VM (build 25.242-b08, mixed mode)如果这里报Exec format error十有八九是装成了x86_64的JDK在鲲鹏的aarch64系统上跑不起来。用yum从官方源安装一般不会出现这种问题风险主要在手动下载rpm包时选错架构。手动安装的话优先选择包含aarch64字样的rpm比如实验里用到的java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.aarch64这个版本。oe1表示构建自openEuler仓库aarch64就是ARM 64位架构这个后缀直接决定了JDK能不能在这台机器上跑起来。3.2 规划目录结构并解压Hadoop 2.8.3Hadoop的运行目录如果不提前规划后面所有配置文件都会被路径牵制。我习惯把所有大数据组件统一放在/home/modules下跟系统目录分开这样备份、分发、扩容都方便。实验里的目录规划是mkdir -p /home/modules/data/buf mkdir -p /home/nm/localdir第一个目录/home/modules/data/buf留给OBS客户端做本地缓冲。Hadoop向OBS写数据时数据块会先落到这个本地目录再异步上传到对象存储。第二个目录/home/nm/localdir是NodeManager的本地工作目录MapReduce任务执行的中间结果、shuffle产生的临时文件都会写在这里。这两个目录理论上可以放在/tmp下但/tmp会被系统定时清理跑任务久了容易出现目录不存在的诡异错误所以实验里特意规划到了/home。接下来把hadoop-2.8.3.tar.gz上传到node-0001并解压。本地可以用scp上传也可以直接在ECS上下载看实验教程给的方式。解压命令如下cd /root cp hadoop-2.8.3.tar.gz /home/modules/ cd /home/modules tar -zxvf hadoop-2.8.3.tar.gz解压完成后/home/modules下会多出hadoop-2.8.3目录。这个目录名不要改Hadoop的脚本和配置文件里大量引用相对路径目录名变了sbin下的启动脚本可能找不到环境。为了让HDFS识别OBS还需要一个关键的jar包华为云OBS的Hadoop文件系统实现包。这个jar包从华为云开发者相关渠道下载后放到所有节点的$HADOOP_HOME/share/hadoop/common/lib目录下。jar包必须三台节点都有且版本一致否则core-site.xml里配置了fs.obs.impl也找不到实现类启动HDFS时会直接报ClassNotFoundException。提示jar包放入lib目录这个动作很容易在分发环节被漏掉。很多实验做到最后发现只有node-0001能访问OBS另外两个节点报错原因就是jar包没同步到所有节点。3.3 配置JAVA_HOME带版本号路径与hadoop-env.shHadoop生态里所有启动脚本都通过$JAVA_HOME/bin/java找运行环境而不是靠PATH里的java命令。所以即使java -version能正常输出Hadoop命令照样可能报JAVA_HOME is not set。在openEuler上JDK的安装路径不是简单的/usr/lib/jvm/java-1.8.0而是带着完整版本号/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.aarch64不少人在这个路径上写过不带版本号的短路径结果source之后仍然找不到java。我一般在每台节点上执行下面命令查真实路径find /usr/lib/jvm -maxdepth 1 -type d把输出里带aarch64的那个完整路径填进/etc/profile同时设置Hadoop相关环境变量export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.aarch64 export HADOOP_HOME/home/modules/hadoop-2.8.3 export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin这几行配置里JAVA_HOME是核心HADOOP_HOME指向解压目录HADOOP_CONF_DIR明确指定配置文件目录PATH把java、hadoop、start-dfs.sh等命令所在目录都加进去。保存后执行source /etc/profile分别验证java -version hadoop version要两个命令都输出正常才说明环境变量生效。特别提醒hadoop-env.sh里同样要写一份JAVA_HOME这个文件在$HADOOP_HOME/etc/hadoop/hadoop-env.sh。start-dfs.sh远程启动DataNode时读的是hadoop-env.sh里的JAVA_HOME而不是/etc/profile里的。只改profile不改hadoop-env.shNameNode进程起不来或者起来马上挂是这次实验里最典型的翻车点。三台节点的/etc/profile都要改正确做法是在node-0001上改好后分发出去避免三台各改各的改出三种路径。4. 写对五个配置文件core-site、hdfs-site、yarn-site、mapred与slaves4.1 先打通节点通信/etc/hosts与SSH免密登录Hadoop集群启动脚本的设计逻辑是在NameNode节点上执行start-dfs.sh脚本逐个读取slaves文件然后通过SSH登录到每个节点启动DataNode进程。如果没有SSH免密配置脚本会在登录环节卡住等你输入密码。更麻烦的是这个登录是串行的输错一次密码就可能需要整个启动流程重来。所以免密登录做没做直接决定启动HDFS时是顺畅还是折腾。先配置/etc/hosts。实验里三个节点的示例IP和主机名如下需要写入每一台节点的/etc/hosts文件末尾124.70.110.126 node-0001 120.46.156.37 node-0002 121.36.3.111 node-0003这里的主机名要和每台机器hostname命令的输出保持一致。hosts的作用是把主机名解析成IPHadoop配置里的fs.defaultFS如果写hdfs://node-0001:9000NameNode启动时会通过hosts解析node-0001这个地址解析不了就会起不来。接着生成SSH密钥对。在node-0001上执行ssh-keygen -t rsa -P cat /root/.ssh/id_rsa.pub-P 表示私钥不设置口令这样SSH登录时不需要额外输入。然后把id_rsa.pub的内容追加到三台节点包括node-0001自己的/root/.ssh/authorized_keys里。手动操作太麻烦可以直接用ssh-copy-idssh-copy-id -i /root/.ssh/id_rsa.pub node-0001 ssh-copy-id -i /root/.ssh/id_rsa.pub node-0002 ssh-copy-id -i /root/.ssh/id_rsa.pub node-0003ssh-copy-id会要求输入一次目标节点密码之后就不再需要。验证免密是否生效ssh node-0002 hostname不需要密码直接输出node-0002说明互信生效。注意node-0001自己也必须能免密登录自己因为DataNode也可能部署在NameNode节点上脚本会对所有节点一视同仁地发起SSH。4.2 core-site.xmlHDFS地址与OBS的AK/SK/endpointcore-site.xml是Hadoop的全局核心配置。本次实验在这个文件里做两件事设置默认文件系统为HDFS告诉Hadoop怎么访问OBS。配置文件位于$HADOOP_HOME/etc/hadoop/core-site.xml修改后立即生效。一个完整的core-site.xml配置如下?xml version1.0 encodingUTF-8? configuration property namefs.defaultFS/name valuehdfs://node-0001:9000/value /property property namefs.obs.access.key/name value你的AK/value /property property namefs.obs.secret.key/name value你的SK/value /property property namefs.obs.endpoint/name valueobs.cn-north-4.myhuaweicloud.com/value /property property namefs.obs.impl/name valueorg.apache.hadoop.fs.obs.OBSFileSystem/value /property property namefs.obs.buffer.dir/name value/home/modules/data/buf/value /property /configurationfs.defaultFS决定了HDFS的入口地址这里写hdfs://node-0001:90009000是NameNode接收RPC请求的端口这个端口要和后续所有客户端访问的地址保持一致。fs.obs.access.key和fs.obs.secret.key填credentials.csv里的Access Key Id和Secret Access Key。注意SK只显示一次代码里那两个值需要替换成自己下载的真实凭证不要照抄。fs.obs.endpoint填OBS的IPv4访问地址必须和创建桶时所在区域一致。桶建在华北-北京四endpoint就是这个地址如果桶建在其他区域要去对应区域的控制台查Endpoint。fs.obs.impl告诉Hadoop使用哪个类来操作OBS值为org.apache.hadoop.fs.obs.OBSFileSystem这个类就来自放到lib目录的jar包。fs.obs.buffer.dir指向本地缓冲目录就是之前创建的/home/modules/data/buf。提示AK/SK属于敏感凭证直接明文写在core-site.xml里有泄露风险实验环境临时使用问题不大。生产环境建议用委托方式或外部密钥管理不要把这对值提交到代码仓库。4.3 hdfs-site.xml副本数与目录hdfs-site.xml管理分布式文件系统的行为参数。三节点集群的合理副本数是3每份数据在三个节点上各存一份。如果只有两个节点这里要改成2否则第三个副本写不进去DataNode会一直报副本数不足。配置如下property namedfs.replication/name value3/value /property property namedfs.namenode.name.dir/name valuefile:///home/modules/data/namenode/value /property property namedfs.datanode.data.dir/name valuefile:///home/modules/data/datanode/value /propertydfs.namenode.name.dir是NameNode元数据的持久化目录包括fsimage和editlog这个目录只在node-0001上使用其他节点不需要这个配置。dfs.datanode.data.dir是数据块的实际存储位置三个节点都要配置所有DataNode把它指向/home/modules/data/datanode。这两个目录需要提前建好mkdir -p /home/modules/data/namenode mkdir -p /home/modules/data/datanodeNameNode元数据和DataNode的数据块都放在/home/modules/data下和前面规划的模块目录保持一致。生产环境里这两个目录一般会挂独立数据盘实验环境放系统盘足够。4.4 yarn-site.xml与mapred-site.xml资源调度与计算框架YARN负责资源调度和任务执行yarn-site.xml需要设置两个核心参数一个是auxiliary serviceMapReduce任务的shuffle阶段需要它来转发数据另一个是ResourceManager所在节点NodeManager启动后会向这个地址注册。配置如下property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuenode-0001/value /property property nameyarn.nodemanager.local-dirs/name value/home/nm/localdir/value /propertyyarn.resourcemanager.hostname指向node-0001所有NodeManager会连接这台机器上报心跳。yarn.nodemanager.local-dirs就是前面创建/home/nm/localdir的实际用途它是NodeManager存放本地中间文件的根路径。如果这个目录不存在或者没有写入权限NodeManager可能反复启动失败。mapred-site.xml在Hadoop 2.x默认文件名是mapred-site.xml.template需要先复制一份正式文件cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml然后设置计算框架为YARNproperty namemapreduce.framework.name/name valueyarn/value /property这个配置告诉MapReduce程序任务调度走YARN。Hadoop 2.x引入YARN之后老的JobTracker加TaskTracker模式已经被ResourceManager取代这条不配的话MapReduce任务会直接以本地模式运行提交到集群的作业完全进不了队列。4.5 slaves文件与环境变量工作节点清单slaves文件决定了集群里有哪些DataNode和NodeManager。文件位于$HADOOP_HOME/etc/hadoop/slaves每行一个主机名。只保留node-0001就是单节点集群把三个节点都写进去才组成真正的三节点集群node-0001 node-0002 node-0003slaves文件内容在三个节点上必须完全一致。Hadoop 2.8.3的启动脚本会在NameNode节点本地读取这个文件然后SSH到每一行指定的节点启动DataNode。也就是说即使node-0002和node-0003上的slaves文件内容错误也不影响启动脚本的执行但如果node-0001上的slaves文件少了某个节点那个节点就永远不会被启动。这个特性很容易踩坑排查时优先检查NameNode节点上的slaves文件。配置文件到这里全部写完下一步是把配置分发到node-0002和node-0003然后准备启动。分发时不要只分hadoop目录/etc/profile和/etc/hosts要一起分三个文件任何一处不一致都可能让某个节点起不来。5. 启动HDFS与踩坑排查格式化重试、JAVA_HOME翻车与配置不同步5.1 启动前准备环境变量生效与NameNode格式化配置文件全部写完接下来才是真正检验配置的时刻。首先在每一台节点上重新source环境变量确认三台机器的JDK路径都指向同一个openEuler版本source /etc/profile java -version hadoop version如果某台节点上hadoop version输出异常先停在这台节点排查不要带着问题进行下一步。确认三节点命令都正常后在node-0001上执行NameNode格式化hdfs namenode -format格式化操作会清空NameNode元数据目录下的所有内容并重新生成文件系统镜像所以这个命令只能在集群第一次启动前执行。完成后检查/home/modules/data/namenode目录下是否出现current目录以及current里是否有fsimage和edits文件这是元数据落盘的证据。如果JAVA_HOME配错时执行format命令可能没报错但实际生成的镜像不完整后面启动NameNode时直接闪退修正JAVA_HOME后必须重新执行格式化。5.2 启动HDFS与YARNstart-dfs.sh和start-yarn.sh格式化成功后启动HDFS$HADOOP_HOME/sbin/start-dfs.sh启动日志会逐条显示SSH到各个节点的过程。看到Starting namenodes on [node-0001]和Starting datanodes on node-0001 node-0002 node-0003就说明脚本正常执行。如果卡在某个节点上长时间不动大概率是SSH免密没配好回到4.1检查。HDFS起来后启动YARN$HADOOP_HOME/sbin/start-yarn.shYARN启动成功后分别在三个节点执行jps查看Java进程jpsnode-0001上应该看到NameNode、SecondaryNameNode、ResourceManager三个核心进程以及可能存在的DataNode和NodeManagernode-0002和node-0003上应该看到DataNode和NodeManager。如果某个节点只有启动脚本的进程、没有对应角色的长期Java进程说明该节点配置有问题往下看排查。5.3 排查一java命令找不到或Hadoop命令报JAVA_HOME错误现象执行java -version时报command not found或者java命令正常但执行hadoop version时报JAVA_HOME is not set。原因openEuler下java命令依赖/etc/profile里的PATHSSH非交互登录时/etc/profile可能没有被加载另一种情况是hadoop-env.sh里的JAVA_HOME路径写短了比如/usr/lib/jvm/java-1.8.0少了完整版本号目录java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.aarch64导致脚本找不到java。解决先查JDK真实路径find /usr/lib/jvm -maxdepth 1 -type d确认路径后同步修改两处。一处是/etc/profile中的export JAVA_HOME另一处是$HADOOP_HOME/etc/hadoop/hadoop-env.sh中相同变量两处都写完整路径然后执行source /etc/profile和hadoop version验证。这个问题的麻烦之处在于java命令可能因为PATH里有别的软链而正常输出但Hadoop脚本走的是JAVA_HOME两边不一致就出现了java能跑、hadoop不能跑的割裂局面。5.4 排查二NameNode格式化后启动闪退现象hdfs namenode -format执行成功start-dfs.sh也执行了但NameNode进程起来几秒就退出日志里出现NameNode is not formatted或fsimage读写异常。原因格式化时JAVA_HOME指向错误路径格式化进程实际使用了不完整的JVM环境导致元数据目录写入了不兼容的镜像另一种常见情况是重复格式化造成clusterID不一致DataNode持有旧集群的ID拒绝连接新启动的NameNode。解决先确认JAVA_HOME唯一指向实验用的openEuler JDK版本然后停掉HDFS清理元数据后重新格式化rm -rf /home/modules/data/namenode/current hdfs namenode -format格式化成功后重新启动HDFS。如果DataNode在注册时报clusterID不一致需要同时清理所有节点的DataNode数据目录rm -rf /home/modules/data/datanode/current然后重启整个集群。数据目录里存的都是数据块实验阶段没有重要数据可以放心清理生产环境清理前必须确认这些数据已经没有保留价值。5.5 排查三DataNode起不来、节点配置不同步现象start-dfs.sh执行完node-0001上进程都有但node-0002和node-0003上jps看不到DataNode进程ResourceManager日志里一直收不到这两个节点的注册消息。原因Hadoop配置只在node-0001上改了其他节点的core-site.xml还是默认内容或者OBS jar包没有复制到所有节点的lib目录导致某台节点启动时加载不到OBSFileSystem类而崩溃最常见的是/etc/profile和/etc/hosts没有同步远程启动的进程找不到JAVA_HOME或hosts解析失败。解决把配置环境做一次整体分发不要只分发hadoop目录。我一般同步这几个目标scp -r /home/modules/hadoop-2.8.3/etc/hadoop node-0002:/home/modules/hadoop-2.8.3/etc/ scp -r /home/modules/hadoop-2.8.3/etc/hadoop node-0003:/home/modules/hadoop-2.8.3/etc/ scp /etc/hosts node-0002:/etc/hosts scp /etc/hosts node-0003:/etc/hosts scp /etc/profile node-0002:/etc/profile scp /etc/profile node-0003:/etc/profile分发完成后在node-0002和node-0003上执行source /etc/profile并确认三个节点的核心配置一致。用diff对比node-0001和各节点的core-site.xml无输出说明文件一致。最后从node-0001重新启动集群。这里要提醒ssh-copy-id只解决了免密登录没有同步文件内容的职责不要以为用了一次scp后续所有修改都自动同步每次改配置后都要重新分发。6. 验证集群跑通jps进程、hdfs dfs命令与Web UI6.1 进程与端口检查验证集群是否真正跑通第一步是看进程和端口。在node-0001执行jps应该看到NameNode、SecondaryNameNode、ResourceManager三个核心进程node-0002和node-0003看到DataNode和NodeManager。然后检查端口监听状态netstat -lntp | grep 9000NameNode的9000端口处于LISTEN状态说明RPC服务正常。50070端口对应NameNode Web UI8088对应YARN Web UI。这两个端口如果是本地浏览器访问需要确认ECS安全组已放行。6.2 HDFS文件系统读写验证在HDFS根目录创建实验目录并上传一个测试文件hdfs dfs -mkdir -p /user/test echo hadoop obs test /tmp/test.txt hdfs dfs -put /tmp/test.txt /user/test/ hdfs dfs -ls /user/test/能看到test.txt说明HDFS的读写链路通了。再验证副本是否真的分布到三个节点hdfs fsck /user/test/test.txt -files -blocks -locations输出中每个block应该列出三个location分别对应node-0001、node-0002、node-0003副本数为3才符合hdfs-site.xml里的配置。如果只有1个location说明DataNode没有全部参与存储回到5.5检查节点同步。6.3 OBS联通验证与Web UI最后验证OBS打通。在core-site.xml配置正确的前提下直接操作obs协议即可hdfs dfs -ls obs://你的桶名 hdfs dfs -put /tmp/test.txt obs://你的桶名命令不报错并且能在OBS控制台的桶里看到test.txt文件说明整个OBS链路已经打通。这一步是整个实验最有价值的结果HDFS和OBS互相协作的数据通道已经建立。然后浏览器访问NameNode和YARN的Web界面http://node-0001公网IP:50070 http://node-0001公网IP:8088NameNode页面能看到三个节点都处于Live状态YARN页面能看到总内存和可用核数。到这一步整条Hadoop集群链路——ECS准备、OBS桶、AK/SK认证、五份配置文件、三节点互信——全部验证通过。这套流程走完后我养成了一个习惯不管在哪搭Hadoop集群第一步先把JAVA_HOME的完整路径锁定第二步把/etc/profile和/etc/hosts作为集群配置的一部分一起分发格式化之前强制检查所有节点的JDK版本一致性。这三件事做在前面后面启动HDFS基本不用再回头清理元数据。实验原版的docx报告里有每一步的操作截图和报错日志比对排查时会比纯文字描述更直观希望这篇笔记加原报告能帮到你搭出一套跑得通的鲲鹏云大数据环境。本文还有配套的精品资源点击获取
RELATED

相关推荐

MATLAB 2FSK调制解调仿真代码拆解:从信源到误码率曲线

MATLAB 2FSK调制解调仿真代码拆解:从信源到误码率曲线

简介:这份资源是面向通信工程、电子信息类专业学生的课程设计参考资料,围绕2FSK调制与解调系统的设计与仿真展开,适合正在学习通信系统原理、需要完成MATLAB课程设计或想加深数字调制理解的学习者。压缩包内共1个doc文档,约579KB&…

📅 2026/10/17 17:10:08
Claude Code模板体系实战:CLAUDE.md与Slash Commands提效指南

Claude Code模板体系实战:CLAUDE.md与Slash Commands提效指南

说真的,第一次接触 Claude Code 的时候我还是比较谨慎的,命令行式 AI 编程工具听起来很酷,但总觉得差点什么。直到我花了两周时间把所有重复性的工程操作沉淀成了一套模板体系,这工具才真正从"玩具"变成了每天离不开的生…

📅 2026/10/17 17:10:08
TensorFlow 2手写线性回归:从GradientTape到可调试模型

TensorFlow 2手写线性回归:从GradientTape到可调试模型

1. 这不是教科书里的公式推导,而是你明天就能跑通的线性回归实战“TensorFlow 2 线性回归”这八个字,看起来像极了某门研究生课程的作业题——但如果你真把它当成理论题来解,大概率会在写完import tensorflow as tf后卡住半小时:接…

📅 2026/10/17 17:05:08
MORE NEWS

更多资讯

📰

Kafka接入AI实战:从Lag排查到Function Calling自动化运维

1. 为什么要把Kafka接进AI:这个标题背后要解决的真实问题先聊点实在的。做Kafka运维和研发的朋友,应该都有过这种经历:半夜被ConsumerGroup的Lag告警叫起来,打开电脑连上跳板机,一条一条查kafka-consumer-groups.sh --…

📰

harness 工程化实践:用 AGENTS.md 与 Makefile 把 TaoToken 接入 CI 流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

大模型推理-基于prefill和decode阶段特性,PD分离,势在必行!TaoToken统一Key下的PD分离部署大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

2026年5月开源模型Token服务实测榜:TaoToken统一Key下DeepSeek/GLM/Kimi三层架构性能拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Codex 下载与本地部署实战:从安装到运行全流程指南(TaoToken 统一 Key 接入版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

QML自制数字软键盘:向TextInput/TextField键入数字并实现左移右移删除

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬