ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

鲲鹏云ARM架构Hadoop集群搭建与OBS对接实验指南

鲲鹏云ARM架构Hadoop集群搭建与OBS对接实验指南 简介这份鲲鹏云大数据实验docx面向高校学生与云计算初学者聚焦在华为云环境中从零搭建Hadoop集群的完整实践。内容以实验报告形式记录涵盖购买ECS与OBS、获取AK/SK认证密钥、配置节点互信与SSH免密登录、创建目录结构、编写core-site.xml等核心配置文件以及初始化NameNode、启动HDFS服务等关键环节并特别记录了Java家目录错误导致的反复排错过程。资源包内含1个docx文档大小约2.52MB结构清晰便于按步骤对照操作。目前已有891人学习下载适合作为大数据实验课程参考或云平台部署练手材料读者可借此掌握OBS作为数据源的配置方法、集群分发同步技巧及服务启动排错思路对理解鲲鹏云环境下大数据基础设施的部署流程具有较高参考价值。1. 鲲鹏云上跑 Hadoop一份能直接抄的实验报告长什么样如果你正在找一份能在鲲鹏云ARM 架构上把 Hadoop 集群真正跑起来的实验记录而不是那种只贴几张截图、关键配置全部打码的“演示文档”那这份 docx 值得你花时间拆一遍。它记录的是从零购买华为云 ECS、开通 OBS、配置三节点互信到改core-site.xml对接 OBS、初始化 NameNode、启动 HDFS 的完整链路。适合两类人一是课程设计或实验报告需要交差、但不想在环境上反复翻车的学生二是第一次在 ARM 云主机上部署 Hadoop、被JAVA_HOME和架构差异折腾过的运维新手。它最大的价值不是“教你 Hadoop 是什么”而是把踩过的坑和修正过程留在了文档里——这比一份干净但跑不通的教程有用得多。2. 环境准备ECS、OBS 与 AK/SK 的获取逻辑2.1 为什么选鲲鹏 ECS 而不是 x86华为云 ECS 分 x86 和鲲鹏ARM两种架构。这份实验选鲲鹏核心原因是课程或项目要求验证大数据组件在国产化 ARM 平台上的兼容性。Hadoop 2.8.3 本身对 ARM 的支持需要依赖 OpenJDK 的 aarch64 版本不能直接拿 x86 的 JDK 包往上装。购买时注意三点规格选kc1或kci1系列鲲鹏通用计算型镜像选 openEuler 或 CentOS 的 ARM 版本带宽按实验规模 5M 起步即可。三台节点的内网要互通建议买在同一 VPC、同一安全组下否则后面配/etc/hosts和 SSH 互信会多出很多网络排查工作。2.2 OBS 并行文件系统与 AK/SK 的对应关系Hadoop 对接 OBS 不是把 OBS 当普通对象存储用而是通过hadoop-obs插件把 OBS 挂载成 HDFS 兼容的文件系统。购买 OBS 时要选“并行文件系统”普通对象桶不支持 Hadoop 的 rename 和 append 语义。创建完成后进入桶详情页能看到两个 Endpoint类型Endpoint 地址IPv4obs.cn-north-4.myhuaweicloud.com双栈obs.dualstack.cn-north-4.myhuaweicloud.com操作完成后下载credentials.csv里面三列分别是User Name、Access Key Id、Secret Access Key。这三样东西后面要原样填进core-site.xml少一个字符都会导致NoAwsCredentialsException。我一般会先把 AK/SK 写进一个临时文件配完再删避免手抄出错。# 查看 credentials.csv 内容示例结构 cat credentials.csv # User Name,Access Key Id,Secret Access Key # roy_yuki,S8RSFKYBTOSPA9YX92XB,gjGNhoN8NkApdf4zjKcNDpLsQdsBW1RXl117E06q注意AK/SK 属于账号级凭证实验结束后建议在华为云控制台禁用或删除对应的访问密钥不要长期留在实验环境里。2.3 三节点基础环境统一操作三台节点Node0001/0002/0003在装 Hadoop 之前必须做四件相同的事改主机名、配/etc/hosts、装 OpenJDK、配 SSH 互信。顺序不能乱因为互信依赖主机名解析。# 各节点执行编辑 hosts vim /etc/hosts # 追加以下内容IP 以实际购买为准 124.70.110.126 node-0001 120.46.156.37 node-0002 121.36.3.111 node-0003 # 各节点执行生成密钥对一路回车 ssh-keygen -t rsa # 各节点执行查看公钥 cat /root/.ssh/id_rsa.pub把三台机器的公钥分别追加到每台的/root/.ssh/authorized_keys里然后从 node-0001 依次ssh node-0002、ssh node-0003测试。第一次会提示yes/no输 yes 后如果直接跳转不输密码互信就通了。这一步的坑在于如果你买 ECS 时选了“密钥对”登录方式root 的.ssh目录权限可能不是 700会导致互信失效执行chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys即可。3. Hadoop 安装与 OBS 对接配置文件逐个拆3.1 目录规划与安装包解压Hadoop 的目录结构建议按“安装目录 数据目录”分离的原则来建。这份实验里用了/home/modules放安装包/home/modules/data/buf和/home/nm/localdir放运行时数据。这样做的原因是后面如果数据盘满了可以直接挂新盘到 data 目录不用动安装目录。# node-0001 执行 mkdir -p /home/modules/data/buf mkdir -p /home/nm/localdir 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。注意 ARM 环境下不要用hadoop-2.8.3.tar.gz里自带的 native 库需要额外下载 aarch64 版本的hadoop-native包替换lib/native目录否则启动时会报Unable to load native-hadoop library。这个警告在 x86 上通常可以忽略但在 ARM 上如果涉及压缩和校验不替换会直接失败。3.2 core-site.xml 对接 OBS 的关键参数core-site.xml是整个对接的核心它决定了 Hadoop 把 OBS 当成什么文件系统来用。以下是最小可用配置configuration property namefs.obs.access.key/name valueS8RSFKYBTOSPA9YX92XB/value /property property namefs.obs.secret.key/name valuegjGNhoN8NkApdf4zjKcNDpLsQdsBW1RXl117E06q/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.defaultFS/name valueobs://your-bucket-name/value /property /configuration参数说明fs.obs.access.key和fs.obs.secret.key填credentials.csv里的对应值fs.obs.endpoint填 IPv4 地址即可双栈地址在纯 IPv4 环境下反而可能解析慢fs.defaultFS改成obs://加你的桶名这样默认文件系统就是 OBS而不是本地 HDFS。如果你还想保留本地 HDFS 作为二级存储可以把fs.defaultFS设成hdfs://node-0001:9000然后在代码里显式指定obs://路径。3.3 hdfs-site.xml、yarn-site.xml 与 mapred-site.xml 的联动这三个文件分别管 HDFS 副本、YARN 资源调度和 MapReduce 运行时。在对接 OBS 的场景下HDFS 的角色被弱化但 NameNode 和 DataNode 仍然要起来因为 YARN 的日志聚合和中间结果可能落在 HDFS 上。!-- hdfs-site.xml 关键项 -- property namedfs.replication/name value2/value /property property namedfs.namenode.name.dir/name value/home/modules/data/buf/value /property property namedfs.datanode.data.dir/name value/home/nm/localdir/value /propertydfs.replication设 2 是因为三节点集群里留一台给 NameNode 和 ResourceManager实际能跑 DataNode 的就两台。设 3 会导致副本永远达不到要求HDFS 一直处于Under-replicated状态。dfs.namenode.name.dir和dfs.datanode.data.dir指向之前建的目录注意这两个目录不要放在同一个磁盘分区否则 NameNode 和 DataNode 抢 IO。yarn-site.xml里最关键的是yarn.resourcemanager.hostname指向 node-0001以及yarn.nodemanager.aux-services设为mapreduce_shuffle。mapred-site.xml里把mapreduce.framework.name设为yarn这样 MapReduce 任务才会走 YARN 调度而不是本地模式。3.4 JAVA_HOME 配置与分发同步这份实验里反复出现的“因为 javahome 错误导致失败”根源是 openEuler 上 OpenJDK 的安装路径和 CentOS 不一样。在鲲鹏 openEuler 上java-1.8.0-openjdk的实际路径是# 查找真实 JAVA_HOME readlink -f $(which java) # 输出示例/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.aarch64/jre/bin/java # 去掉末尾 /jre/bin/java 即为 JAVA_HOME然后在/etc/profile里写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 PATH$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH改完执行source /etc/profile再用java -version确认。分发到各节点时用scp把整个 Hadoop 目录传过去但/etc/profile要每台单独改因为路径里的 JDK 版本号可能因节点安装时间不同而有细微差异。# 分发 Hadoop 包到 node-0002 和 node-0003 scp -r /home/modules/hadoop-2.8.3 rootnode-0002:/home/modules/ scp -r /home/modules/hadoop-2.8.3 rootnode-0003:/home/modules/分发完成后在 node-0001 上执行hdfs namenode -format初始化然后start-dfs.sh和start-yarn.sh。如果start-dfs.sh报JAVA_HOME is not set说明 SSH 非交互式登录没有加载/etc/profile需要在hadoop-env.sh里显式写死export JAVA_HOME...。4. 避坑排查三节点集群最容易翻车的五个点4.1 现象NameNode 格式化后启动失败日志报Cannot assign requested address原因core-site.xml里fs.defaultFS写的是公网 IP 或主机名但 NameNode 绑定的是内网地址。鲲鹏 ECS 默认有两块网卡公网 IP 是 NAT 映射的直接绑公网 IP 会失败。解决fs.defaultFS用内网 IP 或/etc/hosts里配的主机名不要用公网 IP。如果已经格式化了删掉dfs.namenode.name.dir下的所有内容重新格式化。4.2 现象DataNode 启动后立刻退出日志显示Incompatible clusterIDs原因NameNode 格式化多次每次生成的 clusterID 不同DataNode 还保留着旧的 clusterID。解决停掉所有节点删除所有节点的dfs.datanode.data.dir目录内容重新执行hdfs namenode -format再启动。注意格式化只能做一次不要反复执行。4.3 现象hadoop fs -ls obs://bucket/报NoAwsCredentialsException原因core-site.xml里的 AK/SK 没填、填错或者credentials.csv里的引号被一起复制进去了。解决检查 AK/SK 是否有多余空格或引号确认fs.obs.impl的类名拼写正确。如果用的是hadoop-obs插件确认hadoop-obs-x.x.x.jar已经放到$HADOOP_HOME/share/hadoop/common/lib/下。4.4 现象start-yarn.sh后 ResourceManager 没起来jps看不到进程原因yarn-site.xml里yarn.resourcemanager.hostname配错或者yarn.nodemanager.aux-services没设成mapreduce_shuffle。解决确认yarn.resourcemanager.hostname指向 node-0001yarn.nodemanager.aux-services和yarn.nodemanager.aux-services.mapreduce_shuffle.class两个属性都配上。改完分发到所有节点再重启。4.5 现象SSH 互信配好后start-dfs.sh仍然提示输入密码原因/root/.ssh/authorized_keys权限不对或者sshd_config里PubkeyAuthentication被关了。解决chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys检查/etc/ssh/sshd_config里PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys没有被注释。改完systemctl restart sshd。5. 验证与进阶用 OBS 跑一个 WordCount 确认链路集群起来之后别急着关页面。用 OBS 作为输入输出跑一个 WordCount能一次性验证 HDFS、YARN、OBS 对接三条链路是否都通。# 在 OBS 桶里建一个 input 目录上传一个文本文件 hadoop fs -mkdir obs://your-bucket/input hadoop fs -put /root/test.txt obs://your-bucket/input/ # 提交 WordCount 任务 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar \ wordcount obs://your-bucket/input obs://your-bucket/output # 查看结果 hadoop fs -ls obs://your-bucket/output hadoop fs -cat obs://your-bucket/output/part-r-00000 | head -20如果任务卡在map 0% reduce 0%超过两分钟去 YARN 的 Web UIhttp://node-0001:8088看 Application 状态。常见原因是yarn.nodemanager.resource.memory-mb设得太小默认 8192MB 在 2 核 4G 的 ECS 上跑不动改成 2048 或 3072 再试。另一个高频问题是 OBS 的fs.obs.buffer.dir没配默认落在/tmp下磁盘满了任务就挂建议显式指向/home/modules/data/buf。跑通之后把core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个文件备份一份。下次再搭集群直接替换这四个文件加/etc/profile十分钟就能复现。从那以后我每次配完 Hadoop 都强制走一遍 WordCount不跑通不算完——这个习惯帮我省掉了至少三次“以为配好了结果答辩现场翻车”的尴尬。希望帮到你。本文还有配套的精品资源点击获取
返回列表